精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

原生CSS嵌套使用,你學明白了嗎?

開發 前端
CSS嵌套是一個重要的功能,它將增強我們編寫CSS的能力。目前使用嵌套是可行的,但需要注意受眾情況,因為目前對支持程度仍然較新。

本文翻譯自 CSS Nesting,作者:Ahmad Shadeed, 略有刪改。

如果你是一個前端開發人員,那么你應該使用過CSS預處理器以及預處理器中的嵌套特性。它一直是一個受歡迎的功能,我一直都在使用CSS預處理器。

今年所有的主流瀏覽器都支持原生CSS嵌套:Chrome、Firefox和Safari。這是一個重要的CSS功能,這將使編寫CSS更加容易。在本文中我將記錄到目前為止我所學到的關于CSS嵌套的知識,并與您分享我的發現,包括使用案例和示例。

介紹

CSS嵌套是許多開發人員期待已久的功能之一。我們曾經依賴于CSS預處理器,如Sass或Less。讓我們來回顧一下以前的做法:

請看下面的例子。我們有一個圖標嵌套在選擇器.nav__item中。

.nav__item {
  .icon {
    display: flex;
    padding: 1rem;
  }
}

以上是一個Sass語法的代碼。編譯后,它在瀏覽器中看起來像下面這樣:

.nav__item .icon {
  display: flex;
  padding: 1rem;
}

使用原生CSS嵌套,相同的CSS將按原樣工作。這里有一個圖,顯示了原生CSS嵌套和瀏覽器DevTools之間的比較。

圖片圖片

請注意瀏覽器顯示CSS的方式與CSS代碼中的顯示方式幾乎一致。

如果這個CSS是用Sass編譯的,瀏覽器會顯示如下:

圖片圖片

CSS嵌套的好處

在我看來,嵌套 CSS 有一些很合理的理由,使其變得有用:

  • 更容易閱讀CSS
  • 風格一致
  • 確定特定樣式的作用域
  • 對沒有類或ID的HTML元素添加樣式

CSS嵌套規則

為了讓你了解CSS嵌套,我將嘗試提供不同CSS問題的案例,以及嵌套如何幫助解決這些問題。

首先你需要學習 &符號,  有多數情況下,這個符號是必要的。

嵌套沒有類或ID的元素

圖片圖片

在這個例子中,<a>元素是通過.nav__item設置樣式。要使CSS有效,使用&符號是可選的。

nav__item {
  & a {
    display: block;
    padding: 1.5rem 1rem;
  }
}

/* 等同于 */
.nav__item a {
}

您也可以選擇不使用&符號:

.nav__item {
  a {
    display: block;
    padding: 1.5rem 1rem;
  }
}

/* 等同于 */
.nav__item a {
}

請注意這是一個最近的更新,被稱為寬松的CSS嵌套。它適用于最新的Chrome Canary和Safari技術預覽版。

使用類嵌套元素

圖片圖片

以前面的例子為例,但假設<a>元素有一個HTML類。

.nav__item {
  .link {
    display: block;
    padding: 1.5rem 1rem;
  }
}

/* 等同于 */
.nav__item .link {
}

這里不需要使用&,只有類名稱也正常生效。

嵌套CSS組合器

CSS原生嵌套的一個好處是可以使用組合器。讓我們來看一些例子。

在下面的例子中,我想選擇.nav__item的每個元素,它前面有另一個具有相同類的元素。因此我使用了相鄰兄弟選擇器。

圖片圖片

在原生CSS嵌套中,我們可以使用&符號來模擬這種效果。請注意我重復使用了它兩次。

.nav__item {
  & + & {
    border-left: 2px solid;
  }
}

魔術發生在第二次重復的&。在這里瀏覽器將理解我想使用相鄰的兄弟選擇器。讓我給你看一個圖表來說明這一點:

圖片圖片

另一個例子是嵌套子組合器。它可以選擇元素的直接子元素。

.nav__item {
  > a {
    padding: 1rem;
  }
}

