日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
兩種CSS方法論你知道嗎?

前言

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東鄉(xiāng)免費(fèi)做網(wǎng)站回饋大家。

說起 CSS 命名規(guī)范,大家應(yīng)該都很熟悉,或者應(yīng)該聽說過 BEM 。BEM 是由 Yandex 團(tuán)隊(duì)提出的一種 CSS Class 命名方法,旨在幫助開發(fā)人員創(chuàng)建更好的且結(jié)構(gòu)一致的 CSS 模塊。

BEM 將頁(yè)面的類名分為塊(Block)、元素(Element)、修飾符(Modifier)。

  • 塊(Block):一個(gè)塊是視覺上或者語(yǔ)義上的一個(gè)整體,它是一個(gè)具體且唯一的一個(gè)元素,例如,頁(yè)面上的一個(gè)彈窗,或者是一個(gè)搜索框;
  • 元素(Element):一般認(rèn)為是塊的組成部分,元素比較用它父級(jí)的塊名稱做為前綴,例如,彈窗的標(biāo)題、關(guān)閉按鈕、確認(rèn)按鈕;
  • 修飾符(Modifier):修飾符表示一個(gè)具體元素的特定狀態(tài),例如,關(guān)閉按鈕在鼠標(biāo)沒放上去和放上去的時(shí)候,呈現(xiàn)的兩種狀態(tài)。

現(xiàn)在用 Bootstrap 的彈窗組件,舉一個(gè)更加具體的例子:

鼠標(biāo)放上去和沒放上去的狀態(tài)是有區(qū)別的。

通過上面的示例可以看出,塊與元素是通過兩個(gè)下劃線(__)連接的,而元素和修飾符之間是通過兩個(gè)短橫線(--)連接的。

當(dāng)然,今天的文章不會(huì)著重介紹什么是 BEM,如果你之前沒接觸過 BEM 可以嘗試去了解一下,并且多在在項(xiàng)目中試用幾次,感受他的魅力。另外,現(xiàn)在網(wǎng)上已經(jīng)有非常多的文章在介紹 BEM 了,耐心找,肯定能找到優(yōu)秀的教程的。今天的文章會(huì)分享比較少人介紹的兩種 CSS 方法論:SUIT CSS 和 SMACSS。

SUIT CSS

“官方文檔:SUIT CSS命名約定(https://github.com/suitcss/suit/blob/master/doc/naming-conventions.md)

SUIT CSS是一種基于組件開發(fā)的 CSS 的方法論,它將類名分為兩種類型:工具類和組件類。

工具類

CSS 中有很多固定工具類,比如:左右浮動(dòng)、文本截?cái)唷⒋怪本又小?。工具類的作用是幫助程序減少一些重復(fù)代碼,并提供一致的實(shí)現(xiàn)。

命名規(guī)則:u-[sm-|md-|lg-]<工具類名>。工具類使用 u- 打頭,后面接類名(類名使用駝峰的方式命名),中間可以加上 sm、md、lg 這種響應(yīng)式的規(guī)則。

舉個(gè)栗子:

 
 
 
 
  1.   
  2.   
  3.     看看我的博客
  4.   
  5.   
  6.   
  7.     愛折騰的前端工程師,歡迎關(guān)注我的公眾號(hào)「更了不起的前端」
  8.   

組件類

組件類用來描述一個(gè)個(gè)具體的組件,組件是構(gòu)成一個(gè)具體應(yīng)用程序的基石,所以組件的設(shè)計(jì)特別重要。

命名規(guī)則:[<命名空間>-]<組件名>[-后代名][--修飾符],這樣的命名方式,在編寫 HTML 和 CSS 的時(shí)候有幾個(gè)好處:

  • 有助于區(qū)分組件的根元素,后代元素,以及用來修飾的類;
  • 降級(jí)類名重復(fù)的幾率;
  • 能夠讓類名更具有語(yǔ)義化;

下面來看看命名規(guī)則的各個(gè)部分的具體作用:

命名空間(可選)

命名空間是可選的,如果你希望避免自己定義的組件類名與引入的第三方樣式類名發(fā)生沖突,則可以為自己的類名加上命名空間。但是,如果你們業(yè)務(wù)中不存在第三方的樣式,則可以不帶命名空間。

 
 
 
 
  1. .sfq-Modal{} /* 我的彈窗組件 */
  2. .sfq-Button {} /* 我的按鈕組件 */

組件名

組件名使用大駝峰規(guī)則(首字母大寫的駝峰規(guī)則,Pascal Case)來命名,使用這種方式也可以盡可能的避免出現(xiàn)同名樣式的沖突。

 
 
 
 
  1. .Modal {}
 
 
 
 
  1.   …

組件名-后代名

