在CSS中使用when/else的方法


Posted in HTML / CSS onJanuary 18, 2022

大家都知道CSS已经有@media@support 查询形式的条件,可以非常灵活地选择对应的样式,然而还有一个新的提议叫做 when/else,这语法似乎看起来更加明了方便

在这篇文章完稿前,when 的提议已经被 CSSWG 通过了,而 else 是一个单独的提案,目前是一个4级规范

让我们来看看 when/else 是如何使用的吧

when/else 语法

先来看看为了实现页面响应式是如何做的,这就要用到 CSS媒体查询

@media (min-width: 800px) {
  /* 宽度大于800px时的样式 */
}

@media (max-width: 799px) {
  /* 宽度小于799px时的样式 */
}

而换成 when/else 后呢?

@when media(min-width: 800px) {
  /* 宽度大于800px时的样式 */
}
@else {
  /* 宽度不大于800px时的样式 */
}

语义上比 @media 更加好了

when/else 甚至还能支持多条件判断,跟写 if/else 似的

@when media(min-width: 800px) {
  /* 宽度大于800px时的样式 */
}
@else media(min-width: 600px) {
  /* 宽度大于600px但不大于800px时的样式 */
}
@else {
  /* 宽度不大于600px时的样式 */
}

更多用法

一起来看看 when/else 有哪些不错的用法~

组合使用

再来举一个 @media@support 共用的例子

@media (min-width: 800px) {
    @supports (display: flex) {
        .flex {
            flex-direction: column;
        }
    }
}

这段代码的意思是当页面宽度大于 800px 并且浏览器支持 display: flex 语法时,给类名为 flex 的元素设置 flex-direction: column 的样式

其实不难理解,但要是换成 when/else 的语法会是啥样呢?

@when media(min-width: 800px) and supports(display: flex) {
    .flex {
        flex-direction: column;
    }
}

内联使用

@when 也可以内联在CSS样式中使用,例如:

.button {
  padding: 2rem;
  @when element(max-width: 400px) {
    padding: 1rem;
  }
}

新的媒体查询写法

我在初学 @media 这个语法时也觉得有些拗口,min-widthmax-width 还是需要稍微思考一下才知道是什么意思,然后有一个有意思的媒体查询写法也想在这里提一下,它的语法感觉挺有意思的,而且特别易懂,写法如下:

@media (width <= 800px) {
  /* 页面宽度小于等于800px时的样式 */
}

这样的语法是不是就特别清晰明了了?不过可惜的是它还是一个4级规范

总结

这些提案进展得相当快,关于使用 @if 还是 @when 的问题也存在一些争议,怕 @if会与 Sass 冲突,还有一个建议是用 @where 来代替。总之不管叫啥名字,都是为了让CSS语法更丰富,期待!

到此这篇关于在CSS中写 when/else 是什么体验的文章就介绍到这了,更多相关css中when/else内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
css图标制作教程制作云图标
Jan 19 HTML / CSS
浅谈CSS3中的变形功能-transform功能
Dec 27 HTML / CSS
CSS3下的渐变文字效果实现示例
Mar 02 HTML / CSS
CSS3实现菜单悬停效果
Nov 17 HTML / CSS
html5 canvas 使用示例
Oct 22 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
Dec 13 HTML / CSS
html标签之Object和EMBED标签详解
Jul 04 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
May 06 HTML / CSS
Html5跳转到APP指定页面的实现
Jan 14 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
Dec 07 HTML / CSS
浅析CSS在DevTools 中架构演变
Oct 05 HTML / CSS
HTML5页面打开微信小程序功能实现
Sep 23 HTML / CSS
CSS使用伪类控制边框长度的方法
浅谈css实现背景颜色半透明的两种方法
Dec 06 #HTML / CSS
HTML怎么设置下划线?html文字加下划线方法
Dec 06 #HTML / CSS
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
DIV CSS实现网页背景半透明效果
CSS实现五种常用的2D转换
CSS巧用渐变实现高级感背景光动画
You might like
sae使用smarty模板的方法
2013/12/17 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
python字符串中的单双引
2017/02/16 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python Requests库基本用法示例
2018/08/20 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
超市营业员岗位职责
2013/12/20 职场文书
初中语文教学反思
2014/02/02 职场文书
事假请假条范文
2014/04/11 职场文书
技术负责人任命书
2014/06/05 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技