成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么我喜歡在 CSS 中使用 RegEx

開(kāi)發(fā) 前端
在 CSS 中,也能用到與正則類(lèi)似的選擇器特性,為我們的樣式管理帶來(lái)諸多便利。別懷疑,以下就是如何在 CSS 里“以正則之名”提升效率的真實(shí)案例。

說(shuō)到正則(RegEx),我們第一反應(yīng)往往是“在編程中用來(lái)匹配或驗(yàn)證字符串”,比如做表單驗(yàn)證。但其實(shí)在 CSS 中,也能用到與正則類(lèi)似的選擇器特性,為我們的樣式管理帶來(lái)諸多便利。別懷疑,以下就是如何在 CSS 里“以正則之名”提升效率的真實(shí)案例。

當(dāng)類(lèi)名越來(lái)越多時(shí)

舉個(gè)例子:你在做一個(gè)商品列表頁(yè)面,每個(gè)商品都有可能是:

  • 新品(new)
  • 暢銷(xiāo)(best-seller)
  • 暫時(shí)缺貨(out-of-stock)
  • 甚至多種狀態(tài)疊加

如果你為這些狀態(tài)分別寫(xiě)不同的類(lèi),比如 .new.bestseller.out-of-stock,然后在 HTML 里瘋狂堆疊類(lèi)名,就會(huì)發(fā)現(xiàn) CSS 變得十分臃腫、不易維護(hù)。

CSS + “正則” = 雙贏

好消息是,CSS 提供了三種與正則思路類(lèi)似的特殊屬性選擇器,讓我們可以更靈活地篩選類(lèi)名。

(^) 插入符:匹配以某字符串開(kāi)頭的類(lèi)名。

  • 例:div[class^="card"] 匹配所有類(lèi)名以 card 開(kāi)頭的元素。

(*) 星號(hào):匹配在任意位置出現(xiàn)的子串。

  • 例:div[class*="new"] 匹配類(lèi)名里含有 new 的所有元素。

($) 美元符:匹配以特定字符串結(jié)尾的類(lèi)名。

  • 例:div[class$="prioritize"] 匹配類(lèi)名以 prioritize 結(jié)尾的元素。

有了它們,我們就能用更加簡(jiǎn)潔的方式來(lái)管理各種狀態(tài),而無(wú)需定義一堆獨(dú)立類(lèi)。

實(shí)踐例子:從混亂到優(yōu)雅

假設(shè)我們想給“新品”商品加一個(gè)“新”角標(biāo)或標(biāo)志,以往的做法是:

<div class="card new"></div>

然后在 CSS 里用 .new 做對(duì)應(yīng)樣式。但如果改用“正則”選擇器,我們可以只寫(xiě)一個(gè)帶有 new 的類(lèi)名,如:card-new

1. 給新品加標(biāo)識(shí)

div[class*="new"] {
    content: url('new-icon.png');
}

只要類(lèi)名里包含“new”,就會(huì)自動(dòng)加載新品圖標(biāo)。比如:

<div class="card-new"> ... </div>

即可匹配到這個(gè)規(guī)則。

2. 為暢銷(xiāo)商品加特殊背景

類(lèi)似地,如果類(lèi)名里含有 seller,可以這樣寫(xiě):

div[class*="seller"] {
    background-color: gold;
}

那么像 card-seller 或 card-new-seller 都會(huì)觸發(fā)該樣式。這樣一來(lái),如果有一個(gè)商品既是新品又是暢銷(xiāo),只要設(shè)置類(lèi)名為 card-new-seller,同時(shí)包含 new 和 seller,就能疊加兩種效果,無(wú)需再為多重狀態(tài)編寫(xiě)額外 CSS 規(guī)則。

處理缺貨商品 (out-of-stock)

對(duì)缺貨商品,可以在類(lèi)名中包含 out,例如:card-out。在 CSS 中只需寫(xiě):

div[class*="out"] {
    filter: grayscale(80%);
    opacity: 0.5;
}

結(jié)果就是所有帶 out 關(guān)鍵字的商品,都統(tǒng)一呈現(xiàn)“灰階 + 半透明”的視覺(jué)效果。而如果商品既是新品,又缺貨,又是暢銷(xiāo),只要類(lèi)名是 card-new-seller-out,就能自動(dòng)應(yīng)用所有相應(yīng)的樣式規(guī)則。

按優(yōu)先級(jí)排序

假設(shè)我們想讓有些商品在列表中排在最前面,可以用 prioritize 字樣。

div[class*="prioritize"] {
    order: -1; /* 在 flex 或 grid 容器中可以讓它排在前面 */
}

