偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

這 20 個現(xiàn)代 CSS 功能,能讓你少寫 50% 的代碼

開發(fā) 前端
在本文中,我將快速分享我最喜歡的 20 個 CSS 功能,以便您能夠盡快獲得盡可能多的信息。

過去幾年 CSS 發(fā)展迅猛,涌現(xiàn)出眾多新功能,它們徹底改變了我編寫 CSS 的方式。

因此,在本文中,我將快速分享我最喜歡的 20 個 CSS 功能,以便您能夠盡快獲得盡可能多的信息。

如果您想深入了解其中任何一個功能,請務必查看 MDN 上的文檔(https://developer.mozilla.org/en-US/docs/Web/CSS),幾乎每個功能都值得深入學習。

現(xiàn)在,讓我們一起來深入了解一下它們。

1. @layer

老實說,@layer 是我最喜歡的 CSS 功能之一 。它已經(jīng)推出一段時間了,但真沒有多少人使用它,他們真的應該使用它。

它允許您在 CSS 中創(chuàng)建特定層 。因此,您可以定義如下內(nèi)容:

@layer reset, theme, defaults, layout, components, utils;
@layer reset {
  * { margin: 0; padding: 0; }
}
@layer theme {
  :root {
    --accent: #4f46e5;
  }
}
@layer utils {
  * {
    color: red;
  }
}

因為 utils 位于 components(或其他任何內(nèi)容)之后,所以它總是會勝出,即使選擇器在技術上不那么具體。

您甚至可以直接導入到層中:

@import url("theme.css") layer(theme);

超級強大,卻又被嚴重低估。

2. text-wrap: balance

你見過標題里有一個詞格格不入,卻獨占一行嗎?

text-wrap: balance 可以在一行內(nèi)解決這個問題。

h1 {  text-wrap: balance;}

它盡可能均衡地平衡各行文本。

因此,不要:

Super Long Heading WithOne WordAlone

您將獲得:

Super Long HeadingWith One Word Alone

更簡潔、更美觀、更易讀。

3. CSS 嵌套

CSS 終于支持嵌套了——無需預處理器。

它能讓你編寫更簡潔、更結構化的樣式。

.main-title {
font-size: 2rem;
@media (min-width: 800px) {
    font-size: 3rem;
  }
  &.red {
    color: red;
  }
  .subtitle {
    font-size: 1.25rem;
  }
}

它類似于 SCSS,但原生支持。

4. 容器查詢

容器查詢解決了一個巨大的問題:它們允許您根據(jù)組件容器的大?。ǘ皇琼撁娲笮。﹣碓O置組件的樣式。

.card {  container-type: inline-size;}
@container (min-width: 450px) {
  .card {
    flex-direction: row;
  }
}
@container (max-width: 449px) {
  .card {
    flex-direction: column;
  }
}

非常適合 React 等基于組件的框架。

我們將告別媒體查詢的混亂。

5. 相對顏色

相對顏色允許您根據(jù)現(xiàn)有顏色計算新顏色。

.button {
  --bg: oklch(70% 0.2 250);
  background: var(--bg);
  border: 2px solid color-mix(in oklch, var(--bg) 85%, black);
}
.button:hover {
  background: color-mix(in oklch, var(--bg) 92.5%, black);
}

您還可以動態(tài)地在顏色空間之間進行轉換(例如 hsl → oklch)。

這對于主題系統(tǒng)非常有用。

6. :has()(父選擇器)

:has() 基本上就是我們一直想要的父選擇器。

.input-group:has(input:valid) {  border-color: green;}
.input-group:has(input:invalid) {  border-color: red;}

這可以讓你根據(jù)子元素來設置父元素的樣式。

它非常棒,現(xiàn)在所有主流瀏覽器都支持它。

7. @property

自定義屬性很棒——但它們默認不具備動畫效果。

@property 通過允許你定義類型、繼承和默認值來解決這個問題。

@property --my-color {  
syntax: '<color>';  inherits: false;  initial-value: red;
}
.box {
  --my-color: red;  background: var(--my-color);  
transition: --my-color 0.5s;
}
.box:hover { 
 --my-color: green;
 }

這使得自定義屬性類型安全且可動畫化。

8. 子網(wǎng)格

子網(wǎng)格的出現(xiàn)經(jīng)歷了漫長的時間,但它終于來了,而且非常棒。

它允許子網(wǎng)格從其父網(wǎng)格繼承軌道。

.parent {  
display: grid;  grid-template-columns: 1fr 1fr;  gap: 2rem;
}
.child {  
display: grid;  grid-template-columns: subgrid;  gap: inherit;
}

無需再手動同步軌道尺寸。

9. 多值顯示

現(xiàn)在可以分別定義外部顯示和內(nèi)部顯示。

.box {  display: inline flex;}

inline = 如何布局自身(外部)

flex = 如何布局子元素(內(nèi)部)

這是未來組合布局行為的簡潔方法。

10. display: contents

這個方法雖然很巧妙,但非常有用。

它使包裝元素在視覺上消失,同時保留其樣式。

.wrapper {  display: contents;}

它使包裝器的子元素表現(xiàn)得像 flex/grid 父元素的直接子元素,非常適合修復奇怪的 flexbox 間隙問題。

11. 邏輯屬性

邏輯屬性只是物理屬性的方向感知版本。

.box {  
padding-inline-start: 1rem; /* instead of padding-left */  
margin-block-end: 2rem; /* instead of margin-bottom */}

它們遵循書寫模式和語言方向,因此您的網(wǎng)站可以自動以 RTL 或垂直文本顯示。

12. ::backdrop

::backdrop 偽元素允許您設置 <dialog> 的背景樣式。

dialog::backdrop {  
background: rgba(0,0,0,0.5);  
backdrop-filter: blur(4px);}

添加一些淡入淡出動畫,你就得到了漂亮的模態(tài)窗口。

13. transition-behavior: allow-discrete14. @starting-style

這兩個屬性可以協(xié)同工作,為通常無法動畫的內(nèi)容(例如顯示)添加動畫效果。

@starting-style {  
dialog[open]
  {    
opacity: 0;    scale: 0.8;  
  }
}
dialog[open] {  
transition: opacity .3s, scale .3s;  
transition-behavior: allow-discrete;  
opacity: 1;  scale: 1;
}

Firefox 中仍然缺少此功能,但對于漸進式增強來說非常棒。

15. field-sizing: content

這個功能太酷了:它允許文本區(qū)域隨著內(nèi)容增長,無需 JS。

textarea {  field-sizing: content;}

目前只有 Chromium 支持它,但它不會破壞其他任何功能。非常棒的漸進式增強。

16. @scope

@scope 允許你將樣式限定在特定的子樹中,就像 CSS 模塊一樣,但原生支持。

@scope (.article) to (figure) {  
h2 {    
color: rebeccapurple; 
   }
 }

或者內(nèi)聯(lián)在 <style> 標簽中:

<section>  
<style scoped>    
h2 { color: rebeccapurple; }
  </style>  
<h2>Only this one is purple</h2>
</section>

對于組件庫來說超級方便。

(Firefox 仍然缺少此功能。)

17. anchor() 定位

這是我最推崇的功能。

它允許你像真正的錨點一樣,將元素相對于其他元素進行定位。

.anchor {  anchor-name: --my-anchor;}
.tooltip {  
position-anchor: --my-anchor;  
top: anchor(bottom);  
left: anchor(right);
}

瀏覽器處理所有數(shù)學運算。

它仍處于前沿(目前還沒有 Firefox 或 Safari),但它將改變游戲規(guī)則。

18. 容器樣式查詢

我們之前了解過基于大小的容器查詢。

這與此類似,但允許您查詢?nèi)萜鲀?nèi)的樣式值。

