真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

css樣式優(yōu)先級(jí)順序,四種css樣式優(yōu)先級(jí)順序

css樣式 優(yōu)先級(jí)?

如果你寫(xiě)的樣式調(diào)用在前,而外部通用樣式在后,那么它就會(huì)覆蓋你的(css的意思是“層疊樣式表”,而“層疊”的意思就是后面的會(huì)覆蓋前面的)。而內(nèi)聯(lián)樣式(也就是你說(shuō)的“行內(nèi)樣式”)的優(yōu)先級(jí)比外部樣式(通過(guò)link標(biāo)簽調(diào)用的)和外聯(lián)樣式(寫(xiě)在style標(biāo)簽內(nèi)的)都高,所以不會(huì)被覆蓋。

成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的昆山網(wǎng)站建設(shè)公司,昆山接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行昆山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

css的優(yōu)先級(jí)順序是怎樣的

當(dāng)創(chuàng)建的樣式表越來(lái)越復(fù)雜時(shí),一個(gè)標(biāo)簽的樣式將會(huì)受到越來(lái)越多的影響,這種影響可能來(lái)自周?chē)臉?biāo)簽,也可能來(lái)自其自身。下面我們從這兩方面去看看 CSS 樣式的優(yōu)先級(jí)。

CSS 的繼承性

CSS 的繼承特性指的是應(yīng)用在一個(gè)標(biāo)簽上的那些 CSS 屬性被傳到其子標(biāo)簽上??聪旅娴?HTML 結(jié)構(gòu):

div

p/p/div

如果?div?有個(gè)屬性?color: red,則這個(gè)屬性將被?p?繼承,即?p?也擁有屬性?color: red。

由上可見(jiàn),當(dāng)網(wǎng)頁(yè)比較復(fù)雜, HTML 結(jié)構(gòu)嵌套較深時(shí),一個(gè)標(biāo)簽的樣式將深受其祖先標(biāo)簽樣式的影響。影響的規(guī)則是:

CSS 優(yōu)先規(guī)則1:?最近的祖先樣式比其他祖先樣式優(yōu)先級(jí)高。

例1:

!-- 類(lèi)名為 son 的 div 的 color 為 blue --div style="color: red"

div style="color: blue"

div class="son"/div

/div/div

如果我們把一個(gè)標(biāo)簽從祖先那里繼承來(lái)的而自身沒(méi)有的屬性叫做"祖先樣式",那么"直接樣式"就是一個(gè)標(biāo)簽直接擁有的屬性。又有如下規(guī)則:

CSS 優(yōu)先規(guī)則2:"直接樣式"比"祖先樣式"優(yōu)先級(jí)高。

例2:

!-- 類(lèi)名為 son 的 div 的 color 為 blue --div style="color: red"

div class="son" style="color: blue"/div/div

選擇器的優(yōu)先級(jí)

上面討論了一個(gè)標(biāo)簽從祖先繼承來(lái)的屬性,現(xiàn)在討論標(biāo)簽自有的屬性。在討論 CSS 優(yōu)先級(jí)之前,先說(shuō)說(shuō) CSS 7 種基礎(chǔ)的選擇器:

ID 選擇器, 如 #id{}

類(lèi)選擇器, 如 .class{}

屬性選擇器, 如 a[href="segmentfault.com"]{}

偽類(lèi)選擇器, 如 :hover{}

偽元素選擇器, 如 ::before{}

標(biāo)簽選擇器, 如 span{}

通配選擇器, 如 *{}

CSS 優(yōu)先規(guī)則3:優(yōu)先級(jí)關(guān)系:內(nèi)聯(lián)樣式 ID 選擇器 類(lèi)選擇器 = 屬性選擇器 = 偽類(lèi)選擇器 標(biāo)簽選擇器 = 偽元素選擇器

例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,因?yàn)閮?nèi)聯(lián)樣式比其他選擇器的優(yōu)先級(jí)高。

所有 CSS 的選擇符由上述 7 種基礎(chǔ)的選擇器或者組合而成,組合的方式有 3 種:

后代選擇符: .father .child{}

子選擇符: .father .child{}

相鄰選擇符: .bro1 + .bro2{}

