我正在使用visibility: hidden;
andvisibility: visible;
来显示和配置 div,例如 modals 和其他 div。我希望在单击<a>
链接以运行 javascript 以显示和隐藏 div 时具有淡入效果,但我非常希望继续使用该visibility
元素来切换 div 可见性。有没有办法用 HTML/CSS/JavaScript/jQuery 做到这一点?
4 回答
在 jQuery 中:
$('selector').fadeIn();
使用 CSS,使用不透明度:(这是 50%)
-moz-opacity:.50;
filter:alpha(opacity=50);
opacity:.50;
如果您想手动进行淡入,请逐步调整此不透明度,当您达到不可见点时,添加display:none
但是如果您仍然使用 jQuery,请坚持使用fadeIn()
fadeIn()
也支持速度,只需添加毫秒作为第一个参数。查看文档:http ://api.jquery.com/fadeIn/
想要将display
属性保留在 css 中,请使用fadeTo()
. 它需要不透明度百分比:http ://api.jquery.com/fadeto/
$(this).fadeTo("slow", 1); // 100% visible
$(this).fadeTo("slow", 0); // 0% visible aka hidden
我假设您想使用 visibility:hidden 而不是 display:none 以便您看到一个空白区域。
如果是这样,fadeIn() 和 fadeOut() 将不适合您,因为它在淡出后将显示设置为无。
而是使用 jQuery animate() 为不透明度设置动画,然后在回调中添加 visibility:hidden/visible。
这是我将如何使用 jQuery 来实现的。
$('#a-id').click(
if( $('#div-id').css('visibility') == 'hidden'){
$('#div-id').animate({opacity: 1}, 'fast', function(){
$('#div-id').css('visibility', 'visible');
});
}else{
$('#div-id').animate({opacity: 0}, 'fast', function(){
$('#div-id').css('visibility', 'hidden');
}
);
我敢肯定有更好的方法可以做到这一点,但这没有问题afaik。
您也可以使用 css3 完成此操作:http: //jsfiddle.net/dc7EV/
$("#hideme").click(function(){
$(this).removeClass("fadein").addClass("fadeout");
setTimeout(function(){
$("#hideme").removeClass("fadeout").addClass("fadein");
}, 2000);
});
CSS
#hideme{
border:solid 1px #000;
background:#ccc;
padding:20px;
}
@-webkit-keyframes fadeout{
0%{opacity:1;visibility:visible;}
99%{opacity:0;}
100%{opacity:0;visibility: hidden;}
}
.fadeout {
-webkit-animation:fadeout 1s linear;
visibility:hidden;
}
@-webkit-keyframes fadein{
0%{opacity:0;visibility:visible;}
100%{opacity:1;}
}
.fadein {
-webkit-animation:fadein 1s linear;
}
我更喜欢 Rene 的回答,但是如果您强烈希望使用可见性属性(正如您所说的那样),那么您可以使用 css() 这样做:
$('selector').css('visibility', 'hidden');
$('selector').css('visibility', 'visible');