!important > 內聯 > id選擇器 > 類選擇器 > 標籤選擇器css
多個類選擇器疊加(256)以後的優先級大於一個id選擇器html
!important 用於強調CSS屬性具備最高的優先級。IE6不支持這種用法。前端
CSS選擇器的種類:vue
1.id選擇器(# myid)node
2.類選擇器(.myclassname)webpack
3.標籤選擇器(div, h1, p)web
4.相鄰選擇器(h1 + p)面試
5.子選擇器(ul > li)算法
6.後代選擇器(li a)chrome
7.通配符選擇器( * )
8.屬性選擇器(a[rel = "external"])
9.僞類選擇器(a: hover, li:nth-child)
CSS優先級的計算規則以下:
元素標籤中定義的樣式(Style屬性),加1,0,0,0
每一個ID選擇符(如 #id),加0,1,0,0
每一個Class選擇符、每一個屬性選擇符、每一個僞類(:hover)加0,0,1,0
每一個元素選擇符(如p)或僞元素選擇符(如 :firstchild)等,加0,0,0,1
而後,將這四個數字分別累加,就獲得每一個CSS定義的優先級的值
而後從左到右逐位比較大小,數字大的CSS樣式的優先級就高。
被點擊訪問過的超連接樣式不在具備hover和active了,解決方法是改變CSS屬性的排列順序: L-V-H-A(link,visited,hover,active)
針對不一樣的瀏覽器寫不一樣的CSS code的過程,就是CSS hack。
#test {
width:300px;
height:300px;
background-color:blue; /*firefox*/
background-color:red\9; /*all ie*/
background-color:yellow\0; /*ie8*/
+background-color:pink; /*ie7*/
_background-color:orange; /*ie6*/ }
:root #test { background-color:purple\9; } /*ie9*/
@media all and (min-width:0px){
#test {background-color:black\0;}
} /*opera*/
@media screen and (-webkit-min-device-pixel-ratio:0){
#test {background-color:gray;}
} /*chrome and safari*/
複製代碼
不一樣的瀏覽器對一些元素有不一樣的默認樣式,若是你不處理,在不一樣的瀏覽器下會存在必要的風險,或者更有戲劇性的性發生。 你可能會用Normalize來代替你的重置樣式文件。它沒有重置全部的樣式風格,但僅提供了一套合理的默認樣式值。既能讓衆多瀏覽器達到一致和合理,但又不擾亂其餘的東西(如粗體的標題)。
display : 隱藏對應的元素但不擠佔該元素原來的空間。
visibility: 隱藏對應的元素而且擠佔該元素原來的空間。 便是,使用CSS display:none屬性後,HTML元素(對象)的寬度、高度等各類屬性值都將「丟失」;而使用visibility:hidden屬性後,HTML元素(對象)僅僅是在視覺上看不見(徹底透明),而它所佔據的空間位置仍然存在。
Box Model規定了元素框處理元素內容(element content)、內邊距(padding)、邊框(border) 和 外邊距(margin) 的方式。盒子模型有 block,inline-block,inline,flex,table-cell等幾種顯示方式。
給你們推薦一個技術交流學習圈,裏面歸納移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。獲取資料 對web開發技術感興趣的同窗,能夠加入交流圈👉👉👉1007317281,無論你是小白仍是大牛都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時天天更新視頻資料。
1)相對定位是在常規流中的定位。一旦一個框按照常規流或者是浮動獲得定位,它還能夠相對該位置而偏移, 這就是相對定位。偏移後,在常規流中依然佔據原有位置,偏移量並不會對後續的block產生擠佔,後續的塊就好像沒有感知到偏移,依然按照常規流位置排位。
2)絕對定位(Absolute positioning)元素定位的參照物是其包含塊(第一個relative定位的祖先元素)進行定位,不必定是其父元素。絕對定位元素徹底脫離了常規流,每一個絕對定位的框均可以看作一個單獨的圖層,不會對其餘層框的定位產生影響。絕對元素定位的 top 和 left 值跟絕對元素未脫離常規流以前在常規流中位置有關。
3)浮動框就是一個框在當前行被向左或向右挪動(偏移),它不在常規流中。在該浮動框以前或以後建立的非定位框垂直排列,就好象浮動框並不存在同樣。當前行裏浮動框前的任何內容,都將被從新排列到該浮動另外一側的第一個可用行裏。
在非IE瀏覽器(如Firefox)下,當容器的高度爲auto,且容器的內容中有浮動(float爲left或right)的元素,在這種狀況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢出到容器外面而影響(甚至破壞)佈局的現象。這個現象叫浮動溢出,爲了防止這個現象的出現而進行的CSS處理,就叫CSS清除浮動。 使用方法:
一、在浮動元素後使用一個空元素如
,並在CSS中賦予.clear{clear:both;}屬性便可清理浮動。二、給浮動元素的容器添加overflow:hidden;或overflow:auto;能夠清除浮動
三、什麼都不作,給浮動元素後面的元素添加clear屬性。
四、利用僞類清除浮動,給浮動元素的容器添加一個clearfix的class,然 後給這個class添加一個:after僞
元素實現元素末尾添加一個看不見的塊元素(Block element)清理浮動。
//一種常見利用僞類清除浮動的代碼
.clearfix:after {
content:"."; //這裏利用到了content屬性
display:block;
height:0;
visibility:hidden;
clear:both;
} //歡迎加入前端全棧開發交流圈一塊兒學習交流:1007317281
.clearfix {
*zoom:1;
}
複製代碼
div{margin:30px!important;margin:28px;}
複製代碼
注意這兩個margin的順序必定不能寫反,據阿捷的說法!important這個 屬性IE不能識別,
但別的瀏覽器能夠識別。因此在IE下其實解釋成這樣:
div{maring:30px;margin:28px}
複製代碼
重複定義的話按照最後一個來執行,因此不能夠只寫
margin:XXpx!important;
複製代碼
也能夠這樣子hack
div { _margin:28px;margin:28px\9;margin:30px;}
複製代碼
當在同一行相鄰出現一個浮動的塊元素和一個非浮動的塊元素時,兩塊元素之間就會出現3px的裂痕。 解決辦法就是:對其中一個元素添加「_margin-*:-3px」的CSS屬性,或者將另一個非浮動的元素設爲浮動。
當咱們在浮動元素上面添加margin-*的屬性的時候,好比在float:left的元素CSS添加margin-left:50px,那麼最終在IE6下面的顯示就是該元素的margin-left最終變爲100px,邊距翻倍。 解決辦法:添加_display:inline
<style type="text/css" media="all">@import "../fouc.css";</style>
複製代碼
而引用CSS文件的@import就是形成這個問題的罪魁禍首。IE會先加載整個HTML文檔的DOM,而後再去導入外部的CSS文件,所以,在頁面DOM加載完成到CSS導入完成中間會有一段時間頁面上的內容是沒有樣式的,這段時間的長短跟網速,電腦速度都有關係。 解決方法簡單的出奇,只要在之間加入一個或者