CSS,我可以写 if/else 语法了?

开发 前端
在过去的几年中出现了大量的CSS新特性。其中一些语句也可以被视为if语句,但这些都可以说只是 if 语句。如果我们想要一个 if/else 语句,我们需要做这样的事情。

[[431440]]

我在 2011 年开始写CSS的时候),从来没有怀疑过这种语言会发生多大的变化。我还记得使用PIE.htc 让 border-radius 适配所有浏览器,我的同事做了一个PHP脚本,生成一个PNG来圆角。

[[431441]]

然而,在过去的几年中出现了大量的CSS新特性。其中一些语句也可以被视为if语句,比如@supports样式:

  1. @supports (border-radius: 50%) { 
  2.   // don't use PIE.htc! {} 

还有一个经典的媒体查询,已经存在了十多年:

  1. @media (max-width: 1000px) { 
  2.   //maybe a mobile sized device? {} 

还有一个新的 camp(),有点不同 :

  1. width: clamp(1000px, 50%, 10vw); 

但像这样的行为:

  1. width: clamp(1000px >= (50% >= 10vw)); 

看得头疼。

[[431442]]

但这些都可以说只是 if 语句。如果我们想要一个 if/else 语句,我们需要做这样的事情。

  1. @media (max-width: 1000px) and (prefers-color-scheme: dark) { 
  2.    //maybe a mobile device in dark mode {} 
  3. @media (max-width: 1000px) and (prefers-color-scheme: light) { 
  4.    //maybe a mobile device in light mode {} 

这很烦人。

[[431443]]

但好消息是 在新提议的 @When 特性可以解决我们的烦恼。它这么用:

  1. @when media(max-width: 1000px) { 
  2.    // 做点什么 

这很酷,但更酷的是还有 else:

  1. @when media(max-width: 1000px) { 
  2.    // 移动 
  3. } @else { 
  4.    // 平板 

机智的你可能也想到了,那肯定还有 else if 了,没错还真有:

  1. @when media(max-width: 1000px) { 
  2.    // 平板 
  3. } @else media(max-width: 700px) { { 
  4.    // 移动  
  5. } @else { 
  6.    // PC 
[[431444]]

我们也有可能可以这样做:

  1. @when media(max-width: 700px) { 
  2.    @when (prefers-color-scheme: dark) { 
  3.       //dark mode on mobile device 
  4.    } @else { 
  5.       //light mode on mobile device  
  6.    } 

我说 "可能" 是因为该特性还在提案中,但我相信最终会出来的(没出来我把头发染绿)。

目前(20211023),浏览器的支持情况是怎样的?零。少到连 Can I Use 都没有。但随着新的CSS样式不断推出,我相信我们很快就会看到它。

[[431445]]

作者:Kenton de Jong 译者:前端小智

来源:codingnconcept 原文:https://kentondejong.medium.com/css-is-finally-getting-if-else-statements-3fabcec72a1f

 

责任编辑:姜华 来源: 大迁世界
相关推荐

2021-12-17 15:05:55

CSSwhenelse

2017-07-03 15:04:41

2021-04-20 08:02:08

业务数据用户

2023-06-30 08:01:04

Reactuse关键词

2020-09-17 20:19:35

人工智能机器学习技术

2010-08-25 09:30:56

marginCSS

2010-09-06 13:59:23

CSS缩写

2021-03-26 15:18:11

代码工具Mockoon

2010-09-06 13:15:48

CSS定位

2022-02-23 14:18:53

If-Else入参接口

2021-11-16 07:02:05

函数Python返回值

2024-03-13 08:21:53

冒泡排序动画

2020-05-18 08:42:23

CSS背景图像前端开发

2020-11-23 09:37:22

Python开发函数

2023-01-27 09:14:35

CSS原生嵌套

2022-09-20 14:30:24

脚本工具SQL数据库

2021-09-26 10:45:27

前端游戏CSS

2021-01-29 07:45:27

if-else代码数据

2010-09-14 16:04:40

CSSclip属性

2020-05-13 14:15:25

if-else代码前端
点赞
收藏

51CTO技术栈公众号