嵌套示例:Active, Focus, Hover

:active、:focus和:hover是通過用戶操作激活的CSS偽類。

圖片圖片

使用CSS嵌套,可以一次嵌套它們以避免代碼重復。讓我們以:hover為例:

button {
  &:hover {
    background-color: var(--bg-color);
  }

  &:focus {
    outline: solid 2px;
  }
}

使用預處理器進行嵌套時的區別在于瀏覽器將像這樣渲染它:

button:hover {
  background-color: var(--bg-color);
}

button:focus {
  outline: solid 2px;
}

讓我們來看看原生CSS嵌套在Chrome、Safari和Firefox中是如何呈現的。

圖片圖片

嵌套示例:Post Content

第一個嘗試CSS嵌套的例子之一是對帖子的正文內容設置樣式。想象一下,一篇文章有正文標題、文本、圖像、引用等等。

圖片圖片

標題

我們傾向于像下面這樣設計標題:

.post-content h1,
.post-content h2,
.post-content h3,
.post-content h4 {
  /* styles here */
}

使用CSS嵌套,它更簡單:

.post-content {
  h1,
  h2,
  h3,
  h4 {
    color: var(--heading-color);
    font-weight: var(--heading-font-bold);
    margin-bottom: var(--size-2);
  }
}

我們也可以使用:is()選擇器來做同樣的事情。

.post-content {
  :is(h1, h2, h3, h4) {
    color: var(--heading-color);
    font-weight: var(--heading-font-bold);
    margin-bottom: var(--size-2);
  }
}

段落元素

一個常見的情況是設置段落內部的鏈接樣式。在這種情況下,CSS的嵌套功能非常好用。

.post-content {
  & p {
    color: var(--color-black);

    & a {
      font-weight: bold;
      text-decoration: underline;
    }
  }
}

鏈接可能也需要懸停或焦點效果。

.post-content {
  & p {
    color: var(--color-black);

    & a {
      font-weight: bold;
      text-decoration: underline;

      &:hover {
        /* hover styles */
      }
    }
  }
}

我們還可以用在嵌套媒體查詢。

.post-content {
  & p {
    /* base styles */

    @media (min-width: 400px) {
      /* do something */
    }
  }
}

帖子圖片

帖子圖包含一個圖像和一個可選的<figcaption>來顯示圖像的描述。

圖片圖片

在我的示例中,如果<figure>有標題,我需要對它進行不同的樣式設置。可以通過嵌套CSS :has() 實現。

.post-content {
  & figure {
    & img {
      /* the figure's image styles */
    }

    /* changes to the <figure> container, if it has a figcaption element */
    &:has(figcaption) {
      display: flex;
      align-items: start;
    }

    & figcaption {
      /* caption styling */
    }
  }
}

文章列表

圖片圖片

我需要為所有列表項添加邊框,除了最后一個。為此,我使用了:not()選擇器。

.post-content {
  li {
    &:not(:last-child) {
      border-bottom: 1px solid;
    }
  }
}

要使用:not(),我們需要在它前面附加一個&符號。

自定義標題間距

如果<h3>和<h4>之后是代碼片段,我需要減少它們下方的間距。

圖片圖片

.post-content {
  & h3 + [class*="language-"],
  & h4 + [class*="language-"] {
    margin-top: 0.5rem;
  }
}

嵌套示例:卡片組件

我將演示一個簡單的卡片組件,它使用CSS嵌套來實現所需的樣式。

圖片圖片

假設有一個默認或基本樣式的.card元素,我將繼續演示CSS嵌套的使用。

.card {
  /* default card styles */
}

如果容器寬度大于400px,我希望卡片成為一個Flex容器。

.card {
  /* default card styles */

  /* if the container width is 400px or bigger */
  @container card (min-width: 400px) {
    display: flex;
  }
}

嵌套示例:表單輸入

一種常見的情況是對輸入的占位符進行樣式設置。問題是每個瀏覽器都有自己的前綴。

圖片圖片