如果你希望把它放在末尾,可以改成:

div[class$="prioritize"] {
    order: 999;
}

另外,如果想排除缺貨的優(yōu)先級(jí)高商品,可以在選擇器加上 :not(),比如:

div[class*="prioritize"]:not([class*="out"]) {
    order: -1;
}

這樣就不會(huì)把“既優(yōu)先又缺貨”的商品也放到最前。

正則式選擇器小結(jié)

  • **^=**:定位以某字符串開(kāi)頭的類(lèi)名
  • ***=**:搜索類(lèi)名任意位置
  • **$=**:匹配以某字符串結(jié)尾的類(lèi)名

這三種方式讓我們可以“巧妙地”給不同類(lèi)名加上相同前綴或后綴,不同子字符串,就能輕松管理多重狀態(tài)。相比傳統(tǒng)的“一堆獨(dú)立類(lèi)再手動(dòng)組合”,這種寫(xiě)法更緊湊,維護(hù)起來(lái)也更輕松。

結(jié)語(yǔ)

“在 CSS 中用正則”聽(tīng)上去可能有點(diǎn)稀奇,但只要掌握了 ^, *, $ 這三個(gè)巧妙的小技巧,就能大幅簡(jiǎn)化對(duì)多狀態(tài)類(lèi)名的管理,讓你的 CSS 文件告別混亂。此外,與團(tuán)隊(duì)成員約定好“關(guān)鍵字”用法,還能讓協(xié)作更高效、風(fēng)格更統(tǒng)一。

如果覺(jué)得這篇分享對(duì)你有幫助,可以點(diǎn)個(gè)贊或告訴同事們——畢竟,靈活運(yùn)用這些選擇器,絕對(duì)能讓你的項(xiàng)目在維護(hù)性和可讀性方面更勝一籌。祝編碼愉快,玩轉(zhuǎn) CSS!

責(zé)任編輯:姜華 來(lái)源: 大遷世界
相關(guān)推薦

2012-04-04 22:07:12

Android

2019-10-23 15:53:16

JavaScript可選鏈對(duì)象

2009-06-04 17:33:08

EJB 3.1EJB 3.0

2019-08-28 10:53:35

JavaScriptOptional Ch代碼

2012-05-24 09:13:20

2023-09-14 08:00:00

基于主干的開(kāi)發(fā)分支模型

2017-09-11 19:58:06

PostgreSQLMySQL數(shù)據(jù)庫(kù)

2017-11-30 15:25:04

EclipseGo項(xiàng)目

2020-07-28 10:45:51

數(shù)據(jù)庫(kù)三范式MySQL

2015-10-26 09:58:53

程序員主流

2022-02-14 08:21:48

Linux元字符

2023-07-04 16:28:23

2020-02-25 15:14:13

程序員人生第一份工作睡眠

2018-01-15 05:54:45

數(shù)據(jù)庫(kù)讀寫(xiě)分離互聯(lián)網(wǎng)

2018-01-09 18:46:44

數(shù)據(jù)庫(kù)架構(gòu)讀寫(xiě)分離

2022-02-07 23:05:11

tailwindcsCSS框架

2022-03-03 23:30:27

TypeScrip開(kāi)發(fā)前端

2021-06-03 08:45:44

Linuxls命令

2021-05-17 11:30:08

Linuxls命令

2022-01-03 08:06:15

函數(shù)Go數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久草网免费 | 亚洲高清在线 | 欧美国产精品一区二区三区 | 91在线中文字幕 | 日日夜夜精品免费视频 | 久久精品国产亚洲 | 成人欧美一区二区三区色青冈 | 一级大黄 | 精品99久久久久久 | 九九热这里只有精品6 | 草草在线观看 | 欧美高清视频一区 | 日本不卡一区二区三区 | 91在线免费视频 | 天天草视频 | 少妇性l交大片免费一 | 免费在线一区二区 | 一区二区手机在线 | 国产色 | 欧美精品久久久久久 | 91免费看片 | 国产一区二区小视频 | 久久精品国产久精国产 | a视频在线观看 | 天天插天天操 | 超碰97免费 | 亚洲国产精品一区二区久久 | 亚洲 欧美 另类 综合 偷拍 | www亚洲精品 | 黄色免费网站在线看 | 二区亚洲 | 亚洲国产情侣自拍 | 亚洲国产精品激情在线观看 | 午夜免费福利影院 | heyzo在线| 午夜精品久久 | 日韩成人在线电影 | 99久久精品国产一区二区三区 | 亚洲一区二区三区在线观看免费 | 成人综合视频在线 | 岛国在线免费观看 |