大多數人很容易將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">
第一行文本將會觸發"hidden"和"visible"屬性,注意第二行的變化。</div> <div>因為visibility會保留元素的位置,所以雖然第一行看不見了但位置還在,第二行內容不會上下移動。</div>
<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>