CSS工程化

目的

  • 提供一致,合理的開發(fā)基礎(chǔ)
  • 應(yīng)對(duì)變化
  • 提升效率

CSS reset和normalize.css

  • CSS reset設(shè)置HTML標(biāo)簽的默認(rèn)樣式鹊漠,使其在各個(gè)瀏覽器表現(xiàn)基本一致,讓默認(rèn)樣式歸零酝豪。
  • normalize.css置HTML標(biāo)簽的默認(rèn)樣式称簿,使其在各個(gè)瀏覽器表現(xiàn)基本一致耸棒,保留默認(rèn)樣式丰歌。

CSS模塊

  • 可復(fù)用的CSS代碼段
  • 與模塊在HTML中的位置無關(guān)
  • (一般)與使用的HTML標(biāo)簽無關(guān)

CSS模塊原則

  • 面向?qū)ο螅∣OCSS)
    • 結(jié)構(gòu)和皮膚的分離
      舉個(gè)栗子: .btn(結(jié)構(gòu)) .btn-info(皮膚) .btn-danger(皮膚)
    • 容器和內(nèi)容的分離
  • 單一職責(zé)(SRP)
    • 盡可能的拆分成可獨(dú)立復(fù)用的組件
    • 使用組合方式使用多個(gè)組件
    • 比如將布局和其他樣式拆分
      舉個(gè)栗子:
/* bad example */
.error-massage{
      display:block;
      padding:10px;
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      background-color:#fee;
      color:#f00;
      font-weight:bold;
}
.success-massage{
      display:block;
      padding:10px;
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      background-color:#efe;
      color:#0f0;
      font-weight:bold;
}
/* better example */
.box{
      display:block;
      padding:10px;
}
.massage{
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      font-weight:bold;
}
.massage-error{
      background-color:#fee;
  color:#f00;
}
.massage-success{
      background-color:#efe;
      color:#0f0;
}
  • 開閉原則
    • 對(duì)擴(kuò)展開發(fā)
    • 對(duì)修改封閉
      舉個(gè)栗子:
.box{
      display:block;
      padding:10px;
}  
/* bad example */
.content .box{
      padding:20px;
}
/* better example */
.box-large{
      padding:20px;
}
  • DRY(Don't Repeat Yourself)
    舉個(gè)栗子:
/* bad example */
selector{
      border-top:1px solid #eee;
      border-left:1px solid #eee;
      border-bottom:1px solid #eee;
}
/* better example */
selector{
      border:1px solid #eee;
      border-right:none;
}

命名Naming

  • 基于功能
    • 它是用來做什么的
    • .btn/.list/.form/.external-link
  • 基于內(nèi)容
    • 元素里面放置什么內(nèi)容
    • .news/.help/.user-info
  • 基于視覺
    • 看起來是什么樣
    • .nowrap

命名原則

  • 優(yōu)先使用基于功能的命名
    樣式與功能無關(guān)
  • 中小型網(wǎng)站可以基于內(nèi)容命名
  • 大型網(wǎng)站可以使用基于視覺命名
    不要使用太具體的樣式

命名規(guī)范

BEM

  • Block
  • Element
  • Modifer
    舉個(gè)栗子
<!-- Block(moudle/compuent) --> 
 <nav class="tabs">
 </nav>
<!-- Element --> 
      <a href="#" class="tabs_items">HTML</a>
      <a href="#" class="tabs_items">CSS</a>
      <a href="#" class="tabs_items">JavaScript</a>
<!-- Modifer(修飾) --> 
 <nav class="tabs tabs--stacked">
        <a href="#" class="tabs_items tabs_items--active">HTML</a>
 </nav>
  <!-- .block__element---modifer--> 
<nav class="tabs tabs--stacked">
      <a href="#" class="tabs_items tabs_items--active">HTML</a>
      <a href="#" class="tabs_items" class="tabs-items">CSS</a>
      <a href="#" class="tabs_items">JavaScript</a>
  </nav>

編寫簡潔易維護(hù)的CSS代碼

CSS預(yù)處理器

  • less
  • Sass
  • Stylus
  • PostCSS
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屉凯,隨后出現(xiàn)的幾起案子立帖,更是在濱河造成了極大的恐慌,老刑警劉巖悠砚,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晓勇,死亡現(xiàn)場離奇詭異,居然都是意外死亡灌旧,警方通過查閱死者的電腦和手機(jī)绑咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枢泰,“玉大人描融,你說我怎么就攤上這事∽诓裕” “怎么了稼稿?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讳窟。 經(jīng)常有香客問我让歼,道長,這世上最難降的妖魔是什么丽啡? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任谋右,我火速辦了婚禮,結(jié)果婚禮上补箍,老公的妹妹穿的比我還像新娘改执。我一直安慰自己,他們只是感情好坑雅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布辈挂。 她就那樣靜靜地躺著,像睡著了一般裹粤。 火紅的嫁衣襯著肌膚如雪终蒂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天遥诉,我揣著相機(jī)與錄音拇泣,去河邊找鬼。 笑死矮锈,一個(gè)胖子當(dāng)著我的面吹牛霉翔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苞笨,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼债朵,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼子眶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起葱弟,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤壹店,失蹤者是張志新(化名)和其女友劉穎猜丹,沒想到半個(gè)月后芝加,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡射窒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年藏杖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脉顿。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝌麸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艾疟,到底是詐尸還是另有隱情来吩,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布蔽莱,位于F島的核電站弟疆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盗冷。R本人自食惡果不足惜怠苔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仪糖。 院中可真熱鬧柑司,春花似錦、人聲如沸锅劝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽故爵。三九已至玻粪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稠集,已是汗流浹背奶段。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剥纷,地道東北人痹籍。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像晦鞋,于是被迫代替她去往敵國和親蹲缠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棺克,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • CSS 預(yù)處理器技術(shù)已經(jīng)非常的成熟娜谊,而且也涌現(xiàn)出了越來越多的 CSS 的預(yù)處理器框架。本文向你介紹使用最為普遍的三...
    Mx勇閱讀 1,302評(píng)論 0 7
  • 再談CSS 預(yù)處理器2016-09-09 Justineo JavaScript轉(zhuǎn)自:http://efe.bai...
    抓住時(shí)間的尾巴吧閱讀 1,561評(píng)論 0 2
  • 基礎(chǔ) 聲明變量 普通變量 默認(rèn)變量 變量覆蓋:只需要在默認(rèn)變量之前重新聲明下變量即可 變量的調(diào)用 局部變量和全局變...
    Jill1231閱讀 1,270評(píng)論 0 1
  • 1斤讥、垂直對(duì)齊 如果你用CSS纱皆,則你會(huì)有困惑:我該怎么垂直對(duì)齊容器中的元素?現(xiàn)在芭商,利用CSS3的Transform派草,...
    kiddings閱讀 3,153評(píng)論 0 11
  • 畢業(yè)一年近迁。 一邊迷茫,一邊追夢(mèng)簸州,一直搖擺不定中鉴竭。 小的時(shí)候就想當(dāng)一名老師,也許是因?yàn)橛X得從一年級(jí)就教我的秦老師特別...
    哆啦and夢(mèng)想閱讀 200評(píng)論 0 0