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

CSS 原生嵌套語法來了!

開發(fā) 前端
目前,CSS 原生嵌套語法處于開發(fā)者試用狀態(tài),CSS 工作組正在制定相關(guān)規(guī)范,Chrome 瀏覽器預(yù)計將于 112 版本正式推出 CSS 原生嵌套功能。

大家好,我是 CUGGZ。

最近在看 caniuse.com 時發(fā)現(xiàn),Chrome 和 Edge 瀏覽器將在 109 版本實(shí)驗性支持 CSS 原生嵌套語法!

圖片

1 月 10 日,Chrome 109 發(fā)布;1 月 26 日,Safari 技術(shù)預(yù)覽版 162 發(fā)布。這兩個瀏覽器版本都帶來了 CSS 嵌套的實(shí)驗性支持。Chrome 官方指出,添加將 CSS 樣式規(guī)則嵌套在其他樣式規(guī)則中的功能,將來自外部的選擇器與內(nèi)部規(guī)則相結(jié)合,以提高樣式表的模塊化和可維護(hù)性。

圖片

圖片

下面就來看看 CSS 嵌套語法是如何使用的!

基本概念

所謂的嵌套,就是將一個 CSS 規(guī)則放在另一個(嵌套規(guī)則)中,子規(guī)則的選擇器將相對于父規(guī)則的選擇器。這有利于代碼的模塊化和可維護(hù)性。原來只能在 CSS 預(yù)處理器中使用的嵌套功能,先在可以在原生 CSS 中使用。

其實(shí),CSS 嵌套和 Sass 的嵌套類似,比如,對于以下 CSS 樣式:

table.colortable td {
text-align:center;
}

table.colortable td.c {
text-transform:uppercase;
}

table.colortable td:first-child, table.colortable td:first-child+td {
border:1px solid black;
}

table.colortable th {
text-align:center;
background:black;
color:white;
}

如果使用 CSS 嵌套時,就是這樣的:

table.colortable {
& td {
text-align:center;
&.c { text-transform:uppercase }
&:first-child, &:first-child + td { border:1px solid black }
}
& th {
text-align:center;
background:black;
color:white;
}
}

可以看到,使用嵌套不僅消除重復(fù),相關(guān)規(guī)則的分組還提高了生成的 CSS 的可讀性和可維護(hù)性。

嵌套規(guī)則

嵌套規(guī)則可以使用嵌套選擇器(&) 直接引用父規(guī)則的匹配元素,或者使用相對選擇器語法指定“后代”以外的關(guān)系。

.foo {
color: red;

&:hover {
color: blue;
}
}

/* 相當(dāng)于: */

.foo { color: red; }
.foo:hover { color: blue; }
.foo {
color: red;

+ .bar {
color: blue;
}
}

/* 相當(dāng)于: */

.foo { color: red; }
.foo + .bar { color: blue; }

但是,以標(biāo)識符(類型選擇器)開始嵌套選擇器是無效的:

div {
color: red;

input {
margin: 1em;
}
}
/* 無效,因為 input 是一個標(biāo)識符 */

如果想繼續(xù)這樣編寫,就需要稍微進(jìn)行修改:

div {
color: red;

& input { margin: 1em; }
/* 有效,不再以標(biāo)識符開頭 */

:is(input) { margin: 1em; }
/* 有效,以冒號開頭,并且等同于之前的規(guī)則 */
}

更多嵌套規(guī)則詳見 CSS 嵌套規(guī)范草案:https://drafts.csswg.org/css-nesting/

嵌套選擇器

在使用嵌套規(guī)則時,必須能夠引用父規(guī)則匹配的元素。為此,規(guī)范中定義了一個新的選擇器,即嵌套選擇器,寫為 & 。

當(dāng)在嵌套樣式規(guī)則的選擇器中使用時,嵌套選擇器表示與父規(guī)則匹配的元素。當(dāng)在任何其他上下文中使用時,它表示與該上下文中的 :scope 相同的元素。

嵌套選擇器可以通過 :is() 選擇器將其替換為父樣式規(guī)則的選擇器。例如:

a, b {
& c { color: blue; }
}

這就相當(dāng)于:

