css選擇器優(yōu)先級深入理解
發(fā)布時間:2012-12-04 10:44:13 作者:佚名
我要評論
css基礎選擇器有標簽選擇器、類選擇器、id選擇器、通用選擇器,本文將深入介紹css選擇器優(yōu)先級,這會給正在解決優(yōu)先級問題的朋友,帶來些許幫助
一、基礎選擇器
css基礎選擇器有標簽選擇器、類選擇器、id選擇器、通用選擇器
1.標簽選擇器
每個html頁面都由很多個標簽組成,通過標簽選擇器可以對某類標簽應用相應的樣式,如對p標簽應用下面的樣式,則頁面中所有的p標簽都會生效
p{ font-size:12px; color:red; background:blue; }
2.類選擇器
類選擇器是css非常常用的選擇器,在html中可以為某個標簽增加class屬性,如
<div class="error"> </div>
則可以為對應的class設置樣式
error{ width:200px; padding:5px; color:red;}
類選擇器可以復用,如對頁面中的p標簽也可以應用此樣式
This is a test!
另外,一個標簽可以有多個類選擇器,不同的值用空格隔開,這樣多個樣式便可以應用的一個標簽上。
3.id選擇器
id選擇器和類選擇器一樣,用的也很頻繁,但是id在每個html頁面的值必須是唯一的,所以它不可以復用,如:
<div id="content"> </div>
這里補充說明下id與class的命名規(guī)范,命名時盡可能的保持名稱與表現(xiàn)形式無關,如 某段提示文字顯示為紅色,可以命名為red,但是若日后改成藍色,則red名與之不對應,更好的選擇如error或tips。所以應該根據(jù)它是什么來命名 而不是 根據(jù) 它的外觀如何來命名。
4.通用選擇器
不同于上面的三種選擇器,通用選擇器要強大的多,它可以對頁面中的所有html標簽應用樣式,當然也正是因為如此強大,反而限制了它的靈活性,在實際應用中用的較少。一般簡單的css reset會用到,如:
*{ margin:0; padding:0;}
二、組合選擇器
1.群主選擇器
在使用選擇器時,有的元素樣式是一樣的,每次都為不同的選擇器單獨定義樣式的話太繁瑣,這時我們便可以使用群主選擇器集中定義樣式。不同標簽或類以逗號隔開。如:
div, h2, .error{ font-size:14px; color:red;}
這樣我們便同時給div, h2, .error一起定義了樣式。
2.子選擇器
當我們想讓父元素下的某個子元素表現(xiàn)為特定的樣式時,我們可以用子選擇器,如
div>a{ color:blue; text-decoration:none;}
此時,div下的子元素a都將變成藍色字體,無下劃線。
3.后代選擇器
在上面的例子中,利用子選擇器,只可以設置div下的子元素a,但是若想改變div下的所有a標簽的樣式,就需要用到后代選擇器。代碼如下:
div a{ color:blue; text-decoration:none;}
4.同胞選擇器
除了上面的子選擇器與后代選擇器,我們可能還希望找到兄弟兩個當中的一個,如一個標題h1元素后面緊跟了兩個段落p元素,我們想定位第一個段落p元素,對它應用樣式。我們就可以使用相鄰同胞選擇器??聪旅娴拇a:
h1 + p{font-size:14px; background:#ccc; }
三、屬性選擇器說明:以下提到的E表示元素,attr表示屬性,val表示屬性的值
1.E[attr]選擇器
匹配所有具有attr屬性的E元素,不考慮它的值。如以下代碼可以匹配所有含有title屬性的p元素。
p[title]{font-size:12px; color:#666;}
2.E[attr=val]
匹配所有attr屬性值為val的E元素。如匹配所有class值為test的p元素
p[class="test"]{color:red;}
3.E[attr~=val]
匹配具有attr屬性且屬性值為用空格分隔的字符列表,其中一個值等于val的E元素。如:
p[class~="name"]{font-size:12px; color:red;}
<div class="test name">111111</div><div class="name">111111</div>
則第一個div會應用上面的樣式。
4.E[attr|=val]
匹配具有attr屬性且屬性值為用連接符分隔的字符串,并以val開頭的E元素。
p[class|="test"]{font-size:12px; color:red;}
<div class="test">111111</div><div class="test-123">111111</div>
則第二個div會應用上面的樣式。
最后不得不提的是IE6不支持子選擇器、同胞選擇器和屬性選擇器,因此使用時需注意。
css優(yōu)先級
優(yōu)先級算是css中的一個非常重要的知識點,也是筆試面試中經(jīng)常會考到的知識點。
一、什么是css優(yōu)先級
css優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序。
二、css優(yōu)先級規(guī)則
比較簡單易記的一種方法就是給不同選擇器分配不同的值:
1.id選擇器默認優(yōu)先級最高,其權值為100
2.class選擇器、屬性選擇器和偽類選擇器的權值為10
3.標簽選擇器的優(yōu)先級較低,其權值為1
所以在比較樣式的優(yōu)先級時,只需統(tǒng)計選擇符中的id、class、標簽名個數(shù),然后把對應的權值相加即可。根據(jù)結果便可得出優(yōu)先級高低。
1.結果較大的優(yōu)先級較高
2.結果相同,則后定義的樣式優(yōu)先級較高
3.如果樣式值中含有!important,則該值優(yōu)先級最高
舉例:
h2{color:blue;}//其權值為1
#content{color:#666;}//其權值為100p
.test{color:#ccc;}//其權值為1+10=11
#main div .test{color:red;}//其權值為100+1+10=111div
#main .left #nav{color:#000}//其權值為1+100+10+100=211
css基礎選擇器有標簽選擇器、類選擇器、id選擇器、通用選擇器
1.標簽選擇器
每個html頁面都由很多個標簽組成,通過標簽選擇器可以對某類標簽應用相應的樣式,如對p標簽應用下面的樣式,則頁面中所有的p標簽都會生效
復制代碼
代碼如下:p{ font-size:12px; color:red; background:blue; }
2.類選擇器
類選擇器是css非常常用的選擇器,在html中可以為某個標簽增加class屬性,如
復制代碼
代碼如下:<div class="error"> </div>
則可以為對應的class設置樣式
復制代碼
代碼如下:error{ width:200px; padding:5px; color:red;}
類選擇器可以復用,如對頁面中的p標簽也可以應用此樣式
復制代碼
代碼如下:This is a test!
另外,一個標簽可以有多個類選擇器,不同的值用空格隔開,這樣多個樣式便可以應用的一個標簽上。
3.id選擇器
id選擇器和類選擇器一樣,用的也很頻繁,但是id在每個html頁面的值必須是唯一的,所以它不可以復用,如:
復制代碼
代碼如下:<div id="content"> </div>
這里補充說明下id與class的命名規(guī)范,命名時盡可能的保持名稱與表現(xiàn)形式無關,如 某段提示文字顯示為紅色,可以命名為red,但是若日后改成藍色,則red名與之不對應,更好的選擇如error或tips。所以應該根據(jù)它是什么來命名 而不是 根據(jù) 它的外觀如何來命名。
4.通用選擇器
不同于上面的三種選擇器,通用選擇器要強大的多,它可以對頁面中的所有html標簽應用樣式,當然也正是因為如此強大,反而限制了它的靈活性,在實際應用中用的較少。一般簡單的css reset會用到,如:
復制代碼
代碼如下:*{ margin:0; padding:0;}
二、組合選擇器
1.群主選擇器
在使用選擇器時,有的元素樣式是一樣的,每次都為不同的選擇器單獨定義樣式的話太繁瑣,這時我們便可以使用群主選擇器集中定義樣式。不同標簽或類以逗號隔開。如:
復制代碼
代碼如下:div, h2, .error{ font-size:14px; color:red;}
這樣我們便同時給div, h2, .error一起定義了樣式。
2.子選擇器
當我們想讓父元素下的某個子元素表現(xiàn)為特定的樣式時,我們可以用子選擇器,如
復制代碼
代碼如下:div>a{ color:blue; text-decoration:none;}
此時,div下的子元素a都將變成藍色字體,無下劃線。
3.后代選擇器
在上面的例子中,利用子選擇器,只可以設置div下的子元素a,但是若想改變div下的所有a標簽的樣式,就需要用到后代選擇器。代碼如下:
復制代碼
代碼如下:div a{ color:blue; text-decoration:none;}
4.同胞選擇器
除了上面的子選擇器與后代選擇器,我們可能還希望找到兄弟兩個當中的一個,如一個標題h1元素后面緊跟了兩個段落p元素,我們想定位第一個段落p元素,對它應用樣式。我們就可以使用相鄰同胞選擇器??聪旅娴拇a:
復制代碼
代碼如下:h1 + p{font-size:14px; background:#ccc; }
三、屬性選擇器說明:以下提到的E表示元素,attr表示屬性,val表示屬性的值
1.E[attr]選擇器
匹配所有具有attr屬性的E元素,不考慮它的值。如以下代碼可以匹配所有含有title屬性的p元素。
復制代碼
代碼如下:p[title]{font-size:12px; color:#666;}
2.E[attr=val]
匹配所有attr屬性值為val的E元素。如匹配所有class值為test的p元素
復制代碼
代碼如下:p[class="test"]{color:red;}
3.E[attr~=val]
匹配具有attr屬性且屬性值為用空格分隔的字符列表,其中一個值等于val的E元素。如:
復制代碼
代碼如下:p[class~="name"]{font-size:12px; color:red;}
復制代碼
代碼如下:<div class="test name">111111</div><div class="name">111111</div>
則第一個div會應用上面的樣式。
4.E[attr|=val]
匹配具有attr屬性且屬性值為用連接符分隔的字符串,并以val開頭的E元素。
復制代碼
代碼如下:p[class|="test"]{font-size:12px; color:red;}
<div class="test">111111</div><div class="test-123">111111</div>
則第二個div會應用上面的樣式。
最后不得不提的是IE6不支持子選擇器、同胞選擇器和屬性選擇器,因此使用時需注意。
css優(yōu)先級
優(yōu)先級算是css中的一個非常重要的知識點,也是筆試面試中經(jīng)常會考到的知識點。
一、什么是css優(yōu)先級
css優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序。
二、css優(yōu)先級規(guī)則
比較簡單易記的一種方法就是給不同選擇器分配不同的值:
1.id選擇器默認優(yōu)先級最高,其權值為100
2.class選擇器、屬性選擇器和偽類選擇器的權值為10
3.標簽選擇器的優(yōu)先級較低,其權值為1
所以在比較樣式的優(yōu)先級時,只需統(tǒng)計選擇符中的id、class、標簽名個數(shù),然后把對應的權值相加即可。根據(jù)結果便可得出優(yōu)先級高低。
1.結果較大的優(yōu)先級較高
2.結果相同,則后定義的樣式優(yōu)先級較高
3.如果樣式值中含有!important,則該值優(yōu)先級最高
舉例:
復制代碼
代碼如下:h2{color:blue;}//其權值為1
#content{color:#666;}//其權值為100p
.test{color:#ccc;}//其權值為1+10=11
#main div .test{color:red;}//其權值為100+1+10=111div
#main .left #nav{color:#000}//其權值為1+100+10+100=211
相關文章
- 作為一個Web開發(fā)者,掌握必要的前臺技術也是很重要的特別是CSS選擇器的優(yōu)先級問題,為了廣大web愛好者可以更好的解決問題,這里就CSS選擇器的優(yōu)先級問題做了一些總結2013-08-01
- 大家都知道,CSS的中文名叫做層疊樣式表,而CSS在控制樣式的時候,有三種引入方式,這里簡單介紹下CSS控制樣式的三種方式2013-07-22
- 所謂CSS優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序,既然樣式有優(yōu)先級,那么就會有一個規(guī)則來約定這個優(yōu)先級,而這個“規(guī)則”就是本次所需要講的重點2013-04-22
- 所謂CSS優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序,CSS是層疊樣式表(Cascading Style Sheets)的簡稱,我們能通過CSS為文檔設置豐富且易于修改的外觀2013-04-19
- css樣式優(yōu)先級是按照樣式表中出現(xiàn)順序還是按照元素中class或者id值的聲明順序呢,這個問題貌似一直存在我們身邊卻一直無從選擇,接下來用實例為大家說明下,到底哪個高點,2013-03-14
CSS層疊樣式表之CSS解析機制的優(yōu)先級及樣式覆蓋問題探討
多重樣式(Multiple Styles): 如果外部樣式、內部樣式和內聯(lián)樣式同時應用于同一個元素,就是使多重樣式的情況.有個例外的情況,就是如果外部樣式放在內部樣式的后面,則2013-02-01CSS優(yōu)先級和!important與IE6的BUG討論及解決方案
本來我對他誰的ie6不支持!important也沒什么異議,可是正好在前幾天正好用個這個!important屬性解決了一個樣式優(yōu)先級的問題,而且是支持ie6的,這是為什么呢?到底ie6支不2013-01-23IE6下CSS多類選擇符優(yōu)先級不起作用的bug分析及解決方法
IE6,這個前端開發(fā)的夢魘總是在你不經(jīng)意的時候給你捅一刀,在ie6環(huán)境下CSS多類選擇符優(yōu)先級不起作用,多么的令人氣憤啊,經(jīng)過測試:IE6下這種類組合的優(yōu)先級不如單個類, 感2013-01-23- css樣式的優(yōu)先級是一個龐雜的知識點,我甚至覺得它的龐雜可以與“浮動”以及“框模型”相提并論,今天就利用點時間把我所了解的寫下來,大家共同進步2013-01-11
- CSS的調用方式一共有4種,分別是:行內樣式,內嵌式,link鏈接式,@import導入式,在同級的前提下,我們可以按樣就近原則來理解他們的優(yōu)先級,則越前定義的樣式,會被后面2010-07-23