當(dāng)一個(gè)標(biāo)簽同時(shí)被多個(gè)選擇符選中,我們便需要確定這些選擇符的優(yōu)先級(jí)。我們有如下規(guī)則:

CSS 優(yōu)先規(guī)則4:計(jì)算選擇符中 ID 選擇器的個(gè)數(shù)(a),計(jì)算選擇符中類(lèi)選擇器、屬性選擇器以及偽類(lèi)選擇器的個(gè)數(shù)之和(b),計(jì)算選擇符中標(biāo)簽選擇器和偽元素選擇器的個(gè)數(shù)之和(c)。按 a、b、c 的順序依次比較大小,大的則優(yōu)先級(jí)高,相等則比較下一個(gè)。若最后兩個(gè)的選擇符中 a、b、c 都相等,則按照"就近原則"來(lái)判斷。

例4:

// HTMLdiv id="con-id"

span class="con-span"/span/div// CSS#con-id span {

color: red;}div .con-span {

color: blue;}

由規(guī)則 4 可見(jiàn),span 的 color 為 red。

如果外部樣式表和內(nèi)部樣式表中的樣式發(fā)生沖突會(huì)出現(xiàn)什么情況呢?這與樣式表在 HTML 文件中所處的位置有關(guān)。樣式被應(yīng)用的位置越在下面則優(yōu)先級(jí)越高,其實(shí)這仍然可以用規(guī)則 4 來(lái)解釋。

例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;}

從順序上看,內(nèi)部樣式在最下面,被最晚引用,所以 div 的背景色為 blue。

上面代碼中,@import?語(yǔ)句必須出現(xiàn)在內(nèi)部樣式之前,否則文件引入無(wú)效。當(dāng)然不推薦使用?@import?的方式引用外部樣式文件,原因見(jiàn)另一篇博客:CSS 引入方式。

CSS 還提供了一種可以完全忽略以上規(guī)則的方法,當(dāng)你一定、必須確保某一個(gè)特定的屬性要顯示時(shí),可以使用這個(gè)技術(shù)。

CSS 優(yōu)先規(guī)則5:屬性后插有?!important?的屬性擁有最高優(yōu)先級(jí)。若同時(shí)插有?!important,則再利用規(guī)則 3、4 判斷優(yōu)先級(jí)。

例6:

// HTMLdiv class="father"

p class="son"/p/div// CSSp {

background: red !important;}.father .son {

background: blue;}

雖然 .father .son 擁有更高的權(quán)值,但選擇器 p 中的 background 屬性被插入了 !important, 所以 p 的 background 為 red。

錯(cuò)誤的說(shuō)法

在學(xué)習(xí)過(guò)程中,你可能發(fā)現(xiàn)給選擇器加權(quán)值的說(shuō)法,即 ID 選擇器權(quán)值為 100,類(lèi)選擇器權(quán)值為 10,標(biāo)簽選擇器權(quán)值為 1,當(dāng)一個(gè)選擇器由多個(gè) ID 選擇器、類(lèi)選擇器或標(biāo)簽選擇器組成時(shí),則將所有權(quán)值相加,然后再比較權(quán)值。這種說(shuō)法其實(shí)是有問(wèn)題的。比如一個(gè)由 11 個(gè)類(lèi)選擇器組成的選擇器和一個(gè)由 1 個(gè) ID 選擇器組成的選擇器指向同一個(gè)標(biāo)簽,按理說(shuō) 110 100,應(yīng)該應(yīng)用前者的樣式,然而事實(shí)是應(yīng)用后者的樣式。錯(cuò)誤的原因是:權(quán)重的進(jìn)制是并不是十進(jìn)制,CSS 權(quán)重進(jìn)制在 IE6 為 256,后來(lái)擴(kuò)大到了 65536,現(xiàn)代瀏覽器則采用更大的數(shù)量。。還是拿剛剛的例子說(shuō)明。11 個(gè)類(lèi)選擇器組成的選擇器的總權(quán)值為 110,但因?yàn)?11 個(gè)均為類(lèi)選擇器,所以其實(shí)總權(quán)值最多不能超過(guò) 100, 你可以理解為 99.99,所以最終應(yīng)用后者樣式。

css優(yōu)先級(jí)

