1. 程式人生 > >從零開始前端學習[29]:Css3中新增加的選擇器一

從零開始前端學習[29]:Css3中新增加的選擇器一

Css3中新增加的選擇器

  • 以前的選擇器
  • 新增加的選擇器

以前的選擇器

萬用字元選擇器

*{margin:10px auto;padding:10px}

ID選擇器:

#main{width:100px;height:100px;background:blue;}

class類選擇器

.main{width:1200px;height;50px;background:green;}

標籤選擇器

a{color:red;font:bold 22px/30px ""}

組合選擇器

.main div #box1{width:100px;height:100px;background:#152345}

後代選擇器

.main .p_style{color:white;font:bolder 18px/22px "";width:100px;height:22px} 

子代選擇器

.main>p{width:100px;height:100px;box-shadow:0 0 10p 0 blue}

毗鄰選擇器

div+p{height:100px;width:100px;border:1px solid green;}

屬性選擇器

E[attr=val][attr]{height:100px;width:100px;border:1px solid green;}
div[class~="somebody"]{height: 100px; width: 100px;} //屬性包含選擇器

偽類選擇器

div:hover{height: 100px; width: 100px; background: deeppink;}

新增加的選擇器

關聯選擇器

E1~E2(選擇E1後面緊鄰的E2元素)//注意與毗鄰選擇器的區別其會跳過中間其他的,而毗鄰選擇器如果遇到下一個標籤不是,則終止
 .box1 p~p{ background: deeppink; }
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title
>
<meta charset="UTF-8"><!--申明當前網頁的編碼集UTF-8--> <meta name="Generator" content="EditPlus®"> <!--編輯器的名稱--> <meta name="Author" content="作者是誰"> <meta name="Keywords" content="關鍵詞"> <meta name="Description" content="描述和簡介"> <style type="text/css"> body,dl,dd,dt,p,h1,h2,h3,h4,h5,h6{ margin: 0;} ul,ol{margin: 0; list-style: none; padding: 0;} a{ text-decoration: none; } *{ margin: 0; padding: 0; } .main{width: 1200px ;margin: 20px auto} .main div{width: 200px;margin: auto;box-shadow: 0 0 10px 0 #00dd00} .main div p,.main div div{width: 40px;height: 40px;box-shadow: 0 0 10px 0 #000;margin: auto} .main .box1 p~p{background: greenyellow} /**關聯選擇器*/ .main .box2 p+p{background: greenyellow} /**毗鄰選擇器*/ </style> </head> <body> <div class="main"> <div class="box1"> 關聯選擇器 <p></p> <p></p> <p></p> <p></p> <div></div> <p></p> </div> <div class="box2"> 毗鄰選擇器 <p></p> <p></p> <p></p> <p></p> <div></div> <p></p> </div> </div> </body> </html>

顯示如下:這裡寫圖片描述

模糊包含選擇器

模糊包含也就是類似於我們的正則表示式:
1:特殊符號^,表示以什麼開頭

^="text" 以text作為開頭的類選擇器
p[class^="text"]{ height: 100px; width: 100px; background: deeppink; }

2:特殊符號$表示以什麼結尾

$="text" 以text作為結尾的選擇器
p[class$="text"]{ height: 100px; width: 100px; background: deeppink; }

3:特殊符號*,表示包含什麼

*="text"只要包含text的,
p[class$="text"]{ height: 100px; width: 100px; background: deeppink; }

注意這三種運算子與屬性運算子之間的區別,如果屬性運算子E[class~=”aaaa”],aaaa表示的是一個完整的類名,而上述的三種其實都是在類名字串中所做的一些模糊匹配

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta charset="UTF-8"><!--申明當前網頁的編碼集UTF-8-->
  <meta name="Generator" content="EditPlus®">   <!--編輯器的名稱-->
  <meta name="Author" content="作者是誰">       
  <meta name="Keywords" content="關鍵詞">
  <meta name="Description" content="描述和簡介">
  <style type="text/css">                                        
        body,dl,dd,dt,p,h1,h2,h3,h4,h5,h6{ margin: 0;}
        ul,ol{margin: 0; list-style: none; padding: 0;}
        a{ text-decoration: none; }
        *{ margin: 0; padding: 0; }
    .main{width: 1200px ;margin: 20px auto}
    .main div{width: 200px;margin: auto;box-shadow: 0 0 10px 0 #00dd00}
    .main div p,.main div div{width: 40px;height: 40px;box-shadow: 0 0 10px 0 #000;margin: auto}
    .main .box1 p[class^="head"]{background: greenyellow} /*  ^表示以head開頭的模糊匹配*/
    .main .box1 p[class$="footer"]{background: deeppink} /*  $表示以footer結尾的模糊匹配*/
    .main .box1 p[class*="middle"]{background: blue}   /*  *表示包含middle的類*/
    .main .box1 p[class~="p1_1"]{background: brown}   /*表示屬性中必須是一個完整的名字*/
  </style>
</head>
<body>
<div class="main">
  <div class="box1">
    模糊匹配選擇器
    <p class="headtext1"></p>
    <p class="textfooter"></p>
    <p class="textmiddlefooter"></p>
    <div></div>
    <p class="p1 p1_1 p1_2"></p>
    <p></p>
  </div>
</div>
</body>
</html>

這裡寫圖片描述

新增加的偽類選擇器:first-of-type,last-of-type,only-of-type,nth-of-type(n),nth-last-of-type

first-of-type主要是篩選出父類中所有相同的子元素,然後選出其中的第一個

p:first-of-type{background:blue};
從父元素中篩選出所有的p元素,然後將第一個賦值

last-of-type主要是篩選出所有相同的子元素,然後對最後一個進行賦值

p:last-of-type{background:green}
篩選出父級中所有的p元素,然後對最後一個進行賦值

only-of-type主要篩選出父級元素中所有的標籤,判斷裡面是否是唯一的,如果是唯一的則選出,如果不是唯一的,則不會選中

pre:only-of-type{background:deeppink}
篩選出父級中唯一的pre標籤

nth-of-type(n);按照順序的方式, 主要是篩選出所有相同的子元素,然後選中其中的第n個元素,注意下表從1開始

p:nth-of-type(3){background:black;}
按照順序的方式,主要是篩選出所有相同的子元素,然後選中其中的第3個p元素

nth-last-of-type(n);按照逆序的方式,主要是篩選出所有相同子元素,然後按照逆序的形式選中其中的第n個元素,注意下標從1開始

p:nth-last-of-type(3){background:gold;}
按照逆序的方式,主要是篩選出所有相同的子元素,然後選中其中的第3個p元素

程式碼如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta charset="UTF-8"><!--申明當前網頁的編碼集UTF-8-->
  <meta name="Generator" content="EditPlus®">   <!--編輯器的名稱-->
  <meta name="Author" content="作者是誰">       
  <meta name="Keywords" content="關鍵詞">
  <meta name="Description" content="描述和簡介">
  <style type="text/css">                                        
        body,dl,dd,dt,p,h1,h2,h3,h4,h5,h6{ margin: 0;}
        ul,ol{margin: 0; list-style: none; padding: 0;}
        a{ text-decoration: none; }
        *{ margin: 0; padding: 0; }
    .main{width: 1200px ;margin: 20px auto}
    .main div{width: 200px;margin: auto;box-shadow: 0 0 10px 0 #00dd00}
    .main div p,.main div div,.main div pre{width: 40px;height: 40px;box-shadow: 0 0 10px 0 #000;margin: auto}
    .main div p:first-of-type{background: green}
    .main div p:last-of-type{background: blue}
    .main .box1 pre:only-of-type{background: deeppink}
    .main div p:nth-of-type(5){background: gold}
    .main div p:nth-last-of-type(3){background: darkmagenta}
  </style>
</head>
<body>
<div class="main">
  <div class="box1">
    first-of-type<br>
    last-type-of<br>
    only-of-type
    <div>1</div>
    <p >2</p>
    <p >3</p>
    <p >4</p>
    <pre>5</pre>
    <p >6</p>
    <p>7</p>
    <div>8</div>
    <p >9</p>
    <p>10</p>
    <p >11</p>
    <p>12</p>
  </div>
</div>
</body>
</html>

顯示如下所示:

這裡寫圖片描述

偽類選擇器child系列之only-child,last-child,nth-child,nth-last-child;

首先child是子類的意思,這組偽類選擇器也就是選中在某個位置的子類,注意是從1開始的下標,子類標籤對應的位置和其偽類對應都要相互對應,中間不能包括文字或其他標籤

only-child排列在第一個位置的標籤的選擇

  .main div div:first-child{background: green}
  注意這裡的div必須是排列在父類中的第一個元素

last-child排列在最後一個元素

 .main div p:last-child{background: darkmagenta}
  注意這裡的p必須是排列在父類中的最後一個元素

nth-child(n)

.main div p:nth-child(3){background: blue}
注意這裡的p必須是排列在父類中的第三個元素,並且元素對應的標籤是p

nth-last-child(n)

.main .box1 pre:nth-last-child(8){background: deeppink}
注意這裡的p必須是排列在父類中的倒數第8個元素,並且元素對應的標籤是pre

例項程式碼如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta charset="UTF-8"><!--申明當前網頁的編碼集UTF-8-->
  <meta name="Generator" content="EditPlus®">   <!--編輯器的名稱-->
  <meta name="Author" content="作者是誰">       
  <meta name="Keywords" content="關鍵詞">
  <meta name="Description" content="描述和簡介">
  <style type="text/css">                                        
        body,dl,dd,dt,p,h1,h2,h3,h4,h5,h6{ margin: 0;}
        ul,ol{margin: 0; list-style: none; padding: 0;}
        a{ text-decoration: none; }
        *{ margin: 0; padding: 0; }
    .main{width: 1200px ;margin: 20px auto}
    h3{text-align: center}
    .main div{width: 200px;margin: auto;box-shadow: 0 0 10px 0 #00dd00;text-align: center}
    .main div p,.main div div,.main div pre{width: 40px;height: 40px;box-shadow: 0 0 10px 0 #000;margin: auto}
    .main div div:first-child{background: green}
    .main div p:nth-child(3){background: blue}
    .main .box1 pre:nth-last-child(8){background: deeppink}
    .main div p:last-child{background: darkmagenta}
  </style>
</head>
<body>
<div class="main">
  <h3>first-child, last-child, nth-child,nth-last-child</h3>
  <div class="box1">

    <div>1</div>
    <p >2</p>
    <p >3</p>
    <p >4</p>
    <pre>5</pre>
    <p >6</p>
    <p>7</p>
    <div>8</div>
    <p >9</p>
    <p>10</p>
    <p >11</p>
    <p>12</p>
  </div>
</div>
</body>
</html>

這裡寫圖片描述

以上就是關於新增加的一些偽類選擇器