作者 | 京東科技 楊健
CSS(全稱 Cascading Style Sheets,層疊樣式表)為開發(fā)人員提供聲明式的樣式語言,是前端必備的技能之一,基于互聯(lián)網(wǎng)上全面的資料和簡單易懂的語法,CSS 非常易于學習,但其知識點廣泛且分散,很難做到精通,在我們日常開發(fā)中,常常忽視了 CSS 代碼的質量,很容易寫出雜亂無章的 CSS 文件。
代碼優(yōu)化建議
1. 使用縮寫屬性精簡代碼
適用于:margin、padding、border、font、background 等 但并非所有情況下都必須縮寫,因為當一個屬性的值縮寫時,總是會將所有項都設置一遍,而有時候我們不希望設置值里的某些項,這時候需要開發(fā)者自行判斷。
.content{ // 縮寫前 margin-right:16px; margin-top:30px; width:184px; height:32px; background:#FFFFFF margin-left:10px; } .content{ //縮寫后 margin:30px 16px 0 10px; width:184px; height:32px; background:#FFFFFF }
2. 合并選擇器
使用 "," 連接多個選擇器定義公用屬性,不僅能增加可讀性,還能減小 css 文件大小。
.content{
display: flex;
.flush,
.include,
.underline{
margin-right: 12px;
padding: 3px 6px;
border: 1px solid #a96161;
font-size: 12px;
color: #412c2c;
}
.flush{
color: #FFFFFF;
background-color: aqua;
}
.include{
color: #5d3e3e;
background-color: #657f7f;
}
.underline{
color: #7da938;
background-color: #7c6a6a;
}
}
3. 使用更語義化的單詞命名 class
命名的時候以 “在你之后開發(fā)的人不會產(chǎn)生疑惑” 為目標 如下
.curr{
color:#FFFFFF;
background:red;
}
.future{
background:#9f6262;
}
// curr 是啥? future又是啥?
.current-count{
color:#FFFFFF;
background:red;
}
.future-count{
background:#9f6262;
}
4. 屬性聲明順序
選擇器中屬性數(shù)量較多時,將相關的屬性聲明放在一起,并按以下順序排列:
定位相關,如 position、top/bottom/left/right、z-index 等
盒模型相關,如 display、float、margin、width/height 等
排版相關,如 font、color、line-height 等
可視相關,如 background、color 等
其他,如 opacity、animation 等
建議:在屬性數(shù)量較多時可以參考這 5 個類別歸類排列。
/* 定位相關 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* 盒模型相關 */ display: block; float: right; width: 100px; height: 100px; /* 排版相關 */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; color: #333; text-align: center; /* 可視相關 */ background-color: #f5f5f5; border: 1px solid #e5e5e5; border-radius: 3px; /* 其他 */ opacity: 1;
5. 使用 & 符號引用父選擇器
& 是 Sass 和 Less 中提供的語法糖,用于表示對父選擇器的引用 優(yōu)點:非常適合用于編寫組件的樣式,減少了很多重復單詞 缺點:從 HTML 的 class name 中尋找對應樣式的成本增加
.first { .first-title {/* styles */} .first-title:after {/* styles */} .first-content {/* styles */} } /* 用&引用來優(yōu)化代碼 */ .first { &-title { /* styles */ &:after {/* styles */} } &-content {/* styles */} }
Sass .vs. Less?
可嵌套的語法增加了樣式文件的可讀性和可維護性 變量與混合特性能夠減少很多重復的樣式聲明 Less 更像 CSS,易于上手,能夠從 CSS 平滑過渡;Sass 的縮進語法接受度因人而異,Sass3.0 中提出了兼容 CSS 的 Scss,用戶可以選擇使用 Sass 或 Scss。 當項目 CSS 中需要涉及復雜邏輯時,Sass/Scss 更適合,Sass 提供了更強大、更接近編程語言的 @function、@if/@else、@while 等語法;當項目的樣式復雜度不高時,選 Sass 或 Less 都可以。
(下面是一個 Less 和 Scss 語法對比例子)
// Less
.mixin( @count )when( @count > 0 ){
background-color: black;
}
.mixin( @count )when( @count <= 0 ){
background-color: white;
}
.tag {
.mixin(100);
}
// Scss
@function selectCount($count) {
@if $count > 0 {
return black;
}
@else {
return white;
}
}
.tag {
background-color: checkCount(100);
}
綜上,CSS 作為一門前端必備的基礎技能,具有許多原生的痛點。近年來,開發(fā)者們也在源源不斷地提出了不同的優(yōu)化方案,我們在日常關注 Vue、React、NodeJS、性能優(yōu)化等熱門前端話題的時候,也不要忘了好好寫 CSS 代碼呀~
審核編輯:湯梓紅
-
編程語言
+關注
關注
10文章
1965瀏覽量
39893 -
代碼
+關注
關注
30文章
4977瀏覽量
74420 -
CSS
+關注
關注
0文章
113瀏覽量
15610
原文標題:如何優(yōu)雅的寫css代碼
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
如何讓你的Python代碼竟優(yōu)雅又地道
HarmonyOS css和HTML css的區(qū)別是什么
鴻蒙css支持的屬性與普通css支持的屬性有哪些區(qū)別呢
如何查看/搜索/偷看/共享他人的css模板代碼
讓你的 Python 代碼優(yōu)雅又地道
行為和結構及表現(xiàn)分離的CSS選項卡的代碼免費下載
CSS框架:Materialize的特點和優(yōu)缺點
CSS框架:Tachyons的優(yōu)缺點
如何提高代碼性能、使代碼遠離Bug、令代碼更優(yōu)雅
Facebook開源StyleX如何在JavaScript中寫CSS呢?
Arm新Arm Neoverse計算子系統(tǒng)(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3
如何優(yōu)雅的寫css代碼
評論