由于前綴樣式需要一個雙冒號,我們需要使用與號&,否則樣式將中斷。

input {
  --placeholder-color: #969696;
  /* other styles */

  &::-webkit-input-placeholder {
    color: var(--placeholder-color);
  }

  &::-moz-placeholder {
    color: var(--placeholder-color);
    opacity: 1;
  }

  &:-moz-placeholder {
    color: var(--placeholder-color);
  }
}

我在探索CSS嵌套時發現的錯誤

使用不帶&號的通用選擇器

假設我們有一張卡片,我們想選擇其中的所有元素。使用CSS原生嵌套,這應該可以工作:

.card {
  * {
    /* styles here */
  }
}

我發現這在Chrome穩定版中不起作用,但在Chrome Canary 121、Safari 17.1和Firefox 119中工作正常。

.card {
  & * {
    /* styles here */
  }
}

使用不帶&號的自定義屬性

在這個問題中,選擇一個不帶&號的自定義屬性將不會呈現預期的結果。

.card {
  [data-type="featured"] {
    /* styles here */
  }
}

我發現這在Chrome穩定版中不起作用,但在Chrome Canary 121、Safari 17.1和Firefox 119中工作正常。

為了解決這個問題,我們需要附加一個&符號:

.card {
  &[data-type="featured"] {
    /* styles here */
  }
}

這兩個bug都在Chrome Canary中的寬松CSS嵌套版本中得到了修復。

檢測CSS嵌套支持

可以使用@supports來檢查CSS嵌套支持。在我們的例子中,我們想檢查瀏覽器是否識別&可以使用以下代碼。

@supports selector(&) {
  .post-content {
    & h2 {
      /* styles here. */
    }
  }
}

對我來說,現在還在使用PostCSS嵌套插件,它將原生CSS嵌套編譯為普通CSS。一旦它可以安全使用后,就可以不再使用插件了。

結論

CSS嵌套是一個重要的功能,它將增強我們編寫CSS的能力。目前使用嵌套是可行的,但需要注意受眾情況,因為目前對支持程度仍然較新。

責任編輯:武曉燕 來源: 南城大前端
相關推薦

2022-10-24 20:25:40

云原生SpringJava

2022-10-08 00:24:40

嵌套事務加入事務事務

2020-12-17 08:39:36

Css前端html

2022-12-30 08:35:00

2023-12-06 08:28:44

禮物系統用例圖

2022-10-10 18:38:56

inert屬性鍵盤

2023-12-08 08:38:15

EventLoopAPI瀏覽器

2023-01-27 09:14:35

CSS原生嵌套

2022-04-07 11:15:22

PulseEventAPI函數

2023-12-28 08:43:28

前端算法搜索

2022-10-19 08:19:32

動態基線預警

2024-01-08 20:05:32

2023-06-14 08:15:34

算法合并操作Winner

2024-03-27 13:33:00

MySQLInnoDB事務

2023-12-13 12:41:59

原生CSS元素

2022-10-08 08:09:13

MGRGreatSQL事務

2022-03-05 17:56:29

桌面應用開發

2015-09-18 09:17:06

數據分析

2023-01-02 23:58:03

2023-04-04 08:42:30

IT成本技術堆
點贊
收藏

51CTO技術棧公眾號

