7個讓你眼前一亮的CSS選擇器驶鹉!

1. :is()

mdn: CSS 偽類函數(shù)以選擇器列表作為參數(shù)谆焊,并選擇該列表中任意一個選擇器可以選擇的元素蹲坷。這對于以更緊湊的形式編寫大型選擇器非常有用

備注: 最初該選擇器被命名為 :matches()以及 :any()),但在 CSSWG issue #3258 中被重命名為 :is()

選中header main footer中的所有段落并綁定hover狀態(tài):

header p:hover,
main p:hover,
footer p:hover {
  color: red;
}

使用 :is() 可以簡化成以下寫法:

:is(header, main, footer) p:hover {
  color: red;
}

2. :where()

mdn: CSS 偽類函數(shù)接受選擇器列表作為它的參數(shù)塞祈,將會選擇所有能被該選擇器列表中任何一條規(guī)則選中的元素

用法:

選中header main footer中的所有段落并綁定hover狀態(tài):

header p:hover,
main p:hover,
footer p:hover {
  color: red;
}

使用 :where() 可以簡化成以下寫法:

:where(header, main, footer) p:hover {
  color: red;
}

是不是感覺:is():where()的用法一模一樣金刁?

:is():where()的用法和作用是很相似的,唯一不同的在于议薪,:where() 的優(yōu)先級總是為 0尤蛮,但是 :is() 的優(yōu)先級是由它的選擇器列表中優(yōu)先級最高的選擇器決定的

3. :not()

:not() CSS偽類用來匹配不符合一組選擇器的元素。由于它的作用是防止特定的元素被選中斯议,它也被稱為反選偽類negation pseudo-class)**

用法:

<p>我是一個段落产捞。</p>
<p class="fancy">我非常非常喜歡!</p>
<div>我不是一個段落哼御。</div>
<h2>
  <span class="foo">foo 在 h2 里面</span>
  <span class="bar">bar 在 h2 里面</span>
</h2>
.fancy {
  text-shadow: 2px 2px 3px gold;
}

/* 類名不是 `.fancy` 的 <p> 元素*/
p:not(.fancy) {
  color: green;
}

/* 非 <p> 元素 */
body :not(p) {
  text-decoration: underline;
}

/* 既不是 <div> 也不是 <span> 的元素 */
body :not(div):not(span) {
  font-weight: bold;
}

/* 不是 <div> 或 `.fancy` 的元素*/
body :not(div, .fancy) {
  text-decoration: overline underline;
}

/* <h2> 元素中不是有 `.foo` 類名的 <span> 元素 */
h2 :not(span.foo) {
  color: red;
}

4. :only-child

:only-child CSS 偽類表示沒有任何兄弟元素的元素坯临。這與 :first-child焊唬、:last-child:nth-child(1)、:nth-last-child(1) 相同看靠,但前者具有更小的權(quán)重性赶促。

用法

<ol>
  <li>今天天氣晴朗,是個敲代碼的好日子</li>
</ol>

<ol>
  <li>今天天氣晴朗挟炬,是個敲代碼的好日子</li>
  <li>但是寫了很多bug.</li>
  <li>這很讓我頭疼.</li>
</ol>
li:only-child {
  color: fuchsia;
}

b:only-child {
  text-decoration: underline;
}
運行效果

5. :root

:root 這個 CSS 偽類匹配文檔樹的根元素鸥滨。對于 HTML 來說,:root 表示<html>元素谤祖,除了優(yōu)先級更高之外婿滓,與 html 選擇器相同。

用法:

你可以使用:root選擇器定義一個變量--main-bg-color粥喜,并在任意一個選擇器中使用var來調(diào)用--main-bg-color

:root {
  --main-bg-color: lightgreen;
}
.main {
  background: var(--main-bg-color);
}

6. :empty

:empty CSS偽類用于選擇不包含任何子元素的元素凸主。子元素可以是元素節(jié)點或文本(包括空格)。但是注釋容客、處理指令和 CSS content不會影響元素是否被認定為空。

用法:

