在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中的case when then else end用法SQL
- SQL Server CASE WHEN ... THEN ... ELSE ... ENDSQLServer
- plsql_case when_if else endifSQL
- SQL中的case when then else end用法 【詳細】轉載SQL
- python中for……else……的使用Python
- mysql中case when的使用MySql
- SQL中的CASE WHEN使用SQL
- sqlserver與oracle case when else ,isnull語法差別SQLServerOracleNull
- CSS中will-change如何使用CSS
- SQLServer使用case when中的order bySQLServer
- Spring Boot中如何幹掉if elseSpring Boot
- 在 Laravel 中不用 Node / npm 使用 Tailwind CSSLaravelNPMAICSS
- 在 Java 中如何使用 transientJava
- LiteDB在.NET中如何使用
- CSS,我可以寫 if/else 語法了?CSS
- 關於sql server case when ..else ..end結果型別的小議SQLServer型別
- 還在使用 if else 寫程式碼?試試 “策略模式” 吧!模式
- mysql case when then 使用MySql
- 如何在 Vue 中優雅地使用 CSS Modules?VueCSS
- python 中的 for-else 和 while-else 語句PythonWhile
- CSS系列:在HTML中引入CSS的方法CSSHTML
- 在 Swift 5 中如何使用原始字串Swift字串
- 在專案中如何直接使用hystrix?
- 在Excel中如何使用TEXT函式?Excel函式
- static方法在繼承中如何使用?繼承
- Misans global字型在vue中如何使用Vue
- JSX 中的 If-ElseJS
- css如何實現多行文字在div中垂直居中效果CSS
- css如何設定文字在li元素中垂直居中顯示CSS
- JS - if else and else if statementJS
- mysql中的case when 與if()MySql
- 在vue腳手架中如何使用EChartsVueEcharts
- 在hibernate中如何使用動態sqlSQL
- 請教在eclispe中如何配置使用jiveLisp
- 在Linux中,如何配置和使用Xen?Linux
- 如何用設計模式替代if else設計模式
- python中的while...elsePythonWhile
- oracle 中的 if- else if- end ifOracle