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

CSS if() 函數(shù)已經(jīng)來了!

開發(fā) 前端
多年來,我們一直依賴于各種變通方法:JavaScript 切換類、CSS 預處理器混合宏,或者無休止的媒體查詢塊。if() 函數(shù)徹底解決了這些問題,將條件邏輯直接引入 CSS——優(yōu)雅、高效且聲明式。

想象一下,能夠直接根據(jù)條件設(shè)置 CSS 屬性——無需 JavaScript,無需預處理器,也無需任何變通方法。而有了 CSS 中新的 if() 函數(shù),這一切現(xiàn)在都在慢慢變成了現(xiàn)實。CSS if() 函數(shù)已在 Chrome 137 中正式發(fā)布。

多年來,我們一直依賴于各種變通方法:JavaScript 切換類、CSS 預處理器混合宏,或者無休止的媒體查詢塊。if() 函數(shù)徹底解決了這些問題,將條件邏輯直接引入 CSS——優(yōu)雅、高效且聲明式。

工作原理:

property: if(  
condition-1: value-1;  
condition-2: value-2;  
condition-3: value-3;  
else: default-value
);

該函數(shù)按順序檢查條件并應用第一個匹配的值。如果沒有條件匹配,則使用 else 值——這與編程語言的預期完全一致,但現(xiàn)在是純 CSS 的。

if() 函數(shù)的三大功能

1. 樣式查詢

使用 style(),您可以對 CSS 自定義屬性做出響應:

.card {  
--status: attr(data-status type(<custom-ident>));    
border-color: if(    
style(--status: pending): royalblue;    
style(--status: complete): seagreen;    
style(--status: error): crimson;    
else: gray  );}

HTML 中一個 data-status 屬性現(xiàn)在即可控制所有樣式——無需再使用其他工具類!

2. 媒體查詢

告別嵌套的媒體查詢塊。使用 media(),您可以內(nèi)聯(lián)定義響應式值:

h1 {  
font-size: if(    
media(width >= 1200px): 3rem;    
media(width >= 768px): 2.5rem;    
media(width >= 480px): 2rem;    
else: 1.75rem  
);

3. 功能檢測

那些依靠隨機回退策略并希望一切順利的日子已經(jīng)一去不復返了??。有了supports(),你可以直接在屬性中檢查瀏覽器功能:

.element {  
border-color: 
if(    
supports(color: lch(0 0 0)): lch(50% 100 150);    
supports(color: lab(0 0 0)): lab(50 100 -50);    
else: rgb(200, 100, 50)  
);
}

實際用例

三行代碼講解暗黑模式

body {
  --theme: "dark"; /* Toggle via JavaScript or User Preference */


  background: if(
    style(--theme: "dark"): #1a1a1a;
    else: white
  );


  color: if(
    style(--theme: "dark"): #e4e4e4;
    else: #333
  );
}

設(shè)計系統(tǒng)狀態(tài)組件

.alert {
  --type: attr(data-type type(<custom-ident>));


  background: if(
    style(--type: success): #d4edda;
    style(--type: warning): #fff3cd;
    style(--type: danger): #f8d7da;
    style(--type: info): #d1ecf1;
    else: #f8f9fa
  );


  border-left: 4px solid if(
    style(--type: success): #28a745;
    style(--type: warning): #ffc107;
    style(--type: danger): #dc3545;
    style(--type: info): #17a2b8;
    else: #6c757d
  );
}

無媒體查詢混亂的容器

.container {
  width: if(
    media(width >= 1400px): 1320px;
    media(width >= 1200px): 1140px;
    media(width >= 992px): 960px;
    media(width >= 768px): 720px;
    media(width >= 576px): 540px;
    else: 100%
  );


  padding-inline: if(
    media(width >= 768px): 2rem;
    else: 1rem
  );
}

結(jié)合現(xiàn)代 CSS 功能

.element {
  /* With the new light-dark() function */
  color: if(
    style(--high-contrast: true): black;
    else: light-dark(#333, #e4e4e4)
  );


  /* With CSS Custom Functions (@function) */
  padding: if(
    style(--spacing: loose): --spacing-function(2);
    style(--spacing: tight): --spacing-function(0.5);
    else: --spacing-function(1)
  );
}

瀏覽器支持,截至 2025 年 8 月:

  • Chrome/Edge:自 137 版起,已經(jīng)支持
  • Chrome Android:自 139 版起,已經(jīng)支持
  • Firefox:開發(fā)中,目前尚不支持
  • Safari:計劃中,目前尚不支持
  • Opera:尚不支持

由于支持仍在不斷增加,您可以使用以下模式:

.button {
  /* Fallback for all browsers */
  padding: 1rem 2rem;
  background: #007bff;


  /* Modern browsers automatically override */
  padding: if(
    style(--size: small): 0.5rem 1rem;
    style(--size: large): 1.5rem 3rem;
    else: 1rem 2rem
  );


  background: if(
    style(--variant: primary): #007bff;
    style(--variant: success): #28a745;
    style(--variant: danger): #dc3545;
    else: #6c757d
  );
}

未來展望

CSS 工作組已開始開發(fā)以下擴展:

范圍查詢:if(style(--value > 100): ...)

邏輯運算符:if(style(--a: true) and style(--b: false): ...)

容器查詢集成:更強大的上下文感知能力

你覺得 CSS if() 函數(shù)怎么樣?你已經(jīng)在項目中使用過它了嗎?

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

2023-02-13 09:31:07

CSS前端

2023-01-27 09:14:35

CSS原生嵌套

2024-07-17 10:16:21

2024-05-23 10:34:15

CSS 3CSS技術(shù)

2015-06-25 16:47:53

2021-11-02 09:06:17

Microsoft ELinux穩(wěn)定版

2025-08-05 06:00:00

CSS開發(fā)@scope

2023-09-27 08:33:16

作用域CSS

2022-09-29 12:20:48

CSS容器查詢

2019-04-16 08:41:55

5GWi-Fi 6網(wǎng)絡(luò)

2023-03-13 08:47:06

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

2022-06-17 11:11:59

幣圈Web5Web3

2024-12-12 08:35:58

2016-03-03 09:54:26

云環(huán)境后云時代

2012-11-26 12:51:44

木材3D打

2018-09-19 12:51:24

5G6G網(wǎng)絡(luò)技術(shù)

2022-04-19 06:27:13

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

2022-03-30 09:01:37

CSS屬性函數(shù)

2020-09-07 08:29:03

CSS 函數(shù)JavaScript

2018-09-27 08:41:19

5G6G通信網(wǎng)絡(luò)
點贊
收藏

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