<p>下面的節(jié)點沒有內(nèi)容</p>
<div></div>
<p>下面的節(jié)點有空的標簽</p>
<div>
  <p>123456</p>
</div>

<p>下面的節(jié)點有注釋</p>
<div><!-- 這里是注釋 --></div>

<p>下面的節(jié)點有空格</p>
<div> </div>

<p>下面的節(jié)點有空的標簽</p>
<div>
  <p></p>
</div>
div:empty {
  outline: 2px solid deeppink;
  height: 1em;
  width: 100px;
}
運行效果

7. :invalid

:invalid 是 CSS偽類選擇器约郁,用來選擇任何未通過驗證的<form>缩挑、<fieldset><input>或其他表單元素鬓梅。

<form>
    <label for="form-name">姓名</label>
    <input type="text" name="name" id="form-name" required />
    <button type="submit">提交</button>
</form>
form:invalid > button {
  opacity: 0.3;
  pointer-events: none;
}

填入內(nèi)容前/后的效果對比:

運行效果

本文由mdnice多平臺發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末供置,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绽快,更是在濱河造成了極大的恐慌芥丧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坊罢,死亡現(xiàn)場離奇詭異续担,居然都是意外死亡,警方通過查閱死者的電腦和手機活孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門物遇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人憾儒,你說我怎么就攤上這事询兴。” “怎么了起趾?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵诗舰,是天一觀的道長。 經(jīng)常有香客問我训裆,道長眶根,這世上最難降的妖魔是什么蜀铲? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮汛闸,結(jié)果婚禮上蝙茶,老公的妹妹穿的比我還像新娘。我一直安慰自己诸老,他們只是感情好隆夯,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著别伏,像睡著了一般蹄衷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厘肮,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天愧口,我揣著相機與錄音,去河邊找鬼类茂。 笑死耍属,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巩检。 我是一名探鬼主播厚骗,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兢哭!你這毒婦竟也來了领舰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤迟螺,失蹤者是張志新(化名)和其女友劉穎冲秽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矩父,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡锉桑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窍株。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨仑。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夹姥,靈堂內(nèi)的尸體忽然破棺而出杉武,到底是詐尸還是另有隱情,我是刑警寧澤辙售,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布轻抱,位于F島的核電站,受9級特大地震影響旦部,放射性物質(zhì)發(fā)生泄漏祈搜。R本人自食惡果不足惜较店,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望容燕。 院中可真熱鬧梁呈,春花似錦、人聲如沸蘸秘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醋虏。三九已至寻咒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颈嚼,已是汗流浹背毛秘。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阻课,地道東北人叫挟。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像限煞,于是被迫代替她去往敵國和親抹恳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • ? CSS選擇器用于選取目標DOM節(jié)點以便對該其增加樣式晰骑,更改其在網(wǎng)頁的展示效果适秩。如今的網(wǎng)頁CSS只有一個作用域绊序,...
    果汁涼茶丶閱讀 1,463評論 2 3
  • 先來思考一個問題骤公,我們?yōu)槭裁葱枰狢SS選擇器抚官? 反過來想,如果沒有CSS選擇器阶捆,那么會出現(xiàn)哪些現(xiàn)象呢凌节?我認為會出現(xiàn)...
    讀行筆記閱讀 662評論 0 4
  • CSS 偽類是用來添加一些選擇器的特殊效果。 由于狀態(tài)的變化是非靜態(tài)的洒试,所以元素達到一個特定狀態(tài)時倍奢,它可能得到一個...
    動億下閱讀 110評論 0 0
  • CSS基本選擇器 要想為指定的HTML元素添加CSS樣式,首先需要選中該元素垒棋。在CSS中卒煞,執(zhí)行這一選擇操作規(guī)則部分...
    組團學(xué)閱讀 433評論 0 0
  • 關(guān)注我的個人博客:https://pinbolei.cn,獲取更多內(nèi)容 1叼架、CSS3的概念和優(yōu)勢 A畔裕、CSS3的概...
    pinbolei閱讀 793評論 0 3