摘要:本篇介紹幾種命名規(guī)范。使用的網(wǎng)站四其他命名規(guī)范等減少對結(jié)構(gòu)的依賴增加重復性的使用幾種命名規(guī)范比較與在命名上相反的點可以放心使用,以為都是在模塊內(nèi)但不推薦當前我們的網(wǎng)站略有思想更概括,中的,相當于的,相當于的,相當于的中文
本篇介紹幾種CSS命名規(guī)范。 (規(guī)范詳細請參考底部References)
一、NEC (nice easy css)網(wǎng)易前端CSS開源項目
1.1 樣式分類重置和默認:reset + base
布局(g-) 例如頭部,尾部,主體,側(cè)欄等
模塊(m-) 較大整體,如登錄注冊,搜索等
元件(u-) 不可再分個體,例如按鈕,input框等
功能(f-) 使用頻率較高樣式,例如清除浮動
皮膚(s-) 例如文字色,背景色,邊框色等
狀態(tài)(z-) 例如hover,選中等
j- 專門用于js獲取節(jié)點,勿占用
舉個例子:
1.2 命名規(guī)則樣式命名時始終以以上幾類(g-等)開頭,然后使用后代選擇器
約定后代選擇器不使用單個字母+“-”的形式,不使用單個字母
通過使用后代選擇器,==后代選擇器不需要考慮名字是否已被使用==,因為只在當前模塊生效
(還是有可能會污染,注意避免)
命名簡約不失語義 .green2 --bad .wrap2 --good
相同語義的不同類命名 —可直接加數(shù)字或字母區(qū)分 .m-list .m-list2
出現(xiàn)率高的做成基類,再做擴展類:
基類+擴展類 :class="m-list m-list-2” class="u-btn u-btn-hover”
選擇器,屬性和值小寫
NEC規(guī)范推薦單行寫完一個選擇器定義(sass,不適用)
盡量不要省略分號
省略0時的單位
十六進制表示顏色,盡量縮寫
根據(jù)屬性重要性順序書寫
按布局、盒模型,修飾的順序
推薦插件css comb (sublime text 插件)
背景圖優(yōu)化合并
圖片本身的優(yōu)化
-- 色彩過于豐富無透明要求 --> jpg較高質(zhì)量
-- 色彩過于豐富且有透明或者陰影要求--> png24
-- 色彩不太豐富且無論有無透明要求--> png8
多張圖片合并的優(yōu)化
-- 排列方式
-- 合并后圖片大小不宜超過50k,
-- 為了保持一致性,記得保留PSD原圖
如果CSS能做到,不要用js
css控制視覺變化,js只需要更改classname
統(tǒng)一語義理解及命名:
1.6 典型錯誤不要以沒有語義的標簽作為選擇器
.m-nav div{}
不要越級控制
.m-xxx .m-yyy a{}
不要在頁面布局中使用后代選擇器
.g-xxx .btn{}
不要用頁面布局去控制模塊或者元件
.g-xxx .m-yyy
http://nec.netease.com/case
http://yuedu.163.com/
Alice的樣式模塊組織方式追求扁平化方式,分為三個層級:
基礎(chǔ)框架(reset+iconfont+柵格)
通用模塊
頁面樣式 (繼承通用模塊)
任何模塊在頁面中應該像一個盒模型,不和頁面的其他元素互相影響,完美的Alice模塊應該是一個“口”字型
2.1 命名規(guī)范用“-”做命名空間上的區(qū)隔,最小化兩個模塊之間的命名沖突
第一個前綴作為通用模塊標識,各業(yè)務(wù)線選取自己的前綴
模塊名是必選的,要求表意的
模塊內(nèi)部類名繼承上層名稱
不推薦這樣寫,很容易造成命名沖突:
參看模塊的樣式:
Alice類命名規(guī)范
一個簡單的使用Alice的例子:
https://github.com/aliceui/al...
Yandex團隊提出的前端CSS命名方法論。
優(yōu)點:less confusing & recognizable
Block: 一個塊是一個獨立的實體,塊可以包含其他塊;
例如一個搜索塊;
Element: 一個元素是塊的一部分,具有某種功能。元素是依賴上下文的,它們只有處于它們應該屬于的塊的上下文時才有意義。
例如搜索塊里的input框或button;
Modifier: 修飾符作為一個塊或者一個元素的屬性,代表這個塊或者是元素在外觀或是行為上的改變。
例如tab選中高亮。
一種命名規(guī)則:
塊名:block-name,它為元素和修飾符定義了命名空間
元素名:與塊名使用“__”連接(double underscore),block-name__ele-name
修飾符名:使用“_”連接(single underscore)
對于Boolean類型修飾符 —— owner-name_mod-name;
對于key-value類型的修飾符 —— owner-name_mod-name_mod-val;
舉個例子:
html:
CSS:
.form {} .form_theme_forest {} .form_login {} .form__input {} .form__submit {} .form__submit_disabled {}
其他命名規(guī)則也有很多,例如:
Two dash style
例如:block-name__elem-name--mod-name
CamelCase style
例如MyBlock__SomeElem_modName_modVal
--BEM提供一種規(guī)范,具體命名規(guī)則可以根據(jù)個人偏好選擇
BEM的關(guān)鍵是光憑名字就可以判斷某個標記是用來干什么的。通過瀏覽HTML代碼中的class屬性,你就能夠明白模塊之間是如何關(guān)聯(lián)的:有一些僅僅是組件,有一些則是這些組件的子孫或者是元素,還有一些是組件的其他形態(tài)或者是修飾符。
BEM可能看上去有點滑稽,而且有可能導致我們輸入更長的文本(大部分編輯器都有自動補全功能,而且gzip壓縮將會讓我們消除對文件體積的擔憂),但是它依舊強大。
http://company.yandex.ru/
https://hh.ru/
OOCSS、SMACSS、SUITCSS、Atomic等
OOCSS:
減少對 HTML 結(jié)構(gòu)的依賴
增加 CSS class 重復性的使用
http://www.w3cplus.com/css/oo...
幾種命名規(guī)范比較:
NEC 與 AliceUI 在命名上相反的點:
.m-list .title 可以放心使用,以為都是在模塊內(nèi),但AliceUI不推薦
當前我們的網(wǎng)站略有OOCSS思想
BEM更概括,NEC中的g-,m-相當于BEM的block,u-相當于BEM的element, f-,z-,s-相當于BEM的modifier.
References[1].http://nec.netease.com/
[2].https://github.com/aliceui/al...
[3].http://getbem.com/introduction/ (BEM)
[4].https://en.bem.info/methodolo...
**http://www.w3cplus.com/css/be...中文)
[5].https://segmentfault.com/a/11... (BEM)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115439.html
摘要:命名規(guī)則樣式類名全部用小寫,首字符必須是字母,禁止數(shù)字或其他特殊字符。其他禁止使用在樣式表命名中,一律使用命名。什么是命名空間通過統(tǒng)一的命名規(guī)范定義命名的范圍,成為命名空間。1 前端開發(fā)命名規(guī)范 1.1 為什么要制定CSS命名規(guī)范 統(tǒng)一的命名規(guī)范,便于多人開發(fā)維護時代碼統(tǒng)一,減少項目溝通和交接的成本,增加代碼的語義化。 1.2 CSS命名規(guī)則 樣式類名全部用小寫,首字符必須是字母,禁止數(shù)...
摘要:引言最近想將這幾個月做過的東西組件化,然后首先想到的是編碼規(guī)范化本文只涉及命名規(guī)范,搬來了造好的輪子。舉例對齊樣式使用對齊目標的英文名稱。舉例注意事項一律小寫盡量用英文不加中杠和下劃線盡量不縮寫,除非一看就明白的單詞。 引言:最近想將這幾個月做過的東西組件化,然后首先想到的是 編碼規(guī)范化!本文只涉及 CSS 命名規(guī)范,搬來了Alloyteam 造好的輪子??赡懿⒉煌耆m用,在以后...
摘要:簡評是一種很耗時的操作,如果有良好的命名規(guī)范可以節(jié)約很多的時間。一些團隊使用連字符分隔符,而其他團隊則傾向于使用更加結(jié)構(gòu)化的稱為的命名規(guī)范。一般來說,命名規(guī)范有三個問題要解決能夠通過名字就能清楚選擇器的功能。 簡評:Debug CSS 是一種很耗時的操作,如果有良好的命名規(guī)范可以節(jié)約很多的 Debug 時間。 使用連字符(-)分隔字符串 你可能習慣了在 Javascript 中使用小駝...
摘要:前言在項目開發(fā)中對于名字的命名和書寫老是感覺很混亂,這對于代碼的可讀性以及維護提出了挑戰(zhàn),所以在閑暇之余看了一些這方面的內(nèi)容,現(xiàn)總結(jié)如下命名規(guī)則說明所有的命名最好都小寫屬性的值一定要用雙引號括起來,且一定要有值如每個標簽都要有開始和結(jié)束,且 前言 在項目開發(fā)中對于css名字的命名和書寫老是感覺很混亂,這對于代碼的可讀性以及維護提出了挑戰(zhàn),所以在閑暇之余看了一些這方面的內(nèi)容,現(xiàn)總結(jié)如下....
摘要:前言在項目開發(fā)中對于名字的命名和書寫老是感覺很混亂,這對于代碼的可讀性以及維護提出了挑戰(zhàn),所以在閑暇之余看了一些這方面的內(nèi)容,現(xiàn)總結(jié)如下命名規(guī)則說明所有的命名最好都小寫屬性的值一定要用雙引號括起來,且一定要有值如每個標簽都要有開始和結(jié)束,且 前言 在項目開發(fā)中對于css名字的命名和書寫老是感覺很混亂,這對于代碼的可讀性以及維護提出了挑戰(zhàn),所以在閑暇之余看了一些這方面的內(nèi)容,現(xiàn)總結(jié)如下....
閱讀 1356·2021-11-25 09:43
閱讀 777·2021-11-18 10:02
閱讀 2922·2021-09-07 09:59
閱讀 2787·2021-08-30 09:44
閱讀 2945·2019-08-30 13:17
閱讀 2341·2019-08-29 12:17
閱讀 1702·2019-08-28 17:57
閱讀 1317·2019-08-26 14:04