組件的后代指附加在組件上的一部分,例如,彈窗組件的標(biāo)題、按鈕等等。后代名稱使用小駝峰規(guī)則(首字母大寫的駝峰規(guī)則,Camel Case)命名。

 
 
 
 
  1.   
  2.     歡迎關(guān)注
  3.     X
  4.   
  5.   
  6.     愛折騰的前端工程師,歡迎關(guān)注我的公眾號(hào)「更了不起的前端」
  7.   
  • 組件名--修飾符

    修飾符是一種表示組件特定狀態(tài)的類名,修飾符名稱同樣使用小駝峰規(guī)則來命名,并且和組件名直接需要用兩個(gè)短橫線(--)進(jìn)行連接,這與 BEM 表現(xiàn)一致。

     
     
     
     
    1. 點(diǎn)擊關(guān)注「更了不起的前端」
    2. 點(diǎn)擊關(guān)注「更了不起的前端」

    變量名

    SUIT CSS 除了定義了工具類、組件類這兩種命名方式外,還有定義了 CSS 變量的命名方式。命名規(guī)則: --組件名[-后代名|--修飾符]-(CSS屬性|變量名)。

     
     
     
     
    1. :root {
    2.   /* 基礎(chǔ)按鈕的背景色 */
    3.   --Button--default-backgroundColor: #909399;
    4.   /* 主要按鈕的背景色 */
    5.   --Button--primary-backgroundColor: #409EFF;
    6. }

    SUIT CSS 小結(jié)

    SUIT CSS 除了定義了工具類、組件類的命名方式外,還提供了完整的基礎(chǔ)類,以及測(cè)試套件用來檢測(cè)你的 CSS 類名是否符合規(guī)范,具體使用方法可以查看官方文檔(https://github.com/suitcss/suit)。SUIT CSS 可以說在 BEM 的基礎(chǔ)上進(jìn)行了改進(jìn),特別是去除了雙下劃線的設(shè)計(jì),在觀感上就比 BEM 美觀了許多,而且各種名稱都是通過駝峰的方式命名,省略了部分短橫線,這讓 SUIT CSS 的類名的長(zhǎng)度上也會(huì)比 BEM 更加精簡(jiǎn)。

    SMACSS

    “SMACSS 官網(wǎng):http://smacss.com/

    SMACSS (Scalable and Modular Architecture for CSS)是一套易開發(fā),易維護(hù)的 CSS 編寫的方法論,它將 CSS 規(guī)則一共分為五大類:

    • Base(基礎(chǔ))
    • Layout(布局)
    • Module(模塊)
    • State(狀態(tài))
    • Theme(主題)

    你應(yīng)該能在你現(xiàn)有項(xiàng)目的樣式里發(fā)現(xiàn)上面的五個(gè)分類,這幾種類型的樣式混合在一起會(huì)讓你的代碼顯得特別復(fù)雜,如果你有意識(shí)將這些樣式歸類,將大大降低復(fù)雜度。除了將樣式歸類之外,每個(gè)類別還有一些適用的準(zhǔn)則。

    基礎(chǔ)規(guī)則

    基礎(chǔ)規(guī)則作用于元素選擇器,用于定義 HTML 標(biāo)簽的默認(rèn)樣式?;A(chǔ)樣式主要用于設(shè)置標(biāo)題大小,默認(rèn)鏈接顏色,默認(rèn)字體樣式以及body背景等。

     
     
     
     
    1. /* 基礎(chǔ)樣式示例 */
    2. body, form {
    3.     margin: 0;
    4.     padding: 0;
    5. }
    6. a {
    7.     color: #039;
    8. }
    9. a:hover {
    10.     color: #03F;    
    11. }

    布局規(guī)則

    CSS 的本質(zhì)上來說就是布局頁(yè)面中的元素的,但是,頁(yè)面各個(gè)元素也是有主次之分的。例如,頭部、尾部這種大的區(qū)塊就是主要組件,我們稱之為布局(Layout)。而導(dǎo)航欄(屬于頭部),網(wǎng)站說明(屬于尾部)這種區(qū)塊為次要組件,我們稱之為模塊(Module)。

    下面舉個(gè)具體的案例,來看看掘金的頁(yè)面布局:

    juejin.cn

    頁(yè)面上有一個(gè)頭部,一個(gè)導(dǎo)航條,一個(gè)內(nèi)容區(qū)域以及一個(gè)側(cè)邊欄,這些都屬于布局的部分。

    juejin.cn

    SMACSS 中允許在布局樣式中,使用 ID 選擇器,有助于在 HTML 中一眼區(qū)分出節(jié)點(diǎn)在布局中的位置。其他的非 ID 選擇器的類,需要添加 l- 前綴,表示這屬于布局樣式。

     
     
     
     
  • 模塊規(guī)則

    前面提到過模塊,模塊是相對(duì)與布局組件來說,更加松散的次要組件,這個(gè)區(qū)分確實(shí)比較模糊,所以有一些方案也取消了布局規(guī)則,將所有可重用組件都劃分為模塊。

    模塊規(guī)則在官方文檔沒有詳細(xì)的命名風(fēng)格,我看了很多文章,在命名模塊的時(shí)候基本都是在參考 BEM,所以這里不再單獨(dú)介紹。

    狀態(tài)規(guī)則

    狀態(tài)是用來描述模塊在不同狀態(tài)下的外觀,使用 is- 前綴,這有助于我們?cè)?HTML 中區(qū)分元素的狀態(tài)。

     
     
     
     
    1.   
    2.   
    3.     歡迎關(guān)注
    4.     歡迎關(guān)注
    5.   

    某些狀態(tài)優(yōu)先級(jí)比較高,可以酌情加上 !important,例如用來控制元素顯示或隱藏的。

     
     
     
     
    1. .is-hide {
    2.     display: none !important;
    3. }
    4. .is-show {
    5.     display: block !important;
    6. }

    SMACSS 小結(jié)

    這里沒有特別介紹主題規(guī)則,因?yàn)橹黝}在當(dāng)前這個(gè)時(shí)間,基本已經(jīng)被 CSS 變量所替代。SMACSS 有很多的規(guī)則這里沒有詳細(xì)列出來,但是在關(guān)于 CSS 如何命名方面的規(guī)則其實(shí)比較少,而且它的布局規(guī)則與模塊規(guī)則確實(shí)有些模糊,不太好區(qū)分。

    本文轉(zhuǎn)載自微信公眾號(hào)「更了不起的前端」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系更了不起的前端公眾號(hào)。


    本文標(biāo)題:兩種CSS方法論你知道嗎?
    網(wǎng)站地址:http://www.dlmjj.cn/article/ccsoiep.html