自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

?妙用 CSS 變量,讓你的代碼更優(yōu)雅

開發(fā)
css 變量可以讓你的代碼更靈活,更優(yōu)雅,可以看到各大開源庫全部都擁抱 css 變量了,是時候可以拋棄 scss 了。

CSS 變量基礎知識

這是介紹 css 的基礎語法,了解地可以直接跳過到實際 demo . 既然是變量,他跟 JS 的變量很像,分為 聲明、使用、作用域 三塊。

  • 聲明變量 【通過 --連接變量名 】:
:root {
--test: red;
}
  • 使用變量 【var(變量名)讀取變量】:

.test {
color: var(--foo);
}
  • 作用域 優(yōu)先級最高的選擇器聲明生效。

適配 iphone x 劉海屏

Apple 在發(fā)布 iPhone X 后引入了一個新概念:安全區(qū)域(Safe Area),安全區(qū)域指屏幕內(nèi)不受圓角、劉海、底部小黑條等元素影響的可視窗口。如下圖:

如何適配這種屏幕,有2個步驟:

  • HTML 中指定 viewport-fit 為 cover,讓頁面充滿全屏;
  • CSS 中可用 env() 獲取對應安全區(qū)域。

<meta name="viewport" content="viewport-fit=cover">
.safe-area {
padding-top: env(safe-area-inset-top);
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
padding-bottom: env(safe-area-inset-bottom);
}

由于兼容性,iOS 11 用的是 constant(),但從 iOS 11.2 開始改用 env()。如果用 CSS 變量來實現(xiàn)(ChatUI 源碼實現(xiàn)),感覺挺好的,如下:

:root {
--safe-top: 0px;
--safe-bottom: 0px;
}

@supports (top: constant(safe-area-inset-top)) {
:root {
--safe-top: constant(safe-area-inset-top);
--safe-bottom: constant(safe-area-inset-bottom);
}
}

@supports (top: env(safe-area-inset-top)) {
:root {
--safe-top: env(safe-area-inset-top);
--safe-bottom: env(safe-area-inset-bottom);
}
}

代碼邏輯如下:

  • 先定義 --safe-top、--safe-bottom 2個 CSS 自定義變量;
  • 通過 @supports 來判斷當前瀏覽器是否支持 constant() / env() ;
  • 在支持的情況下,把取到的值賦給 CSS 自定義變量。然后在需要使用的地方就可以這樣用了:
.navbar {
padding-top: var(--safe-top);
}

body {
height: calc(100vh - var(--safe-bottom));
}

實現(xiàn) 1px 邊框

同樣的,以往的代碼我們可能是使用 scss 語法來實現(xiàn), 會實現(xiàn)一段比較復雜的傳參等:

@mixin retina-border($top: 0, $right: 0, $bottom: 0, $left: 0, $cor: #000000) {

}
// 調(diào)用
@include retina-border();

如果使用了 css 變量,代碼變得很簡單,也更靈活:

.hairline {
position: relative;
}

.hairline::after {
content: ' ';
position: absolute;
width: 200%;
height: 200%;
border: 0 solid var(--hairline-color, #f2f4f5);
border-width: var(--hairline-width, 1px);
border-radius: calc(var(--hairline-radius) * 2);
pointer-events: none;
transform: scale(0.5);
transform-origin: 0 0;

使用如下:

<div class="beidan hairline">...</div>

/* 修改顏色 */
.beidan {
--hairline-color: #e9e9e9;
}

最后

css 變量可以讓你的代碼更靈活,更優(yōu)雅,可以看到各大開源庫全部都擁抱 css 變量了,是時候可以拋棄 scss 了。

責任編輯:趙寧寧 來源: 廣州peen
相關推薦

2020-04-03 14:55:39

Python 代碼編程

2020-07-24 15:40:51

CSS前端代碼

2022-04-10 10:41:17

ESLint異步代碼

2022-03-11 12:14:43

CSS代碼前端

2024-05-24 10:51:51

框架Java

2023-11-23 13:50:00

Python代碼

2019-09-29 16:17:25

Java代碼性能編程語言

2017-09-27 16:09:29

代碼

2023-07-10 09:39:02

lambdaPython語言

2022-12-26 07:47:37

JDK8函數(shù)式接口

2025-04-21 17:55:25

2022-11-18 08:32:23

spring參數(shù)解析器

2025-02-10 00:25:00

命令模式擴展機制系統(tǒng)

2018-07-12 14:20:33

SQLSQL查詢編寫

2025-02-17 08:50:00

CSS代碼JavaScript

2024-07-03 08:13:56

規(guī)則執(zhí)行器代碼

2024-07-30 14:09:19

裝飾器Python代碼

2024-02-23 08:57:42

Python設計模式編程語言

2024-12-03 16:36:08

事件總線C#代碼

2024-08-20 14:25:20

點贊
收藏

51CTO技術棧公眾號