首發時間:2018-03-02 css
修改:html
css能夠設置標籤的樣式,爲了更好的設置樣式以及爲了方便給某些標籤指定樣式(批量的給某些標籤增長樣式),因此有了css選擇器,css選擇器能夠篩選出指定的標籤。篩選出來以後就能夠給對應的標籤設置樣式。瀏覽器
css選擇器的定義由兩部分組成:一個是選擇器,一個是樣式定義,好比: 字體
標籤選擇器直接根據標籤名來選擇標籤,好比想篩選出全部div標籤,可使用spa
/* 選擇出全部標籤 */ *{ margin:0; padding:0; } /* 選擇出h1標籤 */ h1 {color:red; font-size:14px;} /* 選擇出p標籤 */ p { color: #ff0000; } /* 選擇出body標籤 */ body { margin: 0; padding: 0; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .center{ /* 樣式定義*/ text-align: center; } .normal{ font-weight:normal; } </style> </head> <body> <h1 class='center normal'>類選擇器</h1> <div class="center"></div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header{ /* 樣式定義*/ background-color: orange; width: 960px; height: 100px; margin:0 auto; } </style> </head> <body> <div id="header"></div> </body> </html>
並集選擇器(分組選擇器)由多個選擇器組成,是將指定的多個選擇器都定義一樣的樣式。多個選擇器的關係是並立的,至關於在本來單獨定義的基礎上合併定義。3d
使用,來分隔多個選擇器,好比至關於,因此明顯的並集選擇器能夠節省很多代碼。code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header,#footer{ width: 960px; margin:0 auto; } #header{ background-color: orange; height: 100px; } #footer{ background-color: skyblue; height: 500px; } h1,h2,h3{ color: green; margin:0; } </style> </head> <body> <div id="header"></div> <div id="footer"> <h1>百度</h1> </div> </body> </html>
交集選擇器由多個選擇器組成,只有同時符合多個選擇器的標籤纔會被選擇出來。orm
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style > div.a{ /* 選擇div標籤中class='a'的 */ background-color: blue; } </style> </head> <body> <div class='a'>1</div> <!-- 選中這個 --> <div >2</div> <div> <p class='a'>123</p> <!-- 與後代選擇器不一樣,這個不會被選中 --> </div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #header h1{ /* 選擇id爲header的標籤的後代中的h1標籤 */ color: green; } div .blue{/* 選擇div標籤的後代中class爲blue的標籤 */ color:blue; } </style> </head> <body> <div id="header"> <h1>header的標籤下的h1標籤</h1> </div> <div class="blue"> 這是一個class=blue的div標籤 <!-- 這個不會被div .blue選擇到 --> </div> <div > <h1 class="blue">div下面的class=blue的標籤</h1> </div> </body> </html>
一樣由多個選擇器組成,與後代選擇器不一樣的是它只會選擇直接子代,不會選擇出孫子標籤之類的非子標籤。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #footer > .blue{ color:blue; } </style> </head> <body> <div id="footer" > <h1 class="blue">id="footer"下面的子標籤</h1> <div> <span class="blue">id="footer"下面的非子標籤</span><!-- 這一個不會被選擇出來 --> </div> </div> </body> </html>
屬性選擇器使用[]來包裹屬性
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> [type]{ /* 選中包含type 屬性的標籤 */ border:1px solid red; } [type="text"]{ /* 選中type屬性="text"的標籤 */ color:green; } [class~="t1"]{ /* 選中class屬性包含t1的標籤 */ color:blue; } [name^="user"]{ /* 選中name屬性以user開頭的標籤 */ background-color: pink; } [name*="amy"]{ /* 選中name屬性字符串包含amy的標籤 */ background-color: purple; } </style> </head> <body> <div> <input type="text" > <input type="password" class="t1"> <input type="text" name="username"> <input type="text" name="AamyB"> </div> </body> </html>
若是須要選擇緊接在某個標籤後的一個標籤,並且兩者有相同的父標籤,可使用相鄰兄弟選擇器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style> h3+p{ /* 選擇h3後面的第一個p兄弟標籤 */ color:red; } </style> </head> <body> <h3>h3標籤</h3> <p>h3後的第1個標籤</p> <p>h3後的第2個標籤</p> <p>h3後的第3個標籤</p> <p>h3後的第4個標籤</p> </body> </html>
僞類選擇器原本是給某些標籤添加某些特殊效果的(好比設置當鼠標移到的時候的樣式)【後來增長了很多結構方面的選擇器】
目標僞類選擇器:
事件相關的僞類選擇器:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <style> a{ font-size:100px; } a:link{ /* 給全部未點擊過的a標籤增長上樣式*/ color: red; text-decoration:none; } a:visited{ /* 給點擊過的a標籤增長上樣式 */ color:purple; } a:hover{ /* 當鼠標移到a標籤上時,增長上樣式*/ color:green; } a:active{ /* 鼠標點擊過程當中顯示的樣式*/ background-color: pink; } #header:hover{ /* 當鼠標移到#header選擇出的標籤時,增長上樣式*/ background-color: blue; } </style> </head> <body> <a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a> <a href="#4">4</a> <div id="header"> div的內容 </div> </body> </html>
結構僞類選擇器:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> p{ font-size:20px; } p:first-child{/* 選擇第1個*/ color:red; } p:last-child{ /* 選擇最後一個*/ color:green; } p:nth-child(2){ /* 選擇第二個*/ color:pink; } p:nth-child(2n){ /* 選擇2,4,6,8.。。 */ background-color: gray; } p:nth-last-child(2n){/* 從後面開始數 選擇2,4,6,8.。。 */ background-color: skyblue; } </style> </head> <body> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </body> </html>
目標僞類選擇器:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> div:target{ /* 當元素活動是增長樣式 */ background-color: blue; } </style> </head> <body> <a href="#id1">123</a> <div id="id1"> 123456 </div> </body> </html>
僞元素選擇器能夠選擇非整個標籤的內容好比第一個字符(first-letter)、第一行(first-line);也能夠像插入一個標籤同樣在某個位置插入內容(before,after)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Document</title> <style> p:first-child::first-letter{ /* 給第一個字符設置樣式 */ font-size:30px; } p:nth-child(2)::first-line{ /* 給第一行設置樣式*/ background-color: skyblue; } p:nth-child(3)::selection{ background-color: orange; } p::before{ /* 在全部p標籤以前加上《論語》 */ content:"《論語》"; font-size:30px; } p::after{ /* 在全部p標籤以前加上 魯迅表示很無辜 */ content:" 魯迅表示說的對"; font-size:30px; } </style> </head> <body> <p>學而時習之,不亦說乎</p> <p>子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」</p> <p>曾子曰:「吾日三省吾身:爲人謀而不忠乎?與朋友交而不信乎?傳不習乎?」</p> </body> </html>