所謂CSS優(yōu)先級(jí),即是指CSS樣式在瀏覽器中被解析的先后順序。既然樣式有優(yōu)先級(jí),那么就會(huì)有一個(gè)規(guī)則來(lái)約定這個(gè)優(yōu)先級(jí),而這個(gè)“規(guī)則”就是重點(diǎn)。

樣式表允許以多種方式規(guī)定樣式信息。樣式可以規(guī)定在單個(gè)的 HTML 元素中,在 HTML 頁(yè)的頭元素中,或在一個(gè)外部的 CSS 文件中。甚至可以在同一個(gè) HTML 文檔內(nèi)部引用多個(gè)外部樣式表。當(dāng)同一個(gè) HTML 元素被不止一個(gè)樣式定義時(shí),會(huì)使用哪個(gè)樣式呢?

一般而言,所有的樣式會(huì)根據(jù)下面的規(guī)則層疊于一個(gè)新的虛擬樣式表中,其中數(shù)字 4 擁有最高的優(yōu)先權(quán)。

?瀏覽器缺省設(shè)置

?外部樣式表

?內(nèi)部樣式表(位于 head 標(biāo)簽內(nèi)部)

?內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)

因此,內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)擁有最高的優(yōu)先權(quán),這意味著它將優(yōu)先于以下的樣式聲明:head 標(biāo)簽中的樣式聲明,外部樣式表中的樣式聲明,或者瀏覽器中的樣式聲明(缺省值)。這只是一個(gè)大方面的優(yōu)先級(jí),在前面文章中我們講過(guò)CSS有很多選擇器,那么對(duì)于同種樣式的CSS,各個(gè)選擇器的優(yōu)先級(jí)又是如何呢?

我們將某一個(gè)CSS看成一個(gè)三位數(shù),通過(guò)比較數(shù)字的大小來(lái)獲取優(yōu)先級(jí)的高低,那么就會(huì)相當(dāng)簡(jiǎn)單。在這里可以通過(guò)下面的規(guī)則來(lái)定義各個(gè)選擇器對(duì)應(yīng)的數(shù)字。

?百位數(shù)是該選擇器上的id的數(shù)量的總和;

?十位數(shù)是用在該選擇器上的其它屬性選擇器和偽類(lèi)的總和。這里包括class (.example) 和屬性選擇器(比如 li[id=red]);

?個(gè)位數(shù)是計(jì)算元素(就像table、p、div、*等等)和偽元素(就像:first-line等);

?如果兩個(gè)選擇器對(duì)應(yīng)的數(shù)字相等,也就是具有同樣的優(yōu)先級(jí),在樣式表中后面的那個(gè)起作用。

?標(biāo)有"!important"的規(guī)則具有最高優(yōu)先級(jí),例如H1{color:black !importan; font-family:sans-serif},前景色被標(biāo)為important,這個(gè)前景色具有很高的優(yōu)先級(jí)。但是這種聲明容易引起混亂,因此通常使用得較少。

選擇器 數(shù)值

h1 {color:blue;} 1

p em {color:purple;} 1 + 1 = 2

.apple {color:red;} 10

p.bright {color:yellow;} 1 + 10 = 11

p.bright em.dark {color:brown;} 1 + 10 + 1 + 10 = 22

#id316 {color:yellow} 100

一般我們還可以通過(guò)瀏覽器的插件來(lái)查看,到底哪個(gè)CSS起作用,比如Firebug(Firefox)、Developer Tools(IE8)等。上面我們介紹到當(dāng)優(yōu)先級(jí)相同時(shí),哪個(gè)CSS起作用取決于所處的位置,通常后面的CSS優(yōu)先級(jí)要高。但是對(duì)于IE瀏覽器,具有相同數(shù)值的動(dòng)態(tài)CSS取決于添加的順序前后,而不是添加的位置前后;后添加的優(yōu)先級(jí)要高。

在兩個(gè)或多少CSS規(guī)則應(yīng)用于同元素上時(shí),不同級(jí)別的優(yōu)先順序從到高低是?

在看css選擇器優(yōu)先級(jí)順序前,我們先來(lái)簡(jiǎn)單說(shuō)說(shuō)css基本選擇器有哪些?

