當創(chuàng)建的樣式表越來越復雜時,一個標簽的樣式將會受到越來越多的影響,這種影響可能來自周圍的標簽,也可能來自其自身。下面我們從這兩方面去看看 CSS 樣式的優(yōu)先級。
創(chuàng)新互聯(lián)公司服務項目包括臨澧網站建設、臨澧網站制作、臨澧網頁制作以及臨澧網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,臨澧網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到臨澧省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
CSS 的繼承性
CSS 的繼承特性指的是應用在一個標簽上的那些 CSS 屬性被傳到其子標簽上??聪旅娴?HTML 結構:
div
p/p/div
如果?div?有個屬性?color: red,則這個屬性將被?p?繼承,即?p?也擁有屬性?color: red。
由上可見,當網頁比較復雜, HTML 結構嵌套較深時,一個標簽的樣式將深受其祖先標簽樣式的影響。影響的規(guī)則是:
CSS 優(yōu)先規(guī)則1:?最近的祖先樣式比其他祖先樣式優(yōu)先級高。
例1:
!-- 類名為 son 的 div 的 color 為 blue --div style="color: red"
div style="color: blue"
div class="son"/div
/div/div
如果我們把一個標簽從祖先那里繼承來的而自身沒有的屬性叫做"祖先樣式",那么"直接樣式"就是一個標簽直接擁有的屬性。又有如下規(guī)則:
CSS 優(yōu)先規(guī)則2:"直接樣式"比"祖先樣式"優(yōu)先級高。
例2:
!-- 類名為 son 的 div 的 color 為 blue --div style="color: red"
div class="son" style="color: blue"/div/div
選擇器的優(yōu)先級
上面討論了一個標簽從祖先繼承來的屬性,現(xiàn)在討論標簽自有的屬性。在討論 CSS 優(yōu)先級之前,先說說 CSS 7 種基礎的選擇器:
ID 選擇器, 如 #id{}
類選擇器, 如 .class{}
屬性選擇器, 如 a[href="segmentfault.com"]{}
偽類選擇器, 如 :hover{}
偽元素選擇器, 如 ::before{}
標簽選擇器, 如 span{}
通配選擇器, 如 *{}
CSS 優(yōu)先規(guī)則3:優(yōu)先級關系:內聯(lián)樣式 ID 選擇器 類選擇器 = 屬性選擇器 = 偽類選擇器 標簽選擇器 = 偽元素選擇器
例3:
// HTMLdiv class="content-class" id="content-id" style="color: black"/div// CSS#content-id {
color: red;}.content-class {
color: blue;}div {
color: grey;}
最終的 color 為 black,因為內聯(lián)樣式比其他選擇器的優(yōu)先級高。
所有 CSS 的選擇符由上述 7 種基礎的選擇器或者組合而成,組合的方式有 3 種:
后代選擇符: .father .child{}
子選擇符: .father .child{}
相鄰選擇符: .bro1 + .bro2{}
當一個標簽同時被多個選擇符選中,我們便需要確定這些選擇符的優(yōu)先級。我們有如下規(guī)則:
CSS 優(yōu)先規(guī)則4:計算選擇符中 ID 選擇器的個數(a),計算選擇符中類選擇器、屬性選擇器以及偽類選擇器的個數之和(b),計算選擇符中標簽選擇器和偽元素選擇器的個數之和(c)。按 a、b、c 的順序依次比較大小,大的則優(yōu)先級高,相等則比較下一個。若最后兩個的選擇符中 a、b、c 都相等,則按照"就近原則"來判斷。
例4:
// HTMLdiv id="con-id"
span class="con-span"/span/div// CSS#con-id span {
color: red;}div .con-span {
color: blue;}
由規(guī)則 4 可見,span 的 color 為 red。
如果外部樣式表和內部樣式表中的樣式發(fā)生沖突會出現(xiàn)什么情況呢?這與樣式表在 HTML 文件中所處的位置有關。樣式被應用的位置越在下面則優(yōu)先級越高,其實這仍然可以用規(guī)則 4 來解釋。
例5:
// HTMLlink rel="stylesheet" type="text/css" href="style-link.css"style type="text/css"@import url(style-import.css); div {
background: blue;}/stylediv/div// style-link.cssdiv {
background: lime;}// style-import.cssdiv {
background: grey;}
從順序上看,內部樣式在最下面,被最晚引用,所以 div 的背景色為 blue。
上面代碼中,@import?語句必須出現(xiàn)在內部樣式之前,否則文件引入無效。當然不推薦使用?@import?的方式引用外部樣式文件,原因見另一篇博客:CSS 引入方式。
CSS 還提供了一種可以完全忽略以上規(guī)則的方法,當你一定、必須確保某一個特定的屬性要顯示時,可以使用這個技術。
CSS 優(yōu)先規(guī)則5:屬性后插有?!important?的屬性擁有最高優(yōu)先級。若同時插有?!important,則再利用規(guī)則 3、4 判斷優(yōu)先級。
例6:
// HTMLdiv class="father"
p class="son"/p/div// CSSp {
background: red !important;}.father .son {
background: blue;}
雖然 .father .son 擁有更高的權值,但選擇器 p 中的 background 屬性被插入了 !important, 所以 p 的 background 為 red。
錯誤的說法
在學習過程中,你可能發(fā)現(xiàn)給選擇器加權值的說法,即 ID 選擇器權值為 100,類選擇器權值為 10,標簽選擇器權值為 1,當一個選擇器由多個 ID 選擇器、類選擇器或標簽選擇器組成時,則將所有權值相加,然后再比較權值。這種說法其實是有問題的。比如一個由 11 個類選擇器組成的選擇器和一個由 1 個 ID 選擇器組成的選擇器指向同一個標簽,按理說 110 100,應該應用前者的樣式,然而事實是應用后者的樣式。錯誤的原因是:權重的進制是并不是十進制,CSS 權重進制在 IE6 為 256,后來擴大到了 65536,現(xiàn)代瀏覽器則采用更大的數量。。還是拿剛剛的例子說明。11 個類選擇器組成的選擇器的總權值為 110,但因為 11 個均為類選擇器,所以其實總權值最多不能超過 100, 你可以理解為 99.99,所以最終應用后者樣式。
就不解釋什么內聯(lián)樣式、內部樣式、外部樣式了,不夠直觀,通俗點或者直觀點說好了:
第一優(yōu)先級是標簽上用style設置的css,例如:div style="樣式"/div
第二優(yōu)先級是html頁面上在style/style內設置編寫的css,例如:
style .divcss{樣式}/style
第三優(yōu)先級是在html頁面上引用外部的css樣式表,例如:
link href="文件路徑" rel="stylesheet" media="screen" /
無論說法是叫優(yōu)先級還是是加載順序,都不重要,只要你有這么一個概念就好了,優(yōu)先級越高,當碰到調用2個或2個以上同類型css的時候,只會調用優(yōu)先級最高的那1個,要記住,每個標簽上只能調用同類型css一次,比如你設置了寬度width:200px;那么你再在其他調用方式中設置了width:300px;或其他值,那么只會按優(yōu)先級調用1個width值,其他的將會是無效值,不過切記,只是在這個標簽上失效
1.行內樣式 行內樣式只能影響它所在的標簽,而且總會覆蓋嵌入樣式和鏈接樣式。
p style="font-size: 12px; font-weight:bold; font-style:italic; color:red;"By adding inline CSS styling to the/p
2.嵌入樣式 嵌入樣式的應用范圍僅限于當前頁面。頁面樣式會覆蓋外部樣式表中的樣式,但會被行內樣式覆蓋。
head
style type="text/css"
h1 {font-size:16px;}
p {color:blue;}
/style
/head
3.鏈接樣式
link href="styles.css" rel="stylesheet" type="text/css" /
樣式的寫法
例子如下
1 ) p {color:red; font-size:12px; font-weight:bold}
2 ) h1 {color:blue; font-weight:bold;}
h2 {color:blue; font-weight:bold;}
h3 {color:blue; font-weight:bold;}
3)假設,你在寫完前面那條規(guī)則后,又想只把h3變成斜體,那可以再為h3寫一條規(guī)則:
h1, h2, h3 {color:blue; font-weight:bold;}
h3 {font-style:italic;}
當前文章:css樣式引入順序,css引入樣式的幾種方法
本文路徑:http://aaarwkj.com/article2/dssjioc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供做網站、虛擬主機、關鍵詞優(yōu)化、、企業(yè)網站制作、Google
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)