1.1 標簽選擇器
就是用標簽名來當做選擇器。
1) 所有標簽都能夠當做選擇器,比如body、h1、dl、ul、span等等
2) 不管這個標簽藏的多深,都能夠被選擇上。
3) 選擇的是所有的,而不是某一個。所以是共性,而不是特性。
比如網易,希望頁面上所有的超級鏈接都沒有下划線:
1 a{
2 /*去掉下划線:*/
3 text-decoration: none;
4 }
1.2 id選擇器
#表示選擇id
1 #lj1{
2 font-size: 60px;
3 font-weight: bold;
4 color:black;
5 }
2)同一個頁面內id不能重復,即使不一樣的標簽,也不能是相同的id。1)任何的標簽都可以有id,id的命名要以字母開頭,可以有數字、下划線。大小寫嚴格區別,也就是說mm和MM是兩個不同的id。
也就是說,如果有一個p的id叫做haha,這個頁面內,其他所有的元素的id都不能叫做haha。
1.3 類選擇器
.就是類的符號。類的英語叫做class。
所謂的類,就是class屬性,class屬性和id非常相似,任何的標簽都可以攜帶class屬性。
class屬性可以重復,比如,頁面上可能有很多標簽都有teshu這個類:
1 <h3>我是一個h3啊</h3> 2 <h3 class="teshu">我是一個h3啊</h3> 3 <h3>我是一個h3啊</h3> 4 <p>我是一個段落啊</p> 5 <p class="teshu">我是一個段落啊</p> 6 <p class="teshu">我是一個段落啊</p>
css里面用.來表示類:
1 .teshu{
2 color: red;
3 }
同一個標簽,可能同時屬於多個類,用空格隔開:
1 <h3 class="teshu zhongyao">我是一個h3啊</h3>
這樣,這個h3就同時屬於teshu類,也同時屬於zhongyao類。
初學者常見的錯誤,就是寫成了兩個class:
1 <h3 class="teshu" class="zhongyao">我是一個h3啊</h3>
所以要總結兩條:
1) class可以重復,也就是說,同一個頁面上可能有多個標簽同時屬於某一個類;
2) 同一個標簽可以同時攜帶多個類。
類的使用,能夠決定一個人的css水平。
1) 不要去試圖用一個類名,把某個標簽的所有樣式寫完。這個標簽要多攜帶幾個類,共同造成這個標簽的樣式。
2) 每一個類要盡可能小,有“公共”的概念,能夠讓更多的標簽使用。
到底用id還是用class?
答案:盡可能的用class,除非極特殊的情況可以用id。
原因:id是js用的。也就是說,js要通過id屬性得到標簽,所以我們css層面盡量不用id,要不然js就很別扭。另一層面,我們會認為一個有id的元素,有動態效果。
2.1 后代選擇器
1 <style type="text/css"> 2 .div1 p{ 3 color:red; 4 } 5 </style>
空格就表示后代,.div1 p 就是.div1的后代所有的p。
強調一下,選擇的是后代,不一定是兒子。
比如:
1 <div class="div1"> 2 <ul> 3 <li> 4 <p>段落</p> 5 <p>段落</p> 6 <p>段落</p> 7 </li> 8 </ul> 9 </div>
能夠被下面的選擇器選擇上:
1 .div1 p{
2 color:red;
3 }
所以,看見這個選擇器要知道是后代,而不是兒子。選擇的是所有.div1“中的”p,就是后代p。
空格可以多次出現。
1 .div1 .li2 p{
2 color:red;
3 }
就是.div1里面的后代.li2里面的p。
后代選擇器,就是一種平衡:共性、特性的平衡。當要把某一個部分的所有的什么,進行樣式改變,就要想到后代選擇器。
后代選擇器,描述的是祖先結構。
2.2 交集選擇器
1 h3.special{
2 color:red;
3 }
選擇的元素是同時滿足兩個條件:必須是h3標簽,然后必須是special標簽。
交集選擇器沒有空格。
所以有沒有空格
1 div.red
和
1 div .red
不是一個意思。
交集選擇器可以連續交(一般不要這么寫)
1 h3.special.zhongyao{
2 color:red;
3 }
交集選擇器,我們一般都是以標簽名開頭,比如div.haha 比如p.special。
2.3 並集選擇器(分組選擇器)
1 h3,li{
2 color:red;
3 }
用逗號就表示並集。
2.4 通配符*
*就表示所有元素。
1 *{
2 color:red;
3 }
效率不高,如果頁面上的標簽越多,效率越低,所以頁面上不能出現這個選擇器。