display:none和visibility:hidden的差别比较与演示代码

前言: 

在使用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="display:none"

所以当使用 style="display:none" 时,
物件连原本所在的位置都一起被隐藏了

总结:
若我们需要把一个物件完全的隐藏,
那我们应该要使用 display:none ,
它可以将物件连同所在位置一起隐藏,
就好像真的在网页上完全消失了,
而实际上JQuery的hide及show也是在透过操作display属性来实现的,
所以当需要在网页上预设某些物件是隐藏时,
不需要透过jquery一个一个的去写

 

米粒在线
  • 本文由 发表于 2013年2月22日12:57:36
  • 转载请务必保留本文链接:https://www.miliol.org/3854.html
科技

挑战手机抗冻极限 华为Mate 10 Pro竟然征服了南极

按照我国节气来说现在正处在数九寒天中最冷的一段日子里,随便翻阅天气预报,全国各地大多数地区都在飘散着漫天的雪花,零下好几度的光景也成为了很多地区人与手机之间无法躲避的问题。尤其是北方用户,若是出门用手...
科技

微信封杀!MIUI下线自动记账功能

小米在MIUI 9中加入了一个“微信自动记账”的新功能,可以自动聚合微信、支付宝、短信等平台的账单信息,免去手动记账的麻烦。 不过最近有不少网友发现,该功能已经无法正常使用,不能采集微信中的支付...
科技

努比亚Z17正式开启安卓8.1内测:紧跟升级

去年12月份,谷歌公布了安卓各版本数据份额,据统计安卓8.0仅占安卓系统的0.5%,不过这也给目前的手机厂商打了一剂鸡血,都在紧赶着给自家手机升级安卓8.0系统。 今天,努比亚官方就在论坛开启了...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • InBi InBi 1

      你是做前端设计的吧, 都是写html\css\js