談談一些有趣的CSS題目(十)–結構性偽類選擇器
開本系列,談談一些有趣的 CSS
題目,題目型別天馬行空,想到什麼說什麼,不僅為了拓寬一下解決問題的思路,更涉及一些容易忽視的 CSS 細節。
解題不考慮相容性,題目天馬行空,想到什麼說什麼,如果解題中有你感覺到生僻的 CSS 屬性,趕緊去補習一下吧。
不斷更新,不斷更新,不斷更新,重要的事情說三遍。
談談一些有趣的CSS題目(二)– 從條紋邊框的實現談盒子模型
談談一些有趣的CSS題目(三)– 層疊順序與堆疊上下文知多少
談談一些有趣的CSS題目(四)– 從倒影說起,談談 CSS 繼承 inherit
談談一些有趣的CSS題目(五)– 單行居中,兩行居左,超過兩行省略
談談一些有趣的CSS題目(八)– 純CSS的導航欄Tab切換方案
所有題目彙總在我的 Github 。
十、結構性偽類選擇器(:root
,:target
,:empty
,:not
)
每一個 CSS 偽類及偽元素的出現,肯定都是為了解決某些先前難以解決的問題而應運而生的。
學習瞭解它們,是解決許多其他複雜 CSS 問題或者前沿技術的基礎。
這裡是 4 個基本的結構性偽類選擇器,結構性偽類選擇器的共同特徵是允許開發者根據文件樹中的結構來指定元素的樣式。
:root
偽類
:root
偽類匹配文件樹的根元素。應用到HTML,:root
即表示為<html>
元素,除了優先順序更高外,相當於html標籤選擇器。
語法樣式
1
|
:root { 樣式屬性 } |
譬如,:root{background:#000}
,即可將頁面背景色設定為黑色。
由於屬於 CSS3 新增的偽類,所以也可以作為一種 HACK 元素,只對 IE9+ 生效。
介紹 :root
偽類,是因為在介紹使用 CSS變數
的時候,宣告全域性CSS變數時 :root
很有用。
:empty
偽類
:empty
偽類,代表沒有子元素的元素。 這裡說的子元素,只計算元素結點及文字(包括空格),註釋、執行指令不考慮在內。
考慮一個例子:
1
2
3
4
5
6
7
|
div{ height : 20px ;
background : #ffcc00 ;
} div:empty{ display : none ;
} |
1
2
3
|
< div >1</ div >
< div > </ div >
< div ></ div >
|
上述的例子,前兩個div會正常顯示,而第三個則會 display:none
隱藏。
也就是說,要想 :empty
生效,標籤中連哪怕一個空格都不允許存在。
[Demo戳我::empty結構性偽類示例]
:not
偽類
CSS否定偽類,:not(X)
,可以選擇除某個元素之外的所有元素。
X不能包含另外一個否定選擇器。
關於 :not
偽類有幾個有趣的現象:
:not
偽類不像其它偽類,它不會增加選擇器的優先順序。它的優先順序即為它引數選擇器的優先順序。
我們知道,選擇器是有優先順序之分的,通常而言,偽類選擇的權重與類選擇器(class selectors,例如
.example
),屬性選擇器(attributes selectors,例如[type="radio"]
)的權重相同,但是有一個特例,就是:not()
。:not
否定偽類在優先順序計算中不會被看作是偽類,但是在計算選擇器數量時還是會把其中的選擇器當做普通選擇器進行計數。
-
使用
:not(*)
將匹配任何非元素的元素,因此這個規則將永遠不會被應用。 -
這個選擇器只會應用在一個元素上, 你不能用它在排除所有祖先元素。 舉例來說, body :not(table) a 將依舊會應用在table內部的
<a>
上, 因為<tr>
將會被:not() 這部分選擇器匹配。(摘自MDN)
:target
偽類
:target
偽類,在 #8、純CSS的導航欄Tab切換方案
中已經實踐過了,可以回過頭看看。
:target
代表一個特殊的元素,若是談論區別的話,它需要一個id去匹配文件URI的片段識別符號。
:target
選擇器的出現,讓 CSS 也能夠接受到使用者的點選事件,並進行反饋。(另一個可以接收點選事件的 CSS 選擇器是 :checked
)。
所有題目彙總在我的 Github ,發到部落格希望得到更多的交流。
到此本文結束,如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。
本文轉自ChokCoco部落格園部落格,原文連結:http://www.cnblogs.com/coco1s/p/6067305.html
相關文章
- 有趣的CSS題目(10):結構性偽類選擇器CSS
- CSS3新增選擇器(屬性選擇器、結構偽類選擇器、偽元素選擇器)CSSS3
- 徹底理解CSS結構偽類選擇器CSS
- CSS的總結(選擇器,偽類等…)CSS
- CSS 偽類選擇器CSS
- 談談一些有趣的CSS題目(十四)–純CSS方式實現CSS動畫的暫停與播放!CSS動畫
- CSS 連結偽類選擇器順序原理CSS
- 有趣的CSS題目(15): 談談 CSS 關鍵字 initial、inherit 和 unsetCSS
- CSS E:default 偽類選擇器CSS
- CSS E:disabled偽類選擇器CSS
- CSS E:disabled 偽類選擇器CSS
- CSS E:checked 偽類選擇器CSS
- CSS E:hover偽類選擇器CSS
- CSS E:hover 偽類選擇器CSS
- 談談一些有趣的CSS題目(六)–全相容的多列均勻佈局問題CSS
- 後端碼農談前端(CSS篇)第四課:選擇器補充(偽類與偽元素)後端前端CSS
- CSS偽類與偽元素選擇器區別CSS
- 一個選擇器工具。測試結構偽類選擇器方法
- CSS樣式中的通用選擇器和偽類選擇器CSS
- CSS :focus-within 偽類選擇器CSS
- CSS偽類選擇器是什麼CSS
- CSS @page:left列印偽類選擇器CSS
- CSS @page:first列印偽類選擇器CSS
- css偽類選擇符CSS
- CSS中一些利用偽類、偽元素和相鄰元素選擇器的技巧CSS
- CSS @page:right列印偽類選擇器CSS
- HTML表單及CSS選擇器、偽類和偽元素HTMLCSS
- 從分類到結構之CSS選擇器CSS
- css :target偽類選擇器簡單介紹CSS
- CSS E:lang()偽類選擇符CSS
- CSS選擇器(6)——偽元素CSS
- css選擇器分類總結CSS
- 目標偽類選擇器實現手風琴效果
- 笑談CSS的偽元素CSS
- CSS E::after 偽元素選擇器CSS
- 002---選擇器(標籤選擇器、類選擇器、id選擇器、偽類選擇器、萬用字元選擇器)字元
- CSS選擇器(5)——屬性選擇器CSS
- css選擇器的分類CSS