:is(a, b) c { color: blue; }

嵌套選擇器不能表示偽元素(與 :is() 的行為相同):

.foo, .foo::before, .foo::after {
color: red;

&:hover { color: blue; }
}

這里,&? 只代表.foo匹配的元素,它等同于:

.foo, .foo::before, .foo::after {
color: red;
}

.foo:hover {
color: blue;
}

嵌套選擇器的特異性(權(quán)重)等于父樣式規(guī)則的選擇器列表中復(fù)雜選擇器中最大的特異性(與 :is() 的行為相同):

#a, b {
& c { color: blue; }
}

.foo c { color: red; }

DOM 結(jié)構(gòu)如下:

<b class=foo>
<c>Blue text</c>
</b>

文本將是藍(lán)色的,而不是紅色的。&? 的特異度是 #a?([1,0,0]) 和 b?([0,0,1]) 特異性中較大的一個,所以是 [1,0,0],而整個 & c? 選擇器具有特異性 [1,0,1],它大于 .foo c ([0,1,1]) 的特異性。

值得注意的是,這與將嵌套手動擴(kuò)展為非嵌套規(guī)則時得到的結(jié)果不同,因為 color: blue? 聲明將由 b c? 選擇器 ([0,0,2]) 匹配,而不是#a c ([1,0,1])。

小結(jié)

目前,CSS 原生嵌套語法處于開發(fā)者試用狀態(tài),CSS 工作組正在制定相關(guān)規(guī)范,Chrome 瀏覽器預(yù)計將于 112 版本正式推出 CSS 原生嵌套功能。

由于 CSS 嵌套語法規(guī)范尚未完成,隨時可能進(jìn)行更改。因此,本文所展示的規(guī)則可能會有所變化。期待不久的將來 CSS 原生嵌套語法登錄瀏覽器正式版本!

責(zé)任編輯:武曉燕 來源: 前端充電寶
相關(guān)推薦

2023-09-05 09:40:55

SCSS預(yù)處理器

2023-02-13 09:31:07

CSS前端

2023-12-13 12:41:59

原生CSS元素

2023-09-11 07:11:04

CSSNesting

2023-12-06 08:01:03

CSSPostCSS

2023-09-05 09:44:26

CSS處理器函數(shù)

2023-05-29 08:38:56

popover控制懸浮層

2024-07-19 08:13:00

2020-11-16 10:19:33

Java

2021-11-25 14:12:18

云原生容器技術(shù)

2017-01-13 09:54:52

2024-07-17 10:16:21

2024-05-23 10:34:15

CSS 3CSS技術(shù)

2010-08-25 09:30:56

marginCSS

2010-09-06 13:59:23

CSS縮寫

2010-09-06 13:15:48

CSS定位

2010-09-03 15:20:36

CSS組合CSS嵌套

2022-03-28 09:31:58

for循環(huán)語句

2010-09-14 16:04:40

CSSclip屬性
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产一区中文 | 成人免费一区二区三区视频网站 | 国产精品综合久久 | 日韩欧美在线免费观看 | 久久国产三级 | 精品一区二区免费视频 | 一级在线观看 | 香蕉婷婷 | 日韩欧美国产一区二区 | 中国一级大黄大片 | 久久这里只有精品首页 | 久久精品中文字幕 | 精品一区二区三区在线观看国产 | 男人天堂网址 | 一级片视频免费 | 丁香五月缴情综合网 | 天天干.com | 成人在线观看免费 | 国产精品精品久久久 | 久久亚 | 在线免费毛片 | 韩日av在线 | 2018中文字幕第一页 | 男女视频91 | 国产福利91精品 | 亚洲国产一区二区视频 | 欧美视频在线免费 | 最新毛片网站 | 日韩在线播放视频 | 欧美在线视频一区 | 日韩精品人成在线播放 | 一区二区视频在线 | 99视频网| 亚洲欧洲中文日韩 | 亚洲精品欧美一区二区三区 | 日韩欧美亚洲 | 91亚洲国产成人久久精品网站 | 亚洲黄色网址视频 | 成人在线免费电影 | 日韩一区二区三区视频 | 久久久亚洲综合 |