我的兵与城(内置功能菜单)
86.36MB · 2025-10-29
大家都知道CSS已经有@media、@support查询形式的条件,可以非常灵活地选择对应的样式,然而还有一个新的提议叫做when/else,这语法似乎看起来更加明了方便
在这篇文章完稿前,when 的提议已经被 CSSWG 通过了,而 else 是一个单独的提案,目前是一个4级规范
让我们来看看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-width和max-width还是需要稍微思考一下才知道是什么意思,然后有一个有意思的媒体查询写法也想在这里提一下,它的语法感觉挺有意思的,而且特别易懂,写法如下:
@media (width <= 800px) {
/* 页面宽度小于等于800px时的样式 */
}这样的语法是不是就特别清晰明了了?不过可惜的是它还是一个4级规范
这些提案进展得相当快,关于使用@if还是@when的问题也存在一些争议,怕@if会与 Sass 冲突,还有一个建议是用@where来代替。总之不管叫啥名字,都是为了让CSS语法更丰富,期待!
到此这篇关于在CSS中写 when/else 是什么体验的文章就介绍到这了,更多相关css中when/else内容请搜索阿里西西以前的文章或继续浏览下面的相关文章,希望大家以后多多支持阿里西西!