css基礎(chǔ)選擇器有標(biāo)簽選擇器、類選擇器、id選擇器、通用選擇器
1.標(biāo)簽選擇器
每個html頁面都由很多個標(biāo)簽組成,通過標(biāo)簽選擇器可以對某類標(biāo)簽應(yīng)用相應(yīng)的樣式,如對p標(biāo)簽應(yīng)用下面的樣式,則頁面中所有的p標(biāo)簽都會生效
2.類選擇器
類選擇器是css非常常用的選擇器,在html中可以為某個標(biāo)簽增加class屬性,如
<div class="error"> </div>
則可以為對應(yīng)的class設(shè)置樣式
error{ width:200px; padding:5px; color:red;}
類選擇器可以復(fù)用,如對頁面中的p標(biāo)簽也可以應(yīng)用此樣式
This is a test!
另外,一個標(biāo)簽可以有多個類選擇器,不同的值用空格隔開,這樣多個樣式便可以應(yīng)用的一個標(biāo)簽上。
3.id選擇器
id選擇器和類選擇器一樣,用的也很頻繁,但是id在每個html頁面的值必須是唯一的,所以它不可以復(fù)用,如:
<div id="content"> </div>
這里補充說明下id與class的命名規(guī)范,命名時盡可能的保持名稱與表現(xiàn)形式無關(guān),如 某段提示文字顯示為紅色,可以命名為red,但是若日后改成藍(lán)色,則red名與之不對應(yīng),更好的選擇如error或tips。所以應(yīng)該根據(jù)它是什么來命名 而不是 根據(jù) 它的外觀如何來命名。
4.通用選擇器
不同于上面的三種選擇器,通用選擇器要強大的多,它可以對頁面中的所有html標(biāo)簽應(yīng)用樣式,當(dāng)然也正是因為如此強大,反而限制了它的靈活性,在實際應(yīng)用中用的較少。一般簡單的css reset會用到,如:
代碼如下:
*{ margin:0; padding:0;}
二、組合選擇器
1.群主選擇器
在使用選擇器時,有的元素樣式是一樣的,每次都為不同的選擇器單獨定義樣式的話太繁瑣,這時我們便可以使用群主選擇器集中定義樣式。不同標(biāo)簽或類以逗號隔開。如:
代碼如下:
div, h2, .error{ font-size:14px; color:red;}
這樣我們便同時給div, h2, .error一起定義了樣式。
2.子選擇器
當(dāng)我們想讓父元素下的某個子元素表現(xiàn)為特定的樣式時,我們可以用子選擇器,如
代碼如下:
div>a{ color:blue; text-decoration:none;}
此時,div下的子元素a都將變成藍(lán)色字體,無下劃線。
3.后代選擇器
在上面的例子中,利用子選擇器,只可以設(shè)置div下的子元素a,但是若想改變div下的所有a標(biāo)簽的樣式,就需要用到后代選擇器。代碼如下:
div a{ color:blue; text-decoration:none;}
4.同胞選擇器
除了上面的子選擇器與后代選擇器,我們可能還希望找到兄弟兩個當(dāng)中的一個,如一個標(biāo)題h1元素后面緊跟了兩個段落p元素,我們想定位第一個段落p元素,對它應(yīng)用樣式。我們就可以使用相鄰?fù)x擇器??聪旅娴拇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會應(yīng)用上面的樣式。
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會應(yīng)用上面的樣式。
最后不得不提的是IE6不支持子選擇器、同胞選擇器和屬性選擇器,因此使用時需注意。
css優(yōu)先級
優(yōu)先級算是css中的一個非常重要的知識點,也是筆試面試中經(jīng)常會考到的知識點。
一、什么是css優(yōu)先級
css優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序。
二、css優(yōu)先級規(guī)則
比較簡單易記的一種方法就是給不同選擇器分配不同的值:
1.id選擇器默認(rèn)優(yōu)先級最高,其權(quán)值為100
2.class選擇器、屬性選擇器和偽類選擇器的權(quán)值為10
3.標(biāo)簽選擇器的優(yōu)先級較低,其權(quán)值為1
所以在比較樣式的優(yōu)先級時,只需統(tǒng)計選擇符中的id、class、標(biāo)簽名個數(shù),然后把對應(yīng)的權(quán)值相加即可。根據(jù)結(jié)果便可得出優(yōu)先級高低。
1.結(jié)果較大的優(yōu)先級較高
2.結(jié)果相同,則后定義的樣式優(yōu)先級較高
3.如果樣式值中含有!important,則該值優(yōu)先級最高
舉例:
代碼如下:
h2{color:blue;}//其權(quán)值為1
#content{color:#666;}//其權(quán)值為100p
.test{color:#ccc;}//其權(quán)值為1+10=11
#main div .test{color:red;}//其權(quán)值為100+1+10=111div
#main .left #nav{color:#000}//其權(quán)值為1+100+10+100=211