首页 > 开发 > CSS > 正文

关于CSS属性中visibility隐藏和display消失的区别简析

2024-07-11 08:29:26
字体:
来源:转载
供稿:网友
了解Css的人应该都知道display:none;和visibility:hidden;之间的一些区别,当html元素被设置为display:none;后,浏览器不会解析该元素,“none”就是没有,消失了,所以他不会再文档流中占位。而visibility:hidden;仅仅是视觉上消失了,“hidden”也就是隐藏了,但是它所在的位置仍然还在,就像你把你个文件给隐藏了,但是这个文件在你的硬盘中仍然是占据一定空间的,只是你看不见而已。
对使用display:none;的元素,浏览器不会去解析,搜索引擎可能会认为被隐藏的文字属于垃圾信息而被忽略,而且屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字。
而对使用visibility:hidden;的元素,虽然隐藏了,但位置仍在,给人的感觉是“占着茅坑布拉斯”,要配合position:relative和position:absolute一起来用,没有display:none;那么简单、灵活。就另外一点,visibility:hidden;转换为visibility:visible跟display:none;转换为display:block;性能要好,因为display在切换可见性时会产生reflow,它要重新构建frame,当然要比visibility:visible慢。
如果你以上两种方法都不想要的话,可以写一个类:

复制代码
代码如下:
.hidden{
overflow: hidden;
width: 0;
height: 0;
border:none;
}

就是采用overflow隐藏,然后把元素的基本属性值设置为最小或无,当然,如果你要显示的话,还得写另一个相应的类。
CSS中的visibility和display两个属性很容易被混淆,因为它们看起来是做同样的事情,但实际上,这两个属性是完全不同的。 visibility属性用来设置一个给定的元素是否显示(visibility="visible|hidden"),但是,虽然一个元素的visibility被设置为hidden,但是该元素仍然会占据设计的位置:

复制代码
代码如下:
<script language="JavaScript">
function toggleVisibility(me)...{
if (me.style.visibility=="hidden")...{
me.style.visibility="visible";
}
else ...{
me.style.visibility="hidden";
}
}
</script>

<div onclick="toggleVisibility(this)" style="position:relative">
This example displays text that toggles between a visibility of 'visible' and 'hidden'.
Note the behavior of the next line.</div><div>This second line shouldn't
move, since visibility retains its position in the flow</div>

复制代码
代码如下:
<script language="JavaScript">
function toggleVisibility(me){
if (me.style.visibility=="hidden"){
me.style.visibility="visible";
}
else{
me.style.visibility="hidden";
}
}
</script>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表