JAVASCRIPT style 中visibility和display之間的區別

來源:互聯網
上載者:User

當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>

解釋:注意到,當元素被隱藏之後,就不能再接收到其它事件了,所以在第一段代碼中,當其被設為"hidden"的時候,就不能再接收響應到事件了,因此也就無法通過滑鼠點擊第一段文本令其顯示出來。
---------------------------------------------------------------
另一方面,display屬性就有一點不同了。visibility屬性是隱藏元素但保持元素的浮動位置,而display實際上是設定元素的浮動特徵。
當display被設定為block(塊)時,容器中所有的元素將會被當作一個單獨的塊,就像<div>元素一樣,它會在那個點被放入到頁面中。(實際上你可以設定<span>的display:block,使其可以像<div>一樣工作。
將display設定為inline,將使其行為和元素inline一樣---即使它是普通的塊元素如<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表示內聯,特點是緊貼著前一個內嵌元素,通常預設的內嵌元素有span,a,em,strong等。而float表示的是浮動,float:left,是針對區塊層級元素的浮動形式,是不同形式的兩種狀態。)http://www.andymao.com/andy/post/42.html
http://bbs.blueidea.com/thread-2596793-1-1.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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.