display: none 和 visibility: hidden 的區(qū)別

區(qū)別有三點:

1.空間占據(jù)。這兩個聲明都可以讓元素隱藏,不同之處在于display:none隱藏后元素不占據(jù)任何空間,而visibility:hidden隱藏后元素空間依舊存在。

2.回流與渲染。display:none 產(chǎn)生reflow和repaint(回流與重繪),而visibility:hidden 沒有這個影響前端性能的問題。

(注:reflow,就是由于某些原因(如用戶改變?yōu)g覽器窗口的大小,使用一些JavaScript方法,包括計算樣式,對DOM進行元素的添加或刪除,或是改變元素的class等。),要將元素回過頭來重新“流”一遍。)

3.株連性。所謂“株連性”,就是如果祖先元素遭遇某禍害,則其子子孫孫無一例外也要遭殃。display:none就是“株連性”明顯的聲明:一旦父節(jié)點元素應(yīng)用了display:none,父節(jié)點及其子孫節(jié)點元素全部不可見,而且無論其子孫元素如何不屈地掙扎都無濟于事。

通常情況下,我們給一個父元素應(yīng)用visibility:hidden,則其子孫后代也都會全部不可見。而實際上卻存在隱藏“失效”的情況。何時隱藏“失效”?很簡單,如果子孫元素應(yīng)用了visibility:visible,那么這個子孫元素又會顯現(xiàn)出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容