我想建立一個模式窗口與jQuery和CSS將被激活單擊列表元素。 我想實現的效果是另一個div模糊效果中的彈出div,但對於每個列表元素,我只想顯示一個div! (我在元素上使用display none來顯示,所以如果我點擊兩個list元素,每個box都會顯示在對方附近,並且獲得的效果會非常難看)。 這裏是我的代碼: 清單當然元素:For循環與jquery避免觸發多個元素
<div class="blabla" id="page-wrap">
<ul class="nav nav-sidebar">
<li></li><li></li><li></li>....
</ul>
</div>
模態的div:
<div class="main">
<div class="before-background"></div>
<div class="modal">
<h1>Some Text</h1>
<p>Some other text</p>
</div>
<div class="modal">
<h1>Some Text</h1>
<p>Some other text</p>
</div>
<div class="modal">
<h1>Some Text</h1>
<p>Some other text</p>
</div>
</div>
的JavaScript(我想用一個。每個函數,但我不知道如何連接每個列表每格):
$("li:nth-child(1)").on("click", function() {
$(".before-background").toggleClass("dialogIsOpen");
$(".main .modal:nth-child(2)").toggleClass("modalEffect");
});
$("li:nth-child(2)").on("click", function() {
$(".before-background").toggleClass("dialogIsOpen");
$(".main .modal:nth-child(3)").toggleClass("modalEffect");
});
..等..
並在最後的CSS:
.modal {
position: relative;
float: left;
background: #8dc63f;
color: white;
width: 50%;
left: 22%;
top: -90%;
display: none;
padding: 2%;
text-align: center;
}
.dialogIsOpen {
-webkit-filter: blur(5px) grayscale(50%);
/*-webkit-transform: scale(0.9);*/
}
.modalEffect {
display: block!important;
pointer-events: auto!important;
}
.before-background, .modal {
transition: all 0.9s ease;
}
.main {
margin-left: 0;
height: 443px;
width: 94.333333%;
padding: 0;
}
.before-background {
background-image: url(images/effect-image.jpg);
width: 100%;
height:100%;
}
任何建議?
我的建議是不使用'nnth-child',而是使用每個'li'和'div'共享的顯式類。換句話說,第一個'li'可能有一個「modal-1」類,其相應的'div'將具有相同的類。 –
爲什麼孩子編號有變化:當你點擊第一個'li'時,你想使用第二個模態'div'?爲什麼不是第一個? – trincot
這是因爲dom:這部分的DOM是建立在兩個容器中,一個是側邊欄(#page-wrap),另一個是兩個主要div的容器,帶有文本和div的盒子將被解僱模糊效果。 在第二部分中,第一個孩子是包含背景圖像的實際div,因此在列表元素和另一側的div之間存在移位 –