隱藏元素的方法,都有啥區別?

前言

用 CSS 隱藏頁面元素有許多種方法。你能夠將 opacity 設爲 0、將 visibility 設爲 hidden、將 display 設爲 none 或者將 position 設爲 absolute 而後將位置設到不可見區域。css

可是每一個方法以前是存在着細微的不一樣,這些不一樣決定了在一個特定的場合下使用哪個方法。下面個人這篇文章就給你們解說一下他們之間的區別吧,讓你們能根據場合來選擇適合的方式.瀏覽器

 

Opacity

該屬性的意思是檢索或設置對象的不透明度當他的透明度爲0的時候,視覺上它是消失了,可是他依然佔據着那個位置,並對網頁的佈局起做用。它也將響應用戶交互。添加了該屬性的元素,它的背景和元素內容也是會跟着變化的.ide

注意:該屬性是兼容IE9以上的瀏覽器,IE8 以及更早的版本支持替代的 filter 屬性,例如: filter:Alpha(opacity=50)。佈局

Display

該屬性纔是真正意義上的隱藏元素,當元素的display屬性爲none時,該元素就會就會從視覺中消失,而且連盒模型也不生成.也不會在頁面佔據任何位置,不但如此,就連它的子元素也會一同從盒子模型中消失。給他和它的子元素添加的任何動畫效果交互效果都會不起做用。jq中的show(),hide(),toggle()方法就是經過改變display的值來實現變化效果的。性能

Visibility

 該屬性相似opacity屬性,該屬性值爲hidden的時候,元素將會隱藏,也會佔據着本身的位置,並對網頁的佈局起做用,與 opacity 惟一不一樣的是它不會響應任何用戶交互。此外,元素在讀屏軟件中也會被隱藏。這個屬性也可以實現動畫效果,只要它的初始和結束狀態不同。這確保了 visibility 狀態切換之間的過渡動畫能夠是時間平滑的動畫

注意:1.任何的版本的 Internet Explorer (包括 IE8)都不支持 "inherit" 和 "collapse" 屬性值。對象

   2.若是一個元素的 visibility 被設置爲 hidden,可是想要顯示它的子元素,只要給想要顯示的子元素添加visibility:visible;就能夠了。嘗試 hover 在隱藏元素上,不要 hover 在 p 標籤裏的數字上,你會發現你的鼠標光標沒有變成手指頭的樣子。此時,你點擊鼠標,你的 click 事件也不會被觸發。而在 <div> 標籤裏面的 <p> 標籤則依然能夠捕獲全部的鼠標事件。一旦你的鼠標移動到文字上,<div> 自己變得可見而且事件註冊也隨之生效。事件

Clip-path

該屬性不多見,該屬性是經過裁剪的方法實現隱藏的。被隱藏的內容依然佔據着那個位置,它周圍的元素的行爲就如同它可見時同樣。記住用戶交互例如鼠標懸停或者點擊在剪裁區域以外也不可能生效。此外,這個屬性可以使用各類過渡動畫來實現不一樣的效果。ip

注意:clip-path之因此沒有很普及,是由於其瀏覽器兼容問題。在IE中是徹底不支持的,因此,建議用的時候必定要加上內核前綴。ci

Position

該屬性的意義就是把元素脫離文檔流移出視覺區域,添加該屬性後既不會影響佈局,又能讓元素保持能夠操做。應用該屬性後,主要就是經過控制方向(top,left,right,bottom),達到必定的值,離開當前但是頁面。

css代碼:

 注意:你得避免使用這個方法去隱藏任何能夠得到焦點的元素,由於若是那麼作,當用戶讓那個元素得到焦點時,會致使一個不可預料的焦點切換。這個方法在建立自定義複選框和單選按鈕時常常被使用。

 

結論:

這裏介紹了5中方法,每種方法之間都是存在區別的,到底要用哪種的話,就要視狀況而定

相關文章
相關標籤/搜索