css書寫規則總結

1. JavaScript鉤子使用的class不能是css class,要加j或j-前綴css

2. 選擇器html

  2.1 css選擇器儘可能簡短,層級要少,最好是1-2層前端

  例如:.nav{} 優於 ul.nav{}htm

  2.2 不要依賴於html層級結構繼承

  例如:.nav a{} 優於 .nav li a{}圖片

  2.3 不用Id選擇器,複用度過低ip

  2.4 用class命中元素,而不是標籤element

3. 不聲明高度。高度僅僅用於尺寸固定的東西,例如圖片和css sprite.
而p,ul,div等元素上不該當聲明高度,須要時,優先使用line-height,更加靈活開發

4. 簡寫it

background:red是很差的寫法。由於其同時聲明瞭
background-image:none;
background-position:top left;
background-repeat: repeat;
background-color:red;
應當用 background-color:red

只修改底邊距的話,margin-bottom:0 優於 margin:0


5.使用Sass等預處理器,減小嵌套層次,最好2層之內

6. BEM命名法

BEM,即Block, Element, Modifier,是由Yandex(俄羅斯最著名的互聯網企業)的開發團隊提出的前端開發理論。BEM經過Block、Element、Modifier來描述頁面。

Block是頁面中獨立存在的區塊,能夠在不一樣場合下被重用。每一個頁面均可以看作是多個Block組成。

Element是構成Block的元素,只有在對應Block內部才具備意義,是依賴於Block的存在。

Modifier是描述Block或Element的屬性或狀態。同一Block或Element能夠有多個Modifier。

這三部分結合在一塊兒,能夠體如今class命名上,從而爲開發者提供更友好、更有意義的css組織方式。其形式是:

.block { }
.block_modifier { }
.block__element { }
.block__element_modifier { }

7. OOCSS

Separate structure and skin

分離結構和主題是在於將一些視覺樣式效果(例如background、color)做爲單獨的「主題」來應用。在上面的例子中的陰影效果,沒有被直接寫在media的樣式規則內,而是被單獨寫在了一個名爲media-shadow的class中。所以,它成爲了可選擇、可拆分的主題。若是不須要對應主題,什麼也不要加,若是須要,加上對應的class,就是這樣的思路。

Separate container and content

分離容器和內容要求使頁面元素不依賴於其所處位置。在上面的例子中,css的選擇符都很短,無繼承選擇符(例如.header .media { }),因此,這個圖文排列的元件,能夠在任何地方使用,且會有一致的外觀。

若是須要在特定的地方讓這個元件看起來不同一些,繼續爲這個元件增長class,將「不同的部分」做爲可配置的選項。元件的外觀仍不依賴其所處位置。

相關文章
相關標籤/搜索