当我在2011年开始编写CSS时),我从不怀疑语言会发生多大的变化。我还记得使用PIE.htc使边框半径适用于所有浏览器,我的同事制作了一个PHP脚本,生成一个PNG来圆角。然而,在过去的几年里,出现了大量新的CSS特性。其中一些语句也可以被视为if语句,例如@supports样式:@supports(border-radius:50%){//don'tusePIE.htc!{}}还有一个经典的媒体查询,它已经存在十年了:@media(max-width:1000px){//maybeamobilesizeddevice?{}}还有一个新的camp()有点不同:width:clamp(1000px,50%,10vw);但行为是这样的:width:clamp(1000px>=(50%>=10vw));看得头疼。但这些可以说只是if语句。如果我们想要一个if/else语句,我们需要做这样的事情。@media(max-width:1000px)and(prefers-color-scheme:dark){//maybeamobiledeviceindarkmode{}}@media(max-width:1000px)and(prefers-color-scheme:light){//maybeamobiledeviceinlightmode{}}这很烦人。不过好消息是,新提出的@When特性可以解决我们的烦恼。它是这样工作的:@whenmedia(max-width:1000px){//dosomething}这很酷,但更酷的是else:@whenmedia(max-width:1000px){//move}@else{//Tablet}机智的你可能想到了,那肯定还有elseif,对,有:@whenmedia(max-width:1000px){//Tablet}@elsemedia(max-width:700px){{//Mobile}@else{//PC}我们也可以这样做:@whenmedia(max-width:700px){@when(prefers-color-scheme:dark){//darkmodeonmobiledevice}@else{//lightmodeonmobiledevice}}我说“可能”是因为该功能仍在提案中,但我相信它最终会出来(如果没有,我会把头发染成绿色)。目前(20211023),浏览器支持情况如何?零。我什至不能使用。但是随着新的CSS样式不断出现,我相信我们很快就会看到它。作者:KentondeJong译者:FrontendXiaozhi来源:codingnconcept原文:https://kentondejong.medium.com/css-is-finally-getting-if-else-statements-3fabcec72a1f
