display:none和visibility:hidden的差别比较与演示代码
2012-12-30 14:31
288 查看
前言:
在使用css隐藏栏位或物件的时候,
常常会使用到display:none和visibility:hidden这两个属性,
但却很容易分不清楚这两个的差别,
或是乾脆同时使用两种属性,来确保物件一定被隐藏,
其实我们可以很简单的来区分两者的差别。
AD:
你知道CSS display:none和visibility:hidden的区别吗,这里和大家分享一下,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在。
CSS display:none和visibility:hidden的区别
visibility:hidden隐藏,但在浏览时保留位置;CSS display:none视为不存在,且不加载!
Overflow属性值{visible|hidden|scroll|auto}前提是先要限制DIV的宽度(width)和高度(height)。二者都是隐藏HTML元素,在视觉效果上没有区别,但在一些DOM操作中二者还是有所不同的。
CSS display:none;
使用该属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;
visibility:hidden;
使用该属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。
具体区别请看演示代码吧:
实际演练
首先,我们先拉出一个Table如下,
执行后看起来会像这样子
首先我们替第二行的 tr 加上 style="visibility:hidden"
可以发现我们的Table会变成这样
所以当使用 visibility:hidden 时,
物件是确实的被隐藏的,但物件的位置仍旧保持著不会消失
再来我们将第二行的tr改成 style="display:none"
我们的Table会变成
可以看到第二行连空白也消失了,
所以当使用 style="display:none" 时,
物件连原本所在的位置都一起被隐藏了
总结:
若我们需要把一个物件完全的隐藏,
那我们应该要使用 display:none ,
它可以将物件连同所在位置一起隐藏,
就好像真的在网页上完全消失了,
而实际上JQuery的hide及show也是在透过操作display属性来实现的,
所以当需要在网页上预设某些物件是隐藏时,
不需要透过jquery一个一个的去写
在使用css隐藏栏位或物件的时候,
常常会使用到display:none和visibility:hidden这两个属性,
但却很容易分不清楚这两个的差别,
或是乾脆同时使用两种属性,来确保物件一定被隐藏,
其实我们可以很简单的来区分两者的差别。
AD:
你知道CSS display:none和visibility:hidden的区别吗,这里和大家分享一下,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在。
CSS display:none和visibility:hidden的区别
visibility:hidden隐藏,但在浏览时保留位置;CSS display:none视为不存在,且不加载!
Overflow属性值{visible|hidden|scroll|auto}前提是先要限制DIV的宽度(width)和高度(height)。二者都是隐藏HTML元素,在视觉效果上没有区别,但在一些DOM操作中二者还是有所不同的。
CSS display:none;
使用该属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;
visibility:hidden;
使用该属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。
具体区别请看演示代码吧:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"lang="gb2312"> <head> <head> <title>实例演示:CSS display:none和visible:hidden的区别</title> <metahttp-equivmetahttp-equiv="content-type"content="text/html;charset=gb2312"/> <metahttp-equivmetahttp-equiv="content-type"content="text/html;charset=gb2312"/> <metanamemetaname="author"content="枫岩,CnLei.y.l@gmail.com"> <metanamemetaname="copyright"content="http://www.cnlei.com"/> </head> <body> <p><ahrefahref="javascript:alert($('CnLei_1').innerHTML+'的宽度:\n' +GetXYWH($('CnLei_1')).W);">点击这里CSS display:none;</a></p> <p><ahrefahref="javascript:alert($('CnLei_2').innerHTML+'的宽度:\n' +GetXYWH($('CnLei_2')).W);">点击这里visibility:hidden;</a></p> <dividdivid="CnLei_1"style="CSS display:none;">CnLei_1</div> <dividdivid="CnLei_2"style="visibility:hidden;">CnLei_2</div> <scripttypescripttype="text/javascript"> varw3c=(document.getElementById)?true:false; varagt=navigator.userAgent.toLowerCase(); varie=((agt.indexOf("msie")!=-1) &&(agt.indexOf("opera")==-1)&&(agt.indexOf("omniweb")==-1)); varie5=(w3c&&ie)?true:false; varns6=(w3c&&(navigator.appName=="Netscape"))?true:false; function$(o){ returndocument.getElementById(o)?document.getElementById(o):o; } functionGetXYWH(o){ varo=$(o); varnLt=0; varnTop=0; varoffsetParent=o; while(offsetParent!=null&&offsetParent!=document.body){ nLt+=offsetParent.offsetLeft; nTop+=offsetParent.offsetTop; if(!ns6){ parseInt(offsetParent.currentStyle.borderLeftWidth)>0? nLt+=parseInt(offsetParent.currentStyle.borderLeftWidth):""; parseInt(offsetParent.currentStyle.borderTopWidth)>0? nTop+=parseInt(offsetParent.currentStyle.borderTopWidth):""; } offsetParentoffsetParent=offsetParent.offsetParent; } return{X:nLt,Y:nTop,W:o.offsetWidth,H:o.offsetHeight}; } </script> </body> </html>
实际演练
首先,我们先拉出一个Table如下,
<table id="table1"> <tr> <td>1 </td> <td>2 </td> </tr> <tr> <td>3 </td> <td>4 </td> </tr> </table>
执行后看起来会像这样子
首先我们替第二行的 tr 加上 style="visibility:hidden"
<tr style="visibility:hidden">
可以发现我们的Table会变成这样
所以当使用 visibility:hidden 时,
物件是确实的被隐藏的,但物件的位置仍旧保持著不会消失
再来我们将第二行的tr改成 style="display:none"
<tr style="display:none">
我们的Table会变成
可以看到第二行连空白也消失了,
所以当使用 style="display:none" 时,
物件连原本所在的位置都一起被隐藏了
总结:
若我们需要把一个物件完全的隐藏,
那我们应该要使用 display:none ,
它可以将物件连同所在位置一起隐藏,
就好像真的在网页上完全消失了,
而实际上JQuery的hide及show也是在透过操作display属性来实现的,
所以当需要在网页上预设某些物件是隐藏时,
不需要透过jquery一个一个的去写
相关文章推荐
- 关于opacity:0、visibility:hidden、display:none三个属性的比较以及拓展
- display:none和visibility:hidden的区别
- display:none和visibility:hidden的区别
- display: none与visibility: hidden的区别
- display:none和visibility:hidden的区别
- css元素隐藏原理及display:none和visibility:hidden
- 浅谈:{display:none & visibility:hidden}
- CSS属性中display="none“与visibility="hidden"的不同
- display:none与visibility:hidden的区别
- display:none与visibility:hidden不同的隐藏
- 再谈visibility:hidden和display:none
- visibility: hidden和 display: none的区别
- 不知道搜索引擎对display:none和visibility:hidden是怎么个看法
- display:none和visibility:hidden的区别
- 转载:css元素隐藏原理及display:none和visibility:hidden
- CSS display:none和visibility:hidden区别
- 再谈visibility:hidden和display:none
- display: none与visibility: hidden的区别
- style="visibility: hidden"和 style=“display:none”之间的区别
- display:none | visibility:hidden 的区别