1.標(biāo)記選擇器(如:body,div,p,ul,li)

2.id選擇器(如:id=“name”,id=“name_txt”)

3.類(lèi)選擇器(如:id=“name”,id=“name_txt”)

4.后代選擇器(如:#head .nav ul li 從父集到子孫集的選擇器)

5.子元素選擇器(如:divp ,帶大于號(hào))

6.偽類(lèi)選擇器(如:就是鏈接樣式,a元素的偽類(lèi),4種不同的狀態(tài):link、visited、active、hover。)

看完了基本的css選擇器類(lèi)型后,我們接著來(lái)看一下css優(yōu)先級(jí)的概念。

當(dāng)兩個(gè)規(guī)則都作用到了同一個(gè)html元素上時(shí),如果定義的屬性有沖突,那么應(yīng)該用誰(shuí)的值的,用到誰(shuí)的值誰(shuí)的優(yōu)先級(jí)就高。

我們來(lái)看一下css選擇器優(yōu)先級(jí)的算法:

每個(gè)規(guī)則對(duì)應(yīng)一個(gè)初始"四位數(shù)":0、0、0、0

若是 行內(nèi)選擇符,則加1、0、0、0

若是 ID選擇符,則加0、1、0、0

若是 類(lèi)選擇符/偽類(lèi)選擇符,則分別加0、0、1、0

若是 元素選擇符,則分別加0、0、0、1

算法:將每條規(guī)則中,選擇符對(duì)應(yīng)的數(shù)相加后得到的”四位數(shù)“,從左到右進(jìn)行比較,大的優(yōu)先級(jí)越高。

看完了上述內(nèi)容,那我們就來(lái)看看css選擇器優(yōu)先級(jí)的具體排序。

css選擇器優(yōu)先級(jí)最高到最低順序?yàn)椋?/p>

1.id選擇器(#myid)

2.類(lèi)選擇器(.myclassname)

3.標(biāo)簽選擇器(div,h1,p)

4.子選擇器(ul li)

5.后代選擇器(li a)

6.偽類(lèi)選擇(a:hover,li:nth-child)

最后,需要注意的是:

!important的優(yōu)先級(jí)是最高的,但出現(xiàn)沖突時(shí)則需比較”四位數(shù)“;

優(yōu)先級(jí)相同時(shí),則采用就近原則,選擇最后出現(xiàn)的樣式;

繼承得來(lái)的屬性,其優(yōu)先級(jí)最低。

請(qǐng)教專(zhuān)業(yè)人士,css樣式的加載順序

就不解釋什么內(nèi)聯(lián)樣式、內(nèi)部樣式、外部樣式了,不夠直觀,通俗點(diǎn)或者直觀點(diǎn)說(shuō)好了:

第一優(yōu)先級(jí)是標(biāo)簽上用style設(shè)置的css,例如:div style="樣式"/div

第二優(yōu)先級(jí)是html頁(yè)面上在style/style內(nèi)設(shè)置編寫(xiě)的css,例如:

style .divcss{樣式}/style

第三優(yōu)先級(jí)是在html頁(yè)面上引用外部的css樣式表,例如:

link href="文件路徑" rel="stylesheet" media="screen" /

無(wú)論說(shuō)法是叫優(yōu)先級(jí)還是是加載順序,都不重要,只要你有這么一個(gè)概念就好了,優(yōu)先級(jí)越高,當(dāng)碰到調(diào)用2個(gè)或2個(gè)以上同類(lèi)型css的時(shí)候,只會(huì)調(diào)用優(yōu)先級(jí)最高的那1個(gè),要記住,每個(gè)標(biāo)簽上只能調(diào)用同類(lèi)型css一次,比如你設(shè)置了寬度width:200px;那么你再在其他調(diào)用方式中設(shè)置了width:300px;或其他值,那么只會(huì)按優(yōu)先級(jí)調(diào)用1個(gè)width值,其他的將會(huì)是無(wú)效值,不過(guò)切記,只是在這個(gè)標(biāo)簽上失效


新聞名稱(chēng):css樣式優(yōu)先級(jí)順序,四種css樣式優(yōu)先級(jí)順序
分享地址:http://weahome.cn/article/dsijsip.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部