CSS DIV中Visibility和Display屬性的區別

 如果你想改變一個HTML元素的可見性,你會把這個元素的CSS屬性改爲visibility:hidden還是display:none?這兩個屬性有什麼不同?在頁面元素可見性改變時你如何應對?
CSS DIV中Visibility和Display屬性的區別
這裏有個Demo可以比較visibility:hidden和display:none的區別。點擊頁面上部的鏈接,頁面裏綠色的Div將會進行相應的改變。請留意一下當綠色的Div屬性分別被設爲visibility:hidden和display:none時對其它元素會有什麼影響。
CSS DIV中Visibility屬性的用法
Visibility屬性共有四個可用的值(visible、hidden、collapse和inherit),但常用的值是visible和hidden。
以下爲引用的內容:
visibility:visible

visibility:hidden

visibility:collapse

visibility:inherit
CSS DIV中Display屬性的用法
Display屬性的可用值有很多,但在這裏我們只關注其中的幾個值:block、none和inline。
以下爲引用的內容:
display:none

display:block

display:inline
從這裏可以看出,雖然Visibility和Display屬性都可以隱藏一個元素,但它們之間的不同點在於visibility:hidden在隱藏一個元素的同時仍然在頁面上爲該元素保留所需的空間,而display:none則表現得像把元素從頁面裏刪除了,在頁面上看不出該元素還存在着。
另外,display:block和display:inline的區別在於block元素會在頁面中獨佔一行,而inline元素不會,有的對象默認爲block元素,而有的對象則默認爲inline元素,大家在使用時需要注意防止相同屬性的重複定義。
CSS DIV中什麼時候使用Visibility或者Display屬性?
Visibility和Display屬性雖然都可以達到隱藏頁面元素的目的,但它們的區別在於如何迴應正常文檔流。
如果你想隱藏某元素,但在頁面上保留該元素的空間的話,你應該使用visibility:hidden。如果你想在隱藏某元素的同時讓其它內容填充空白的話應該使用display:none。
在現實中我(作者)更多的傾向於使用display屬性(相信這也是大多數人的習慣,bolo注)。當你決定用display:none來隱藏一個元素時,你必須知道其它內容將填充到該元素留下的空白位置,從而改變頁面的佈局。
CSS DIV中Visibility和Display對SEO的影響
有時我們會通過把堆砌的關鍵詞隱藏而達到作弊的目的,但不應該使用visibility:hidden和display:none,而應該把關鍵詞顏色設爲和背景色相同,或者把關鍵詞的字號設爲非常小,而令訪客無法發現。
有的人則因爲害怕搜索蜘蛛的的反感而爲visibility:hidden和display:none的使用的煩惱。其實有很多漂亮的效果是通過元素可見性的轉換而實現的,搜索引擎也理解這一做法(事實上搜索引擎往往忽略CSS,bolo注),因此如果你的目的不是欺騙搜索引擎,你大可以放心地使用visibility:hidden和display:none去隱藏內容。

web頁面前臺編碼時經常用到display:none樣式,平常使用時發現有幾點特徵需要注意 :
    1、如果在樣式文件或頁面文件代碼中直接用display:none對元素進行了隱藏,載入頁面後,在沒有通過js設置樣式使元素顯示的前提下,使用js 代碼會無法正確獲得該元素的一些屬性,比如offSetTop,offSetLeft等,返回的值會爲0,通過js設置style.display來使元 素顯示後才能正確獲得這些值。 
2、使用display:none隱藏的元素不會被百度等搜索網站檢索,會影響到網站的SEO,某些情況下可以使用left:-100000px來達到同樣效果。 
3、如果是通過樣式文件或<style>css</style>方式來設置元素的display:none樣式,用js設置 style.display=""並不能使元素顯示,可以使用block或inline等值來代替。通過style="display:none"直接在 元素上進行的設置不會有這個問題 
4、有些情況下可以使用style.visibility來代替style.display,但是要注意的是style.visibility隱藏元素時會保留元素在頁面上所佔的空間,而style.display隱藏元素且讓出所佔頁面空間。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章