一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

CSS的四種基本選擇器和四種高級(jí)選擇器

 天使之翼 ` 2019-07-01

CSS選擇器:就是指定CSS要作用的標(biāo)簽,那個(gè)標(biāo)簽的名稱就是選擇器。意為:選擇哪個(gè)容器。

CSS的選擇器分為兩大類:基本選擇題和擴(kuò)展選擇器。

基本選擇器:

  • 標(biāo)簽選擇器:針對一類標(biāo)簽
  • ID選擇器:針對某一個(gè)特定的標(biāo)簽使用
  • 類選擇器:針對你想要的所有標(biāo)簽使用
  • 通用選擇器(通配符):針對所有的標(biāo)簽都適用(不建議使用)

下面來分別講一講。

1、標(biāo)簽選擇器:選擇器的名字代表html頁面上的標(biāo)簽

標(biāo)簽選擇器,選擇的是頁面上所有這種類型的標(biāo)簽,所以經(jīng)常描述“共性”,無法描述某一個(gè)元素的“個(gè)性”。

舉例:

  1. <style type="text/css">
  2. p{
  3. font-size:14px;
  4. }</style>
  5. <body>
  6. <p>css</p>
  7. </body>

 

 

 

再比如說,我想讓“學(xué)完了安卓,繼續(xù)學(xué)前端喲”這句話中的“前端”兩個(gè)變?yōu)榧t色字體,那么我可以用<span>標(biāo)簽把“前端”這兩個(gè)字圍起來,然后給<span>標(biāo)簽加一個(gè)標(biāo)簽選擇器。

代碼如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. span{
  8. color: red;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <p>學(xué)完了安卓,繼續(xù)學(xué)<span>前端</span>喲</p>
  14. </body>
  15. </html>

【總結(jié)】需要注意的是:

(1)所有的標(biāo)簽,都可以是選擇器。比如ul、li、label、dt、dl、input、div等。

(2)無論這個(gè)標(biāo)簽藏的多深,一定能夠被選擇上。

(3)選擇的所有,而不是一個(gè)。

 

 

2、ID選擇器:規(guī)定用#來定義(名字自定義)

針對某一個(gè)特定的標(biāo)簽來使用,只能使用一次。css中的ID選擇器以”#”來定義。

舉例:

  1. <head>
  2. <title>Document</title>
  3. <style type="text/css">
  4. #mytitle
  5. {
  6. border:3px dashed green;
  7. }
  8. </style>
  9. </head>

然后我們在別處使用id來引用它:

  1. <body>
  2. <h2 id="mytitle">你好</h2>
  3. </body>

 

id選擇器的選擇符是“#”。

任何的HTML標(biāo)簽都可以有id屬性。表示這個(gè)標(biāo)簽的名字。這個(gè)標(biāo)簽的名字,可以任取,但是:

  • (1)只能有字母、數(shù)字、下劃線。
  • (2)必須以字母開頭。
  • (3)不能和標(biāo)簽同名。比如id不能叫做body、img、a。
  • (4)大小寫嚴(yán)格區(qū)分,也就是說aa,和AA是兩個(gè)不同的ID

另外,特別強(qiáng)調(diào)的是:HTML頁面,不能出現(xiàn)相同的id,哪怕他們不是一個(gè)類型。比如頁面上有一個(gè)id為pp的p,一個(gè)id為pp的div,是非法的!

一個(gè)標(biāo)簽可以被多個(gè)css選擇器選擇:

比如,我們可以同時(shí)讓標(biāo)簽選擇器和id選擇器作用于同一個(gè)標(biāo)簽。(用到了層疊)如下:

然后我們通過網(wǎng)頁的審查元素看一下效果:

 

現(xiàn)在,假設(shè)選擇器沖突了,比如id選擇器說這個(gè)文字是紅色的,標(biāo)簽選擇器說這個(gè)文字是綠色的。那么聽誰的?
實(shí)際上,css有著非常嚴(yán)格的計(jì)算公式,能夠處理沖突.

一個(gè)標(biāo)簽可以被多個(gè)css選擇器選擇,共同作用,這就是“層疊式”的第一層含義

 

3、類選擇器:規(guī)定用圓點(diǎn).來定義

、針對你想要的所有標(biāo)簽使用。優(yōu)點(diǎn):靈活。

css中用.來表示類。舉例如下:

  1. <style type="text/css">
  2. .oneclass/*定義類選擇器*/{
  3. width:800px;
  4. }
  5. </style>
  6. </head>

然后我們在別處使用class來引用它:

  1. <body>
  2. <h2 class="oneclass">你好</h2>
  3. </body>

和id非常相似,任何的標(biāo)簽都可以攜帶id屬性和class屬性。但是id屬性只能被某一特定標(biāo)簽引用一次

class屬性的特點(diǎn):

  • 特性1:類選擇器可以被多種標(biāo)簽使用。

  • 特性2:同一個(gè)標(biāo)簽可以使用多個(gè)類選擇器。用空格隔開。舉例如下

<h3 class="classone  classtwo">我是一個(gè)h3啊</h3>

而不能寫成:

<h3 class="teshu" class="zhongyao">我是一個(gè)h3啊</h3>

類選擇器使用的舉例:

類選擇器的使用,能夠決定一個(gè)人的css水平。

應(yīng)該注意:

 

(1)不要去試圖用一個(gè)類名,把某個(gè)標(biāo)簽的所有樣式寫完。這個(gè)標(biāo)簽要多攜帶幾個(gè)類,共同完成這個(gè)標(biāo)簽的樣式。

(2)每一個(gè)類要盡可能小,有“公共”的概念,能夠讓更多的標(biāo)簽使用。

如:

  1. <style type="text/css">
  2. .lv{
  3. color: green;
  4. }
  5. .da{
  6. font-size: 30px;
  7. }
  8. .underline{
  9. text-decoration: underline;
  10. }
  11. </style>

 

然后讓每個(gè)標(biāo)簽去選取自己想要用的類選擇器:

  1. <p class="lv da">段落1</p>
  2. <p class="lv xian">段落2</p>
  3. <p class="da xian">段落3</p>

問題:到底用id還是用class?

答案:盡可能的用class,除非極特殊的情況可以用id。

原因:id是js用的。也就是說,js要通過id屬性得到標(biāo)簽,所以css層面盡量不用id,要不然js就很別扭。另一層面,我們會(huì)認(rèn)為一個(gè)有id的元素,有動(dòng)態(tài)效果。

舉例如下:

上圖所示,css和js都在用同一個(gè)id,會(huì)出現(xiàn)不好溝通的情況。

我們記住這句話:類上樣式,id上行為。意思是說,class屬性交給css使用,id屬性交給js使用。

上面這三種選擇器的區(qū)別:

  • 標(biāo)簽選擇器針對的是頁面上的一類標(biāo)簽。
  • ID選擇器是只針對特定的標(biāo)簽(一個(gè)),ID是此標(biāo)簽在此頁面上的唯一標(biāo)識(shí)
  • 類選擇器可以被多種標(biāo)簽使用。

4、通配符*:匹配任何標(biāo)簽(引出屬性選擇器*[title(="...")]{...},匹配所有帶有title標(biāo)簽的,a[href

(="...")][title(="...")]{color:red}將同時(shí)有 href(="...")和 title(="...")屬性的 HTML 超鏈接的文本設(shè)置為紅色等)

通用選擇器,將匹配任何標(biāo)簽。不建議使用,IE有些版本不支持,大網(wǎng)站增加客戶端負(fù)擔(dān)。

效率不高,如果頁面上的標(biāo)簽越多,效率越低,所以頁面上不能出現(xiàn)這個(gè)選擇器。

舉例:

  1. <style type="text/css">
  2. */*定義通用選擇器*,希望所有標(biāo)簽的上邊距和左邊距都為0*/{
  3. margin-left:0px;
  4. margin-top:0px;
  5. }
  6. </style>

后面就不需要進(jìn)行引用了以上就可以起到”通配“的效果了。

下面來講CSS中幾種擴(kuò)展(高級(jí))選擇器:

 

高級(jí)選擇器:

  • 后代選擇器:用空格隔開
  • 交集選擇器:用.隔開
  • 并集選擇器(分組選擇器):用逗號(hào)隔開
  • 偽類選擇器

1、后代選擇器: 定義的時(shí)候用空格隔開

對于E F這種格式,表示所有屬于E元素后代的F元素,有這個(gè)樣式??崭窬捅硎竞蟠?/p>

后代選擇器,就是一種平衡:共性、特性的平衡。當(dāng)要把某一個(gè)部分的所有的什么,進(jìn)行樣式改變,就要想到后代選擇器。

后代選擇器,描述的是祖先結(jié)構(gòu)。

看定義可能有點(diǎn)難理解,我們來看例子吧。

舉例1:

  1. <style type="text/css">
  2. .div1 p{
  3. color:red;
  4. }
  5. </style>

空格就表示后代。.div1 p 表示.div1的后代所有的p。

這里強(qiáng)調(diào)一下:這兩個(gè)標(biāo)簽不一定是連續(xù)緊挨著的,只要保持一個(gè)后代的關(guān)聯(lián)即可。也就是說,選擇的是后代,不一定是兒子。

舉例:

  1. <style type="text/css">
  2. h3 b i{
  3. color:red ;
  4. }
  5. </style

上方代碼的意思是說:定義了<h3>標(biāo)簽中的<b>標(biāo)簽中的<i>標(biāo)簽的樣式。
同理:h3和b和i標(biāo)簽不一定是連續(xù)緊挨著的,只要保持一個(gè)后代的關(guān)聯(lián)即可。

效果:

或者還有下面這種寫法:

 

上面的這種寫法,<h3>標(biāo)簽和<i>標(biāo)簽并不是緊挨著的,但他們保持著一種后代關(guān)系。

還有下面這種寫法:(含類選擇器、id選擇器都是可以的)

我們在開頭說了:后代選擇器,描述的是一種祖先結(jié)構(gòu)。我們舉個(gè)例子來說明這句話:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. div div p{
  8. color: red;
  9. }
  10. .div2{...}
  11. .div3{...}
  12. .div4{...}
  13. </style>
  14. </head>
  15. <body>
  16. <div>
  17. <div class="div2">
  18. <div class="div3">
  19. <div class="div4">
  20. <p>我是什么顏色?</p>
  21. </div>
  22. </div>
  23. </div>
  24. </div>
  25. </body>
  26. </html>

上面css中的div div p,也能使文字的顏色變紅。通過瀏覽器的審查元素,我們可以看到 p元素的祖先列表:

 

講到這里,我們再提一個(gè)sublime的快捷鍵。

在sublime中輸入p#haha,按tab鍵后,會(huì)生成<p id="haha"></p>。

在sublime中輸入p.haha,按tab鍵后,會(huì)生成<p class="haha"></p>。

 

2、交集選擇器

來看下面這張圖就明白了:

  1. <style type="text/css">
  2. h3.special{
  3. color:red;
  4. }
  5. </style>

選擇的元素要求同時(shí)滿足兩個(gè)條件:必須是h3標(biāo)簽,然后必須是special標(biāo)簽。

只能在h3標(biāo)簽中使用它:

<h3 class="special">css</h3>

注意,交集選擇器沒有空格。所以,沒有空格的div.red(交集選擇器)和有空格的div .red(后代選擇器)不是一個(gè)意思。

交集選擇器可以連續(xù)交:(一般不要這么寫)

  1. h3.special.zhongyao{
  2. color:red;
  3. }

上面這種寫法,是 IE7 開始兼容的,IE6 不兼容。

交集選擇器,我們一般都是以標(biāo)簽名開頭,比如div.haha 比如p.special

3、并集選擇器:定義的時(shí)候用逗號(hào)隔開

三種基本選擇器都可以放進(jìn)來。

舉例:

  1. p,h1,#mytitle,.one/*定義了一個(gè)并集選擇器,帶有p,h1,id="mytitle",class="one"的標(biāo)簽都內(nèi)容會(huì)顯示紅色*/{
  2. color:red;
  3. }

 

4、偽類選擇器(待定)

對于<a>標(biāo)簽,其對應(yīng)幾種不同的狀態(tài):

  • link:超鏈接點(diǎn)擊之前
  • visited:超鏈接點(diǎn)擊之后
  • focus:是某個(gè)標(biāo)簽獲得焦點(diǎn)的時(shí)候(比如某個(gè)輸入框獲得焦點(diǎn))
  • hover:鼠標(biāo)放到某個(gè)標(biāo)簽上的時(shí)候
  • active:點(diǎn)擊某個(gè)標(biāo)簽沒有松鼠標(biāo)時(shí)

CSS允許對于元素的不同狀態(tài),定義不同的樣式信息。偽類選擇器又分為兩種:

  • 靜態(tài)偽類:只能用于超鏈接
  • 動(dòng)態(tài)偽類:針對所有標(biāo)簽都適用

下面來分別講一下這兩種偽類選擇器。

(1)靜態(tài)偽類:

用于以下兩個(gè)狀態(tài)(只能使用于超鏈接):

  • link:超鏈接點(diǎn)擊之前
  • visited:超鏈接點(diǎn)擊之后

舉個(gè)例子:

 <style type="text/css">/*偽類選擇器:靜態(tài)偽類 */

a:link /*(針對所有利用href屬性的)超鏈接(不包括錨點(diǎn))點(diǎn)擊之前是紅色*/{

color:red; } a:visited/*讓超鏈接點(diǎn)擊之后是綠色*/{ color:green; } </style>

問:既然a{}定義了超鏈接的屬性,a:link{}定義了超鏈接點(diǎn)擊之前的屬性,那這兩個(gè)有啥區(qū)別呢?
答:

a{}a:link{}的區(qū)別:

  • a{}定義的樣式針對所有的超鏈接(包括錨點(diǎn))
  • a:link{}定義的樣式針對所有寫了href屬性的超鏈接(不包括錨點(diǎn))

(2)動(dòng)態(tài)偽類:

用于以下幾種狀態(tài)(適用于所有的標(biāo)簽):

  • focus(聚焦,點(diǎn)擊某個(gè)文本框后輸入文字,可以定義文本框和文字的屬性):是某個(gè)標(biāo)簽獲得焦點(diǎn)的時(shí)候(比如某個(gè)輸入框獲得焦點(diǎn))
  • hover(盤旋,鼠標(biāo)停留在上面):鼠標(biāo)放到某個(gè)標(biāo)簽上的時(shí)候
  • active(長按狀態(tài)):點(diǎn)擊某個(gè)標(biāo)簽沒有松鼠標(biāo)時(shí)

舉個(gè)例子:

  1. <head>
  2. <style type="text/css">
  3. /* 偽類選擇器:動(dòng)態(tài)偽類*/
  4. input:focus/*讓input文本框獲取焦點(diǎn)時(shí):邊框:#FF6F3D這種橙色;文字:綠色;背景色:#6a6a6a這種灰色*/{
  5. border:3px solid #FF6F3D;
  6. color:white;
  7. background-color:#6a6a6a;
  8. }
  9. label:hover/*鼠標(biāo)放在label標(biāo)簽上時(shí)顯示藍(lán)色*/{
  10. color:blue;
  11. }
  12. label:active/*點(diǎn)擊label標(biāo)簽鼠標(biāo)沒有松開時(shí)顯示紅色*/{
  13. color:red;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <input type="text" name=""><br><br>
  19. <label>css大神</label>
  20. </body>

利用這個(gè)hover屬性,我們同樣對表格做一個(gè)樣式的設(shè)置:

 

表格舉例:

 

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="Generator" content="EditPlus?">
  6. <meta name="Author" content="">
  7. <meta name="Keywords" content="">
  8. <meta name="Description" content="">
  9. <title>Document</title>
  10. <style type="text/css">
  11. /*整個(gè)表格的樣式*/
  12. table{
  13. width: 300px;
  14. height: 200px;
  15. border: 1px solid blue;
  16. /*border-collapse屬性:對表格的線進(jìn)行折疊*/
  17. border-collapse: collapse;
  18. }
  19. /*鼠標(biāo)懸停時(shí),讓當(dāng)前行顯示#868686這種灰色*/
  20. table tr:hover{
  21. background: #868686;
  22. }
  23. /*每個(gè)單元格的樣式*/
  24. table td{
  25. border:1px solid red;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <table>
  31. <tr>
  32. <td></td>
  33. <td></td>
  34. <td></td>
  35. <td></td>
  36. </tr>
  37. <tr>
  38. <td></td>
  39. <td></td>
  40. <td></td>
  41. <td></td>
  42. </tr>
  43. <tr>
  44. <td></td>
  45. <td></td>
  46. <td></td>
  47. <td></td>
  48. </tr>
  49. </table>
  50. </body>
  51. </html>

效果如下:

另外,介紹一下子代選擇器:用符號(hào)>表示

IE7開始兼容,IE6不兼容:

  1. div>p{
  2. color:red;
  3. }

div的兒子p。和div的后代p的截然不同。

能夠選擇:

  1. <div>
  2. <p>我是div的兒子</p>
  3. </div>

 

不能選擇:

  1. <div>
  2. <ul>
  3. <li>
  4. <p>我是div的重孫子</p>
  5. </li>
  6. </ul>
  7. </div>

序選擇器

IE8開始兼容;IE6、7都不兼容

設(shè)置無序列表<ul>中的第一個(gè)<li>為紅色:

  1. <style type="text/css">
  2. ul li:first-child{
  3. color:red;
  4. }
  5. </style>

設(shè)置無序列表<ul>中的最后一個(gè)<li>為紅色:

  1. ul li:last-child{
  2. color:blue;
  3. }

序選擇器還有更復(fù)雜的用法。

由于瀏覽器的更新需要過程,所以現(xiàn)在如果公司還要求兼容IE6、7,那么就要自己寫類名:

  1. <ul>
  2. <li class="first">項(xiàng)目</li>
  3. <li>項(xiàng)目</li>
  4. <li>項(xiàng)目</li>
  5. <li>項(xiàng)目</li>
  6. <li>項(xiàng)目</li>
  7. <li>項(xiàng)目</li>
  8. <li>項(xiàng)目</li>
  9. <li>項(xiàng)目</li>
  10. <li>項(xiàng)目</li>
  11. <li class="last">項(xiàng)目</li>
  12. </ul>

用類選擇器來選擇第一個(gè)或者最后一個(gè):

  1. ul li.first{
  2. color:red;
  3. }
  4. ul li.last{
  5. color:blue;
  6. }

下一個(gè)兄弟選擇器

IE7開始兼容,IE6不兼容。

 +表示選擇下一個(gè)兄弟

  1. <style type="text/css">
  2. h3+p{
  3. color:red;
  4. }
  5. </style>

上方的選擇器意思是:選擇的是h3元素后面緊挨著的第一個(gè)兄弟。

  1. <h3>我是一個(gè)標(biāo)題</h3>
  2. <p>我是一個(gè)段落</p>
  3. <p>我是一個(gè)段落</p>
  4. <p>我是一個(gè)段落</p>
  5. <h3>我是一個(gè)標(biāo)題</h3>
  6. <p>我是一個(gè)段落</p>
  7. <p>我是一個(gè)段落</p>
  8. <p>我是一個(gè)段落</p>
  9. <h3>我是一個(gè)標(biāo)題</h3>
  10. <p>我是一個(gè)段落</p>
  11. <p>我是一個(gè)段落</p>
  12. <p>我是一個(gè)段落</p>
  13. <h3>我是一個(gè)標(biāo)題</h3>

效果如下:

這種選擇器作用不大。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    中日韩免费一区二区三区| 精品人妻久久一品二品三品| 中文字幕一区二区熟女| 狠狠做深爱婷婷久久综合| 国产av天堂一区二区三区粉嫩| 中文人妻精品一区二区三区四区| 熟女免费视频一区二区| 国产不卡在线免费观看视频 | 国产午夜福利不卡片在线观看| 91在线国内在线中文字幕| 久热香蕉精品视频在线播放| 国产成人精品在线一区二区三区| 一区二区三区日本高清| 麻豆精品视频一二三区| 九七人妻一区二区三区| 精品人妻一区二区三区免费看| 丰满熟女少妇一区二区三区| 99精品人妻少妇一区二区人人妻| 中文字幕人妻一区二区免费| 国产成人精品综合久久久看| 色婷婷日本视频在线观看| 婷婷九月在线中文字幕| 欧美日韩亚洲精品在线观看| 91亚洲国产成人久久精品麻豆| 国产不卡最新在线视频| 日本精品最新字幕视频播放| 国产目拍亚洲精品区一区| 欧美精品中文字幕亚洲| 中文字幕禁断介一区二区| 能在线看的视频你懂的| 国产又粗又硬又大又爽的视频| 亚洲精品一区二区三区免| 激情亚洲一区国产精品久久| 91欧美一区二区三区成人| 冬爱琴音一区二区中文字幕| 人妻久久一区二区三区精品99| 久久婷婷综合色拍亚洲| 少妇肥臀一区二区三区| 福利视频一区二区在线| 亚洲视频一级二级三级| 亚洲精品福利视频在线观看|