www.xxxx国产| 成年人一级黄色片| 123成人网| 国产精品久久久久一区二区三区| 91精品免费看| 久久久久久久久久一区二区三区| 日本在线中文字幕一区| 欧美无乱码久久久免费午夜一区| 国产香蕉一区二区三区| 亚洲日本中文字幕在线| 精品一区二区三区的国产在线播放| 色综合五月天导航| 懂色av粉嫩av浪潮av| 成人在线tv视频| 欧美色电影在线| 精品少妇人欧美激情在线观看| 精品视频一二三| 东方aⅴ免费观看久久av| 国产成人jvid在线播放| 国产一级片免费观看| 日韩一区二区中文| 亚洲精品日韩丝袜精品| 精产国品一区二区三区| 少妇精品视频一区二区免费看| 亚洲一区av在线| 一道精品一区二区三区| 免费黄网站在线观看| 国产精品影音先锋| 国产在线a不卡| 无码人妻av一区二区三区波多野| 欧美激情成人在线| 日韩有码在线电影| 女女互磨互喷水高潮les呻吟| 成人18夜夜网深夜福利网| 91精品国产综合久久久久久| 免费涩涩18网站入口| 伊人久久av| 亚洲mv在线观看| 男人c女人视频| 成人影欧美片| 亚洲素人一区二区| 亚洲欧美日产图| 国产高清视频在线观看| 97久久超碰精品国产| 99免费在线观看视频| 国产成人av免费看| 麻豆91精品91久久久的内涵| 国产精品第100页| 天干夜夜爽爽日日日日| 另类亚洲自拍| 欧美一级大胆视频| 狠狠人妻久久久久久| 国产日韩欧美三级| 51ⅴ精品国产91久久久久久| 99亚洲国产精品| av资源免费观看| 日韩一级免费| 国模一区二区三区私拍视频| 欧美色视频一区二区三区在线观看| 日韩高清三区| 亚洲激情第一页| 国产一区二区三区站长工具| 污片在线观看一区二区| 91九色视频导航| 亚洲视频久久久| 美女国产一区二区| 国产精品美女www| 中文字幕在线观看第二页| 青青草国产精品97视觉盛宴| 国产免费一区视频观看免费| 国产日韩欧美精品一区| 国内揄拍国内精品| 久久一区二区三| 成人性生交大片免费看视频在线| 国产精品中文在线| 亚洲字幕av一区二区三区四区| 老司机免费视频一区二区| 国产欧美日韩亚洲精品| 99久久久无码国产精品免费| 成人美女视频在线看| 欧美浪妇xxxx高跟鞋交| 欧美女人性生活视频| 在线天堂新版最新版在线8| 在线观看日韩高清av| 女同激情久久av久久| 亚洲日本va| 亚洲欧美日韩视频一区| 亚洲综合图片一区| 伊人影院久久| 国产精品成人品| 亚洲福利在线观看视频| xf在线a精品一区二区视频网站| 色女人综合av| 午夜成年人在线免费视频| 精品美女久久久久久免费| 日本va中文字幕| 欧美第一在线视频| 亚洲欧美日韩精品久久| 免费国产羞羞网站美图| 亚洲一区中文| 99精品99久久久久久宅男| 四虎精品在线| 国产精品全国免费观看高清| 成年人午夜视频在线观看 | 成人免费91| 日韩成人在线网站| 午夜剧场免费在线观看| 午夜在线精品偷拍| 肥熟一91porny丨九色丨| 大胆av不用播放器在线播放| 亚洲综合清纯丝袜自拍| 自拍偷拍一区二区三区四区| 欧美三级自拍| 欧美二区在线播放| 亚洲中文一区二区三区| 国产色一区二区| 僵尸世界大战2 在线播放| 一区二区三区| 尤物九九久久国产精品的分类 | 色屁屁一区二区| 欧美一级片在线免费观看| 日韩在线欧美| 国产精品av在线播放| 欧美视频一二区| 一区二区高清免费观看影视大全 | 91免费观看国产| 亚洲国产一二三精品无码| 桃子视频成人app| 亚洲精品美女视频| 国产亚洲精品成人| 国产精品18久久久久| 一区二区三区四区视频在线观看| 男人皇宫亚洲男人2020| 亚洲国产精品一区二区久| 免费在线观看黄色av| 国产曰批免费观看久久久| 亚洲国产午夜伦理片大全在线观看网站 | 青草热久免费精品视频| 天天插天天干天天操| 亚洲一区免费在线观看| 国产一级二级av| 亚洲高清影视| 91日本在线视频| 国产一二区在线| 5566中文字幕一区二区电影| 香蕉成人在线视频| 久久福利视频一区二区| 天天综合色天天综合色hd| 日本一区二区三区视频在线| 中文字幕久久久| 最新中文字幕第一页| 中文字幕免费不卡| 黑森林精品导航| 视频在线不卡免费观看| 成人久久精品视频| 污视频网站在线免费| 日韩欧美精品在线| 国产极品美女高潮无套嗷嗷叫酒店| 国产成人在线网站| 国产婷婷一区二区三区| 夜色77av精品影院| 国产精品成人播放| 黄色片免费在线观看| 欧美一区二区视频在线观看| 久久黄色小视频| 99re免费视频精品全部| 粉嫩虎白女毛片人体| 日韩久久久久| 亚洲综合最新在线| av中文字幕在线观看第一页| 亚洲欧美国产精品久久久久久久| 自拍偷拍第八页| 综合久久国产九一剧情麻豆| 国产老头和老头xxxx×| 在线亚洲免费| 亚洲欧洲精品一区二区| www.丝袜精品| 国产99视频在线观看| 亚洲欧美视频一区二区| 日韩免费成人网| 久久一区二区三区视频| 国产精品久久久久三级| 韩国三级视频在线观看| 久久久噜噜噜| 国产一区一区三区| 丝袜美腿综合| 成人精品网站在线观看| 老牛影视精品| 亚洲欧洲在线播放| a级片在线免费看| 欧美性xxxxxxx| 少妇被躁爽到高潮无码文| 96av麻豆蜜桃一区二区| www.国产福利| 久久久噜噜噜| 欧美黑人在线观看| 欧美一区二区三区高清视频| 99www免费人成精品| 欧美影视资讯| 91精品国产高清久久久久久91| 日本不卡不卡| 日韩精品高清在线| 亚洲精品97久久中文字幕| 色狠狠桃花综合| 国产在线视频在线观看| 国产精品欧美一级免费| 一区二区视频观看| 国产福利精品导航| 不卡av免费在线| 亚洲二区精品| 美女在线免费视频| 日韩激情一区| 欧美二区在线看| 岛国精品一区| 亚洲一区二区三区乱码aⅴ| 绿色成人影院| 欧美激情国产日韩精品一区18| lutube成人福利在线观看| 亚洲激情在线观看| 精品女同一区二区三区| 欧美日韩在线播| 亚洲 欧美 日韩 在线| 亚洲二区在线观看| 国产性xxxx| 中文字幕在线观看一区二区| 三年中国中文观看免费播放| 91亚洲午夜精品久久久久久| 佐佐木明希电影| 国产精品自拍一区| 日本一二区免费| 麻豆精品视频在线观看| 在线免费av播放| 奇米一区二区三区av| 国产精品97在线| 午夜亚洲影视| aa免费在线观看| 亚洲在线成人| 日韩av资源在线| 香蕉久久夜色精品| 国产午夜福利100集发布| 亚洲一级黄色| 国产精品一色哟哟| 一区视频在线看| 久久久久久免费看| 亚洲国产第一| 男人和女人啪啪网站| 99亚洲伊人久久精品影院红桃| 免费看国产一级片| 免费中文字幕日韩欧美| 免费国产成人av| 日韩福利视频网| 激情 小说 亚洲 图片: 伦| 久久99精品国产麻豆不卡| 久久99爱视频| 国产一区二区三区四区在线观看| 欧美一级特黄aaa| 国产成人福利片| 亚洲天堂2024| 久久亚洲综合色一区二区三区| 国产交换配乱淫视频免费| 国产视频一区二区三区在线观看| 色欲狠狠躁天天躁无码中文字幕| 亚洲欧洲精品成人久久奇米网| 欧美一区免费观看| 亚洲国产一区在线观看| 97超碰人人干| 色中色一区二区| 伊人久久亚洲综合| 欧美一区二区三区婷婷月色| 日本人妻熟妇久久久久久| 亚洲欧美精品中文字幕在线| 91社区在线| 九九久久综合网站| 九色porny丨入口在线| 国产精品∨欧美精品v日韩精品| 欧美电影在线观看网站| 亚洲自拍中文字幕| 性欧美lx╳lx╳| 在线观看成人一级片| 影音国产精品| 亚洲最大成人在线观看| 粉嫩久久99精品久久久久久夜| 亚洲永久无码7777kkk| 国产精品网友自拍| 青青草原在线免费观看视频| 欧美性69xxxx肥| 国产片高清在线观看| 日韩精品久久久久| 无遮挡动作视频在线观看免费入口 | 国产精品12| 精品一区二区三区在线| 97久久国产亚洲精品超碰热| 久久免费国产| wwwxxxx在线观看| 欧美国产精品中文字幕| 久久精品国产av一区二区三区| 91电影在线观看| 亚洲精品国产片| 中文欧美在线视频| av中文字幕电影在线看| 91精品久久久久| 希岛爱理av免费一区二区| 国产盗摄视频在线观看| 久久久久91| 午夜剧场免费看| 亚洲天堂精品在线观看| 亚洲欧美另类在线视频| 日韩精品一区二区三区视频在线观看| 极品白浆推特女神在线观看| 欧美激情手机在线视频 | 品久久久久久久久久96高清| 欧美日韩精品| 日韩av片专区| 中文字幕国产一区二区| 人人干人人干人人干| 日韩三级av在线播放| 在线国产情侣| 国产成人97精品免费看片| 欧美午夜18电影| 东北少妇不带套对白| 国产一区二区精品久久99| 色噜噜噜噜噜噜| 欧美性生交xxxxxdddd| 欧美一区二不卡视频| 色综合男人天堂| 日韩欧美一级| 麻豆md0077饥渴少妇| 另类调教123区| 天天操天天舔天天射| 色噜噜狠狠色综合中国| 亚洲av成人无码久久精品老人| 欧美精品福利在线| 91亚洲无吗| 免费拍拍拍网站| 成人动漫av在线| 国产一级生活片| 亚洲国产黄色片| 97久久人人超碰caoprom| 国产富婆一区二区三区| 国产在线日韩| 在线中文字日产幕| 亚洲一区免费视频| 色香蕉在线视频| 91高清视频免费观看| 日韩av午夜| 国产性xxxx18免费观看视频| 91原创在线视频| 国产免费av一区| 亚洲视频国产视频| 福利精品在线| 国产精品夜夜夜爽张柏芝| 国产一区二区三区在线观看免费| 欧美成人一二三区| 精品剧情在线观看| 嗯啊主人调教在线播放视频 | 黄色国产在线播放| 精品视频在线免费| 成人福利网站| 成人黄色片视频网站| 一区二区日本视频| 性猛交娇小69hd| 91精品福利在线一区二区三区| 制服丝袜中文字幕在线| 国产精品一区二区三区观看| 国产模特精品视频久久久久| 欧美熟妇激情一区二区三区| 555www色欧美视频| 91美女主播在线视频| 欧洲亚洲一区| 国产美女精品一区二区三区| 精品少妇爆乳无码av无码专区| 日韩精品视频三区| av成人在线播放| 日本香蕉视频在线观看| 久久嫩草精品久久久久| 自拍偷拍福利视频| 欧美激情2020午夜免费观看| 亚洲毛片免费看| 日韩欧美理论片| 精品美女久久久久久免费| 在线激情网站| 精品综合久久久| 精品在线免费视频| 久久视频免费在线观看| 中文字幕精品一区久久久久| www.国产精品一区| 狠狠躁狠狠躁视频专区| 夜夜精品浪潮av一区二区三区| 精品99又大又爽又硬少妇毛片| 亚洲最大福利网| 久久精品九九| 久草国产在线观看| 在线午夜精品自拍| 红杏一区二区三区| 欧美一级视频在线| 欧美日韩激情视频| 午夜dj在线观看高清视频完整版| 日本免费高清一区二区| 成人永久aaa| 国产人妻精品一区二区三|