CSS Display与Visibility的不一样

2021-03-15 17:06 jianzhan
大多数数人很非常容易将CSS特性display和visibility搞混,它们看似沒有甚么不一样,实际上它们的区别确是很大的。
visibility特性用来明确元素是显示信息還是掩藏的,这用visibility="visible|hidden"来表明(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">第1写作本可能开启"hidden"和"visible"特性,留意第2行的转变。</div>
<div>由于visibility会保存元素的部位,因此尽管第1行看看不到了但部位还在,第2行內容不容易左右挪动。</div>
留意到,当元素被掩藏以后,就不可以再接受到其它恶性事件了,因此在第1段编码中,当其被设为"hidden"的情况下,就不可以再接受回应到恶性事件了,因而也就没法根据电脑鼠标点一下第1段文字令其显示信息出来。
另外一层面,display特性就有1点不一样了。visibility特性是掩藏元素但维持元素的波动部位,而display具体上是设定元素的波动特点。
当display被设定为block(块)时,器皿中全部的元素可能被作为1个独立的块,就像<div>元素1样,它会在那个点被放入到网页页面中。(具体上你能够设定<span>的display:block,使其能够像<div>1样工作中。
将display设定为inline,将使其个人行为和元素inline1样---即便它是一般的块元素如<div>,它也可能被组成成像<span>那样的輸出流。
下面看我案例的编码和实际效果:
<script language="JavaScript">
function toggleDisplay(me){
if (me.style.display=="block"){
me.style.display="inline";
alert("文字如今是:'inline'.");
}
else {
if (me.style.display=="inline"){
me.style.display="none";
alert("文字如今是:'none'. 3秒钟后全自动再次显示信息。");
window.setTimeout("blueText.style.display='block';",3000,"JavaScript");
}
else {
me.style.display="block";
alert("文字如今是:'block'.");
}
}
}
</script>
<div>在<span id="blueText" onclick="toggleDisplay(this)" style="color:blue;position:relative;cursor:hand;">蓝色</span>文本上点一下来查询实际效果.</div>
最终是display被设定:none,这时候元素具体上就从网页页面中被移走,它下面所属的元素就会被全自动跟上填。(此时运用display: none;的元素非常于消退,而visibility: hidden;则只表明掩藏,部位还在。)
display 特性各自为block, inline, none 值及应用visibility: hidden;的状况调节示例:
<h1>display 特性各自为block, inline, none 值及应用visibility: hidden;的状况调节</h1>
<P><SPAN id="oSpan" style="background-color: #CFCFCF;">This is a SPAN</SPAN> in a sentence.</P>
<P>
<input type=button value="Inline" onclick="oSpan.style.display='inline'">
<input type=button value="Block" onclick="oSpan.style.display='block'">
<input type=button value="None" onclick="oSpan.style.display='none'">
<input type=button value="Hidden" onclick="oSpan.style.visibility='hidden'"><input type=button value="Visible" onclick="oSpan.style.visibility='visible'">
</P>
<UL>
<LI>将元素设为 block,会在该元素后换行。</LI>
<LI>将元素设为 inline,会清除元素换行。</LI>
<LI>将元素设为 none,掩藏该元素內容。</LI>
</UL>
另外,有关display:inline;和float:left;二者的差别能够参看该篇文章内容:
(display是指显示信息情况,inline表明内联,特性是紧贴着前1个内联元素,一般默认设置的内联元素有span,a,em,strong等。而float表明的是波动,float:left,是对于块级元素的波动方式,是不一样方式的两种情况。)
http://www.andymao.com/andy/post/42.html
http://bbs.blueidea.com/thread⑵596793⑴⑴.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>float &inline</title>
<style>
*{text-align:center;padding:4px;}
div,p{text-align:left;}
span{/*float:right;*/ background:#f5f5f5;border-left:1px #eee solid;border-top:1px #eee solid;border-right:1px #ccc solid;border-bottom:1px #ccc solid;}
ul#inline li{ display:inline; list-style:none;border-left:1px #ccc solid;width:300px; background:#f5f5f5;/* float:left*/;}
ul#float li{ float:left;display:inline; list-style:none;border-left:1px #666 solid;width:300px; background:#f5f5f5; }
</style>
</head>
<body>
<span style="width:300px;">span为内联/inline元素,给他宽度取值是沒有实际效果的。</span>
<span style="width:100px; float:right;">span为内联/inline元素,给他宽度取值100px+float:right;能够看到有了宽度。</span>
<div>
<p>这个li被界定为内联/inline,设定宽度沒有实际效果</p>
<ul id="inline">
<li>test</li>
<li>test</li>
</ul>
</div>
<div>
<p>这个li被界定为内联/inline+float:left,设定宽度合理果</p>
<ul id="float">
<li>test</li>
<li>test</li>
</ul>
</div>
</body>
</html>