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

現(xiàn)代 CSS 解決方案:原生嵌套(Nesting)

開發(fā) 前端
今天(2023-09-02),CSS 原生嵌套 Nesting 終于成為了既定的規(guī)范!大部分同學對嵌套應該還是非常熟悉的,下面我們一起看看,CSS 原生嵌套的能力邊界,語法支持范圍。

很早之前,就寫過一篇與原生嵌套相關的文章 -- CSS 即將支持嵌套,SASS/LESS 等預處理器已無用武之地?,彼時 CSS 原生嵌套還處于工作草案 Working Draft (WD) 階段,而今天(2023-09-02),CSS 原生嵌套 Nesting 終于成為了既定的規(guī)范!

CSS 原生嵌套語法

在之前,只有在 LESS、SASS 等預處理器中,我們才能使用嵌套的寫法,像是這樣:

div {
    & > p {
        color: red;
    }

    &:hover {
        color: yellow;
    }
}

從 Chrome 112 開始,原生 CSS 也可以使用嵌套語法了。

其語法規(guī)則大致如下:

parentRule {
  /* parent rule style properties */
  & childRule {
    /* child rule style properties */
  }
}

CSS 原生嵌套語法能力邊界

大部分同學對嵌套應該還是非常熟悉的,下面我們一起看看,CSS 原生嵌套的能力邊界,語法支持范圍。

支持嵌套,并且支持多層嵌套

這個很好理解,直接看 DEMO:

<div class="g-container">
    <h3 class="g-h3">CSS 
        <span class="g-span">Nesting</span>
    </h3>
</div>
div {
    border: 1px solid #000;
    
    .g-h3 {
        color: red;
        
        .g-span {
            color: blue;
        }
    }
}

效果如下:

圖片

當然,這里有個值得注意的點。如果我們不使用具體的 ClassName,而是使用標簽名稱選擇器,像是這樣:

div {
    border: 1px solid #000;
    
    h3 {
        color: red;
        
        span {
            color: blue;
        }
    }
}

嵌套規(guī)則是不會生效的,此時,我們需要在標簽名稱選擇器前,加上 & 符合:

div {
    border: 1px solid #000;
    
    & h3 {
        color: red;
        
        & span {
            color: blue;
        }
    }
}

與 SASS 等類似,& 符號在嵌套中,也表示嵌套的父選擇器本身,因此,上面兩個嵌套選擇器最終的表達式實則為:

  • div h3 { color: red }。
  • div h3 span { color blue }。

在嵌套中使用偽元素和偽類

直接上代碼,這個也是傳統(tǒng) CSS 預處理器支持的內容:

div {
  /* ... */
  &:hover {
    color: red;
  }

  &:is(.content, footer) {
    padding: 16px;
  }

  &::before {
    content: "";
    /* ... */
  }
}

上述代碼中,我們能夠在嵌套中使用偽類、偽元素。

在嵌套中使用媒體查詢

這個就比較有意思了,我們甚至可以在嵌套中,使用媒體查詢語法。

<div class="g-container">
    <h3>CSS Nesting without @media</h3>
</div>
<div class="g-container media">
    <h3>CSS Nesting with @media</h3>
</div>
.media {
  @media (min-width: 600px) {
      & h3 {
          color: red;
      }
  }
}

此時,下方帶有 .media class 的容器,在視口寬度大于 600px 的時候,設置 color: red。

效果如下:

圖片

完整的 DEMO,你可以戳這里試一下:CodePen Demo -- CSS Nesting Demo

在嵌套中嵌套自身

哈?什么是在嵌套中嵌套自身?

其實也很好理解,也就是 & 符號的時候,上面提到了,& 符號在嵌套中,也表示嵌套的父選擇器本身,因此,我們還可以有這樣的寫法:

div {
    & h2 & {
        /* 表示 div h2 div {} */
    }
}

這種寫法也是允許的,我們只需要將 & 替換成 div 即可,此時表示 div h2 div {}。

總結一下

總結而言,CSS 原生的嵌套功能相當強大,基本是傳統(tǒng)預處理器的平替。使用嵌套規(guī)則的好處在于:

  • 更加易讀和易維護,嵌套幫助我們編寫更易于維護的 CSS,基于嵌套,我們可以更好的控制樣式的作用域
  • 更少的代碼,嵌套幫助我們編寫更少的代碼,因為我們不需要一遍又一遍地重復父選擇器

隨著兼容性的鋪開,慢慢地,我們可以嘗試真正運用它們到實際代碼中。

責任編輯:姜華 來源: iCSS前端趣聞
相關推薦

2022-04-07 07:31:30

CSSCSS Reset前端

2022-04-19 06:27:13

CSS數(shù)學函數(shù)calc

2022-12-22 08:34:22

CSS不規(guī)則圖形

2022-04-28 07:00:09

min()max()clamp()

2017-05-14 16:02:45

前端開發(fā)標簽嵌套

2023-01-27 09:14:35

CSS原生嵌套

2021-02-22 18:08:38

農業(yè)物聯(lián)網IOT

2013-04-25 14:26:54

GridView

2010-09-06 14:46:25

CSSXHTML

2010-09-16 09:26:57

CSS display

2023-12-13 12:41:59

原生CSS元素

2023-12-13 11:37:32

2021-10-18 07:58:33

MyBatis Plu數(shù)據(jù)庫批量插入

2010-08-31 16:09:04

DIV+CSS

2010-09-06 13:51:38

CSS失效CSS

2010-08-26 14:00:28

CSSmargin

2010-09-01 10:49:57

CSS水平居中垂直居中

2009-08-03 18:06:28

JS性能問題

2023-12-06 08:01:03

CSSPostCSS

2012-05-27 16:21:31

IDC華為
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操操操操操 | 久久久久国产精品午夜一区 | 亚洲综合色婷婷 | 男女网站免费 | 欧美在线一二三 | 91在线精品秘密一区二区 | 亚洲日韩中文字幕一区 | 色播99| 中文字幕免费视频 | 午夜精品一区二区三区在线视频 | 久草视频网站 | 91在线视频国产 | 国产一区二区三区四区区 | 欧美精品在线一区 | 亚洲人成人网 | 亚洲精品9999 | 国产伦精品一区二区三区高清 | 91麻豆精品一区二区三区 | 一区二区视频在线 | 浮生影院免费观看中文版 | 欧美黄色精品 | 色综合视频在线 | 美女国产精品 | 午夜影院在线视频 | 国产日韩欧美电影 | 免费一区 | 日本免费在线 | 国产在线观看网站 | 婷婷色综合 | 免费视频成人国产精品网站 | 免费人成在线观看网站 | 天天干免费视频 | 免费小视频在线观看 | 久久国产精品精品 | 亚洲成人高清 | www.日本国产| 9999久久| h视频在线免费 | 四虎影院新地址 | 国产一级在线 | 中文字幕精品一区二区三区精品 |