当我使用代码单击按钮时,我试图使页面淡出:
$("#post_btn").click(function(){
$("#address-popup").css({display: "block"});
$("html,body").fadeTo("slow",0.4);
});
问题是我不希望 div#address-popup
也消失。有没有办法可以将其排除在html,body
褪色之外?
不,你不能。您不能淡化整个文档,但不能淡化文档中的某些元素。
你以错误的方式解决这个问题。看起来使背景变暗的弹出窗口通常会附加一个半透明的覆盖 div,对话框位于其顶部。是覆盖 div 部分遮住了页面;页面本身实际上并没有淡出。
我在这里测试了一个解决方案并且它有效......
$("#post_btn").click(function(){
$("body :not(#address-popup)").fadeTo("slow",0.4);
});
它工作得很好......
您不能有隐藏父级的可见子级。您需要将弹出窗口附加到您的 body 元素,然后淡出 body 内的所有其他元素。
HTML:
<body>
<div class="header">
</div>
<div class="content">
</div>
<div class="footer">
</div>
<div class="popup">
</div>
</body
JS:
$("#post_btn").click(function(){
$("body > div:not(.popup)").fadeTo("slow",0.4);
});
HTML
<div class="blind"></div>
<div class="topDiv">
<h1>Popup Effect DIV</h1>
<p>This DIV will still display when the rest of the page has been faded out</p>
</div>
<a class="fadeOut">Load Popup.</a>
CSS
.blind {
position: absolute;
top: 0px;
left: 0px;
background-color: #FFF;
width: 100%;
height: 100%;
z-index: 2000;
opacity: 0.9;
filter: alpha( opacity = 90 );
display: none;
}
.topDiv {
display: none;
width: 250px;
height: 250px;
border: solid 1px red;
background-color: #FFF;
z-index: 2000;
position: absolute;
top: 50px;
left: 250px;
}
JS
/* Load Popup and fade background */
$('.fadeOut').click(function(e){
$('.blind').toggle();
$('.topDiv').toggle();
});
/* Close popup and loose fade when you click outside the popup */
$(document).mouseup(function (e){
var container = $('.topDiv');
if (!container.is(e.target) && container.has(e.target).length === 0){
container.hide();
$('.blind').hide();
}
});
我认为你最好通过覆盖 a<div>
并赋予它透明度来创造褪色背景的“幻觉”。给这个<div>
比z-index
页面内容的其余部分更高的值。
然后,为了增强您的其他 div 坐在褪色页面上方的错觉#address-popup
,只需确保它的 div 甚至高于z-indez
transparent <div>
。