@container style(--accent: blue)
 {  
.card {    
border-color: var(--accent);  }
}

用于稍后基于主題的布局。

19. interpolate-size: allow-keywords

最后,我們可以從 auto 或 max-content 動畫!

:root {  interpolate-size: allow-keywords;}
.panel {  height: 2.5rem;  transition: height .4s;}
.panel:hover {  height: max-content;}

通常情況下,它會立即跳轉,現(xiàn)在動畫效果流暢。

太讓人滿意了。

20. CSS 的未來就在這里

就是這樣,20 個現(xiàn)代 CSS 特性讓編寫 CSS 再次變得有趣。

其中一些已經(jīng)準備好投入使用,而另一些則非常適合逐步增強。

無論如何,它們都值得嘗試,因為它們開辟了許多新的可能性。

責任編輯:龐桂玉 來源: web前端開發(fā)
相關推薦

2016-12-19 10:22:05

代碼正則表達式

2017-08-28 14:58:19

CSSFlexbox注釋格式優(yōu)化

2016-09-07 19:58:47

CSS代碼Web

2023-11-30 08:21:33

2019-11-25 10:20:54

CSS代碼javascript

2024-09-04 09:00:52

lo?庫邏輯范型

2020-11-11 07:52:04

CSS功能瀏覽器

2019-07-10 12:55:23

正則表達式代碼語法

2020-10-27 12:06:17

MathJavaScript對象

2022-09-02 08:21:24

idea插件

2017-09-27 16:09:29

代碼

2025-02-17 08:50:00

CSS代碼JavaScript

2025-02-25 09:34:51

開源框架代碼

2020-04-29 08:25:14

黑客安全工具

2025-02-19 16:00:00

ES代碼ECMAScript

2023-11-13 14:50:53

CSS開發(fā)

2018-11-11 10:59:38

UI設計師背景界面

2021-04-19 17:12:53

網(wǎng)站工具

2025-04-21 17:55:25

2025-10-24 09:49:12

點贊
收藏

51CTO技術棧公眾號