選擇器 | 類型 | 功能描述 |
---|---|---|
* | 通配選擇器 | 選擇文檔中全部的HTML元素 |
E | 元素選擇器 | 選擇指定類型的HTML元素 |
#id | ID選擇器 | 選擇指定ID屬性值爲「id」的任意類型元素 |
.class | 類選擇器 | 選擇指定class屬性值爲「class」的任意類型的任意多個元素 |
selector1,selectorN | 羣組選擇器 | 將每個選擇器匹配的元素集合並 |
選擇器 | 類型 | 功能描述 |
---|---|---|
E F | 後代選擇器(包含選擇器) | 選擇匹配的F元素,且匹配的F元素被包含在匹配的E元素內 |
E>F | 子選擇器 | 選擇匹配的F元素,且匹配的F元素所匹配的E元素的子元素,注意是直接子元素,不包括子元素裏的子元素 |
E+F | 相鄰兄弟選擇器 | 選擇匹配的F元素,且匹配的F元素緊位於匹配的E元素的後面 |
E~F | 通用選擇器 | 選擇匹配的F元素,且位於匹配的E元素後的全部匹配的F元素 |
選擇器 | 類型 | 功能描述 |
---|---|---|
E:link | 連接僞類選擇器 | 選擇匹配的E元素,並且匹配元素被定義了超連接並未被訪問過。經常使用於連接描點上 |
E:visited | 連接僞類選擇器 | 選擇匹配的E元素,並且匹配元素被定義了超連接並已被訪問過。經常使用於連接描點上 |
E:active | 用戶行爲選擇器 | 選擇匹配的E元素,且匹配元素被激活。經常使用於連接描點和按鈕上 |
E:hover | 用戶行爲選擇器 | 選擇匹配的E元素,且用戶鼠標停留在元素E上。IE6及如下瀏覽器僅支持a:hover |
E:focus | 用戶行爲選擇器 | 選擇匹配的E元素,並且匹配元素獲取焦點 |
選擇器 | 功能描述 |
---|---|
E:target | 選擇匹配E的全部元素,且匹配元素被相關URL指向 |
選擇器 | 類型 | 功能描述 |
---|---|---|
E:checked | 選中狀態僞類選擇器 | 匹配選中的複選按鈕或者單選按鈕表單元素 |
E:enabled | 啓用狀態僞類選擇器 | 匹配全部啓用的表單元素 |
E:disabled | 不可用狀態僞類選擇器 | 匹配全部禁用的表單元素 |
選擇器 | 功能描述 |
---|---|
E:fisrt-child | 做爲父元素的第一個子元素的元素E。與E:nth-child(1)等同 |
E:last-child | 做爲父元素的最後一個子元素的元素E。與E:nth-last-child(1)等同 |
E:root | 選擇匹配元素E所在文檔的根元素。在HTML文檔中,根元素始終是html,此時該選擇器與html類型選擇器匹配的內容相同 |
E F:nth-child(n) | 選擇父元素E的第n個子元素F。其中n能夠是整數(1,2,3)、關鍵字(even,odd)、能夠是公式(2n+1),並且n值起始值爲1,而不是0. |
E F:nth-last-child(n) | 選擇父元素E的倒數第n個子元素F。此選擇器與E:nth-child(n)選擇器計算順序恰好相反,但使用方法都是同樣的,其中:nth-last-child(1)始終匹配最後一個元素,與last-child等同 |
E:nth-of-type(n) | 選擇父元素內具備指定類型的第n個E元素 |
E:nth-last-of-type(n) | 選擇父元素內具備指定類型的倒數第n個E元素 |
E:first-of-type | 選擇父元素內具備指定類型的第一個E元素,與E:nth-of-type(1)等同 |
E:last-of-tye | 選擇父元素內具備指定類型的最後一個E元素,與E:nth-last-of-type(1)等同 |
E:only-child | 選擇父元素只包含一個子元素,且該子元素匹配E元素 |
E:only-of-type | 選擇父元素只包含一個同類型子元素,且該子元素匹配E元素 |
E:empty | 選擇沒有子元素的元素,並且該元素也不包含任何文本節點 |
注:(1),「ul>li:nth-child(3)」表達的並非必定選擇列表ul元素中的第3個子元素li,僅有列表ul中第3個li元素前不存在其餘的元素,命題纔有意義,不然不會改變列表第3個li元素的樣式。css
(2),:nth-child(n) 中參數只能是n,不能夠用其餘字母代替。html
(3),:nth-child(odd) 選擇的是奇數項,而使用:nth-last-child(odd) 選擇的倒是偶數項瀏覽器
選擇器 | 功能描述 |
---|---|
E:not(F) | 匹配全部除元素F外的E元素 |
選擇器 | 功能描述 | |
---|---|---|
[attribute] | 用於選取帶有指定屬性的元素。 | |
[attribute=value] | 用於選取帶有指定屬性和值的元素。 | |
[attribute~=value] | 用於選取屬性值中包含指定詞彙的元素。 | |
[[attribute\ | =value]](http://www.w3school.com.cn/cs... | 用於選取帶有以指定值開頭的屬性值的元素,該值必須是整個單詞。 |
[attribute^=value] | 匹配屬性值以指定值開頭的每一個元素。 | |
[attribute$=value] | 匹配屬性值以指定值結尾的每一個元素。 | |
[attribute=value*] | 匹配屬性值中包含指定值的每一個元素。 |
下面選擇幾個咱們通常不經常使用的選擇器來說講ide
選擇緊接在另外一個元素以後的第一個元素(同級元素)spa
<style> h1 + p { color:red; } </style> <h1>彭</h1> <p>於晏</p>
看一個該選擇器應用的典型例子ssr
<style> body,div{ margin: 0; padding: 0; } .box{ width:400px; } .box > div{ width:100px; height: 35px; line-height: 35px; text-align: center; float:left; border: 3px solid #dedede; box-sizing: border-box; } </style> </head> <body> <div class="box"> <div>HTML</div> <div>CSS</div> <div>JavaScript</div> <div>Node.js</div> </div>
能夠看到後面幾個元素的左邊框明顯增大了3px,這裏咱們只須要用+號選擇器把除第一個元素之外的左邊框去掉就能夠l3d
.box > div + div{ border-left: none; }
a:active - 連接被點擊的那一刻code
當設置爲若干鏈路狀態的樣式,也有一些順序規則:orm
body,div{ margin: 0; padding: 0; } ul{ list-style: none; //讓列表前的標記再也不顯示 } .box{ width:450px; margin: 100px; } .box > ul li{ width: 120px; height:35px; line-height: 35px; text-align: center; float: left; border: 1px solid #dedede; box-sizing: border-box; } .box > ul >li li{ border-top:none; } .box > ul >li +li{ border-left: none; } .box > ul >li >ul{ display: none; } .box > ul >li:hover ul{ display: block; //主要代碼 } </style> <div class="box"> <ul> <li> 追夢人 <ul> <li>博客動態</li> </ul> </li> <li> CSS3 <ul> <li>CSS3文章</li> <li>CSS3技巧</li> </ul> </li> <li> HTML5 <ul> <li>HTML5最新動態</li> <li>HTML5使用教程</li> </ul> </li> </ul> </div>
<style> body,div{ margin: 0; padding: 0; } .box{ width:120px; height:100px; line-height: 100px; text-align: center; margin: 100px auto; background-color: pink; transition: all 1s; } .box:active{ padding:100px; } </style> <div class="box"> 點擊獲取能量... </div>
選中第一個字htm
選中首行文字
當沒有子元素,而且沒有文本節點的時候,:empty會被觸發,能夠利用:empty給默認提示
<style> body,div,ul{ margin: 0; padding: 0; } .box{ margin:100px; } ul{ margin-top;10px; } ul{ margin-top: 10px; } ul:empty::after{ content:'留言空空如也' } </style> <div class="box"> <input type="text"> <ul></ul> </div>
當ul沒有內容的時候,會顯示一條默認的信息。一旦加上內容,默認信息就會隱藏,不過須要注意的是,ul不能換行,必須這樣寫。
獲取當前描點的那個元素
實現換膚功能
<style> body,div{ margin: 0; padding: 0; } .box > div{ position: absolute; left:0; top:0; width:100%; height: 100%; z-index: -1; } #bg1:target{ background-color: #61dafb; } //當#bg1元素爲target(目標元素)是的style #bg2:target{ background-color: #e9203d; } #bg3:target{ background-color: #017fff; } </style> <div class="box"> <nav> <a href="#bg1">春</a> <a href="#bg2">夏</a> <a href="#bg3">秋</a> </nav> <div id="bg1"></div> <div id="bg2"></div> <div id="bg3"></div> </div>
當id爲bg1,bg2和bg3的元素爲目標元素時的style相同時,能夠直接設置
<style> body,div{ margin: 0; padding: 0; } .box > div{ position: absolute; left:0; top:0; width:100%; height: 100%; z-index: -1; } target{ background-color: #61dafb; } </style> <div class="box"> <nav> <a href="#bg1">春</a> <a href="#bg2">夏</a> <a href="#bg3">秋</a> </nav> <div id="bg1"></div> <div id="bg2"></div> <div id="bg3"></div> </div>
利用target實現遮罩層
<style> body,div{ margin: 0; padding: 0; } #show{ text-decoration: none; color: #e9203d; } #show div{ position: fixed; left: 50%; top:50%; width:200px; height: 200px; transform: translate(-50%,-50%);//實現垂直水平居中 border:10000px solid rgba(0,0,0,0.3);//灰色背景是border,所以設置的很大 display: none; } #show:target > div{ display: block; } #hide:target{ display: none; } </style> <div class="box"> <a href="#show">彈出層</a> <a href="#hide" id="show"> <div id="hide">彈彈彈</div> </a> </div>
實現tab欄切換
<style> body,div{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; text-align: center; margin: 100px auto; } .title{ overflow: hidden; } .title > a{ float: left; width:100px; height: 35px; line-height: 35px; border:1px solid #dedede; box-sizing: border-box; text-decoration: none; } .title > a:not(:first-of-type){ border-left: none; } .content{ position: relative; } .content > div{ position: absolute; left:0; top:0; width:100%; height: 200px; line-height: 200px; border:1px solid #dedede; background-color: #61dafb; border-top:none; box-sizing: border-box; } #content1{ z-index: 1; } #content1:target,#content2:target,#content3:target{ z-index: 999; } </style> <div class="box"> <nav class="title"> <a href="#content1">CSS</a> <a href="#content2">HTML</a> <a href="#content3">JavaScript</a> </nav> <div class="content"> <div id="content1">CSS</div> <div id="content2">HTML</div> <div id="content3">JavaScript</div> </div> </div>