解決CSS中 display 與 visibility 的區別

來源:互聯網
上載者:User

大多數人很容易將CSS屬性display和visibility混淆,它們看似沒有什麼不同,其實它們的差別卻是很大的。
visibility屬性用來確定元素是顯示還是隱藏的,這用visibility="visible|hidden"來表示(visible表示顯示,hidden表示隱藏)。
當visibility被設定為"hidden"的時候,元素雖然被隱藏了,但它仍然佔據它原來所在的位置。例: 第一行文本將會觸發"hidden"和"visible"屬性,注意第二行的變化。因為visibility會保留元素的位置,所以雖然第一行看不見了但位置還在,第二行內容不會上下移動。<p>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

注意到,當元素被隱藏之後,就不能再接收到其它事件了,所以在第一段代碼中,當其被設為"hidden"的時候,就不能再接收響應到事件了,因此也就無法通過滑鼠點擊第一段文本令其顯示出來。
另一方面,display屬性就有一點不同了。visibility屬性是隱藏元素但保持元素的浮動位置,而display實際上是設定元素的浮動特徵。
當display被設定為block(塊)時,容器中所有的元素將會被當作一個單獨的塊,就像<div>元素一樣,它會在那個點被放入到頁面中。(實際上你可以設定<span>的display:block,使其可以像<div>一樣工作。
將display設定為inline,將使其行為和元素inline一樣---即使它是普通的塊元素如<div>,它也將會被組合成像<span>那樣的輸出資料流。
下面看我執行個體的代碼和效果: 在藍色文字上點擊來查看效果.<p>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

最後是display被設定:none,這時元素實際上就從頁面中被移走,它下面所在的元素就會被自動跟上填。(此時應用display: none;的元素相當於消失,而visibility: hidden;則只表示隱藏,位置還在。)
display 屬性分別為block, inline, none 值及使用visibility: hidden;的情況調試樣本: <br />display 屬性分別為block, inline, none 值及使用visibility: hidden;的情況調試<p>This is a 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><p>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

同時,關於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 xmlns="http://www.w3.org/1999/xhtml">


span為內聯/inline元素,給他寬度賦值是沒有效果的。
span為內聯/inline元素,給他寬度賦值100px+float:right;可以看到有了寬度。

這個li被定義為內聯/inline,設定寬度沒有效果

  • test
  • test

這個li被定義為內聯/inline+float:left,設定寬度有效果

  • test
  • test
相關文章

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.