CSS隱藏元素的幾種方法


1、display,使用none值會讓元素從文檔中直接刪除,”直接消失不見了”

用法:display:none

優點:簡單暴力,不需要多余代碼。不占空間,對布局沒影響。

缺點:元素從文檔刪除,不利於seo

2、text-indent,一般是首行縮2個中文字的用法是text-indent:2em。但當給他一個足夠大的負值,大到一般我們瀏覽器無法顯示。

用法:text-indent:-999em

優點:利於搜索引擎

缺點:它的作用其實就是把文字提到段落前面,不讓我們看見,不影響寬度?

會影響布局。

3、position,假如說一個元素的距離我們的視窗(電腦顯示屏幕)足夠大,大到我們瀏覽器也無法顯示出來,那么它也是“消失”的。但是這種做法一般適用於比較寫死的東西。

用法:position:absolute; top:-999em或者left:-999em

   或  position:absolute; visibility:hidden;

優點:信手拈來,隨意擺放

缺點:用法太死,不能隨意修改,比較死板

4、visibility,只是“看不見”而已,所以元素依然會影響到布局

用法:visibility:hidden

優點:利於SEO優化

缺點:該屬性會繼承,假如祖先用了visibility:hidden,那么子元素也是直接顯示不見,想要子元素顯示讓用戶看見,還要必須再多寫visibility:visible

 

使用隱藏元素考慮的幾個關鍵點:

(1)空間占據/頁面可用性(屏幕閱讀器)  (display跟visibility方式屏幕閱讀器讀不了)

(2)回流與渲染?  參考《回流(reflow)與重繪(repaint)》

so,使用absolute會產生重繪而不是產生強烈的回流。而使用display不僅會重繪,還會產生回流。而visibility沒有這個影響前端性能的問題;

(3)株連性   (visibility的繼承性)

(4)配合javascript的控制

display:none為例,因為不同的標簽所處的display水平不一樣,例如div與span標簽,很難有一個簡單統一的顯示方法。因為當對span標簽顯示dom.style.display="block";(造成原本單行顯示換行)。jQuery的顯隱方法show()/hide()/toggle()就是基於display的,其會存儲元素先前的display屬性值,於是元素再顯示的時候就可以准確地顯示出之前的display值了。

當使用絕對定位(position:absolute; top:-999em)的時候,js只需控制dom.style.position="stack";

so,控制元素顯示與隱藏是absolute屬性的正業所在。

 


免責聲明!

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



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