在CSS中如何使用 when/else
導讀 | 大家都知道CSS已經有@media、@support 查詢形式的條件,可以非常靈活地選擇對應的樣式,然而還有一個新的提議叫做 when/else,這語法似乎看起來更加明瞭方便。 |
在這篇文章完稿前,when[1] 的提議已經被 CSSWG 通過了,而 else[2] 是一個單獨的提案,目前是一個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語法更豐富,期待!
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2850205/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server CASE WHEN ... THEN ... ELSE ... ENDSQLServer
- SQL中的case when then else end用法 【詳細】轉載SQL
- mysql中case when的使用MySql
- python中for……else……的使用Python
- SQLServer使用case when中的order bySQLServer
- CSS中will-change如何使用CSS
- Spring Boot中如何幹掉if elseSpring Boot
- 在 Laravel 中不用 Node / npm 使用 Tailwind CSSLaravelNPMAICSS
- CSS,我可以寫 if/else 語法了?CSS
- LiteDB在.NET中如何使用
- 在 Java 中如何使用 transientJava
- 在響應式佈局中,如何使用純css使得塊元素等比縮放?CSS
- 還在使用 if else 寫程式碼?試試 “策略模式” 吧!模式
- 如何在 Vue 中優雅地使用 CSS Modules?VueCSS
- drools中的條件 when
- 在css中為什麼說不建議使用@import?CSSImport
- python 中的 for-else 和 while-else 語句PythonWhile
- Misans global字型在vue中如何使用Vue
- 在Linux中,如何配置和使用Xen?Linux
- 在 Swift 5 中如何使用原始字串Swift字串
- 在專案中如何直接使用hystrix?
- 如何清除在專案中無用的css程式碼呢?CSS
- 在原生CSS中使用變數CSS變數
- solid在css中什麼意思SolidCSS
- python中的while...elsePythonWhile
- JS - if else and else if statementJS
- python中if語句的用法及if-else結構的使用Python
- 在Linux中如何使用at命令安排任務Linux
- 你知道在springboot中如何使用WebSocket嗎Spring BootWeb
- 在vue腳手架中如何使用EChartsVueEcharts
- unocss如何使用css變數CSS變數
- 在 Create React App 中使用 CSS ModulesReactAPPCSS
- 技術卡片 - 不要使用 else
- Webpack 中css 如何 import 使用 alias別名 相對路徑WebCSSImport
- 瞭解CSS in JS(JSS)以及在React專案中配置並使用JSSCSSJSReact
- Python中if else語句出錯Python
- WWDC 2018:在Swift中如何高效地使用集合Swift
- 在Linux中,如何使用LVM管理邏輯卷?LinuxLVM