詳細介紹visibility:hidden和display:none的區別


1、visibility具有繼承性,給父元素設置visibility:hidden;子元素也會繼承這個屬性。但是如果重新給子元素設置visibility: visible,則子元素又會顯示出來。這個和display: none有着質的區別

2、visibility: hidden不會影響計數器的計數,如圖所示,visibility: hidden雖然讓一個元素不見了,但是其計數器仍在運行。這和display: none完全不一樣

    <body>
        <div>
            <strong>給元素設置visibility:hidden樣式</strong>
            <ol>
                <li>元素1</li>
                <li style="visibility:hidden;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
        <div>
            <strong>給元素設置display:none樣式</strong>
            <ol>
                <li>元素1</li>
                <li style="display:none;">元素2</li>
                <li>元素3</li>
                <li>元素4</li>
            </ol>
        </div>
    </body>


3、CSS3的transition支持visibility屬性,但是並不支持display,由於transition可以延遲執行,因此可以配合visibility使用純css實現hover延時顯示效果。提高用戶體驗。
擴展:

visibility: hidden 相當於 display:none,能把元素隱藏起來,但兩者的區別在於:

  •  1、display:none 元素不再占用空間。
  •  2、visibility: hidden 使元素在網頁上不可見,但仍占用空間。

然而,visibility 還可能取值為 collapse 。

當設置元素 visibility: collapse 后,一般的元素的表現與 visibility: hidden 一樣,也即其會占用空間。但如果該元素是與 table 相關的元素,例如 table row、table column、table column group 等,其表現卻跟 display: none 一樣,也即其占用的空間會釋放。

在不同瀏覽器下,對 visibility: collapse 的處理方式不同:

  •  1、visibility: collapse 的上述特性僅在 Firefox 下起作用。
  •  2、在 IE 即使設置了 visibility: collapse,還是會顯示元素。
  •  3、在 Chrome 下,即使會將元素隱藏,但無論是否是與 table 相關的元素,visibility: collapse 與 visibility: hidden 沒有什么區別,即仍會占用空間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM