手机
当前位置:查字典教程网 >网页设计 > Div+Css教程 >display:none和visibility:hidden的差别比较与演示代码
display:none和visibility:hidden的差别比较与演示代码
摘要:前言:在使用css隐藏栏位或物件的时候,常常会使用到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>

执行后看起来会像这样子

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

首先我们替第二行的 tr 加上 style="visibility:hidden"

<tr>

可以发现我们的Table会变成这样

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

所以当使用 visibility:hidden 时,

物件是确实的被隐藏的,但物件的位置仍旧保持著不会消失

再来我们将第二行的tr改成 style="display:none"

<tr>

我们的Table会变成

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

可以看到第二行连空白也消失了,

所以当使用 style="display:none" 时,

物件连原本所在的位置都一起被隐藏了

总结:

若我们需要把一个物件完全的隐藏,

那我们应该要使用 display:none ,

它可以将物件连同所在位置一起隐藏,

就好像真的在网页上完全消失了,

而实际上JQuery的hide及show也是在透过操作display属性来实现的,

所以当需要在网页上预设某些物件是隐藏时,

不需要透过jquery一个一个的去写

【display:none和visibility:hidden的差别比较与演示代码】相关文章:

用css实现十字的布局示例代码

IE6定义1px左右高度的容器示例代码

css+div 图片排列布局

CSS3文本换行word-wrap解决英文文本超过固定宽度不换行

VB中Byval和byref的区别

表单中Readonly和Disabled的区别详解

CSS table 单行布局示例代码

利用CSS3实现圆角的outline效果的教程

CSS2书写顺序包括位置属性、自身属性、文字系列

DIV+CSS固定底部的漂浮广告

精品推荐
分类导航