1. 程式人生 > >前端編碼規範之CSS

前端編碼規範之CSS

  "字是門面書是屋",我們不會去手寫程式碼,但是敲出來的程式碼要好看、有條理,這還必須得有一點約束~

  團隊開發中,每個人的編碼風格都不盡相同,有時候可能存在很大的差異,為了便於壓縮元件對程式碼進行壓縮以及書寫樣式的規範統一和美觀,很有必要大家一起來研究一套基本規範(模板)!

  我先拋磚引玉。(禁止)、(必須)等字眼,在這裡只是表示強調,未嚴格要求

前端規範之CSS

1. tab鍵用(必須)四個空格代替

  因為在不同系統的編輯工具對tab解析不一樣,windows下的tab鍵是佔四個空格的位置,而在linux下會變成佔八個空格的位置(除非你自己設定了tab鍵所佔的位置長度)。

  一些童鞋可能會有疑問,tab鍵換成四個空格,多麻煩啊~

  其實不然,我平時用sublime text比較多,在這個工具中可以對tab鍵進行設定。

  選擇Indent Using Spaces,Tab Width:4兩項即可。

2. 每個樣式屬性後(必須)加 ";"

方便壓縮工具"斷句"。

3. Class命名中(禁止)出現大寫字母,(必須)採用” - “對class中的字母分隔,如:

 /* 正確的寫法 */
 .hotel-title {
     font-weight: bold;
 }

 /* 不推薦的寫法 */
 .hotelTitle 
{ font-weight: bold; }
  • 用"-"隔開比使用駝峰是更加清晰。
  • 產品線-產品-模組-子模組,命名的時候也可以使用這種方式(@Artwl)

4. 空格的使用,以下規則(必須)執行:

 .hotel-content {
     font-weight: bold;
 }
  • 選擇器與 之前必須)要有空格
  • 屬性名的 必須)要有空格
  • 屬性名的 禁止)加空格

一個原因是美觀,其次IE 6存在一個bug, 戳bug

5.多選擇器規則之間必須)換行

當樣式針對多個選擇器時每個選擇器佔一行

 /*
推薦的寫法 */ a.btn, input.btn, input[type="button"] { ...... }

6. 禁止)將樣式寫為單行, 如

.hotel-content {margin: 10px; background-color: #efefef;}

單行顯示不好註釋,不好備註,這應該是壓縮工具的活兒~

7. 禁止)向 後新增單位, 如:

.obj {
    left: 0px;
}

只是為了統一。記住,綠色字表強調,不表強制!

8. 禁止)使用css原生import

使用css原生import有很多弊端,比如會增加請求數等....

9. 推薦)屬性的書寫順序, 舉個例子:

.hotel-content {
     /* 定位 */
     display: block;
     position: absolute;
     left: 0;
     top: 0;
     /* 盒模型 */
     width: 50px;
     height: 50px;
     margin: 10px;
     border: 1px solid black;
     / *其他* /
     color: #efefef;
 }
  • 定位相關, 常見的有:display position left top float 等
  • 盒模型相關, 常見的有:width height margin padding border 等
  • 其他屬性

    按照這樣的順序書寫可見提升瀏覽器渲染dom的效能

  簡單舉個例子,網頁中的圖片,如果沒有設定width和height,在圖片載入之前,他所佔的空間為0,但是當他載入完畢之後,那塊為0的空間突然被撐開了,這樣會導致,他下面的元素重新排列和渲染,造成重繪(repaint)和迴流(reflow)。我們在寫css的時候,把元素的定位放在前頭,首先讓瀏覽器知道該元素是在文字流內還是外,具體在頁面的哪個部位,接著讓瀏覽器知道他們的寬度和高度,border等這些佔用空間的屬性,其他的屬性都是在這個固定的區域內渲染的,差不多就是這個意思吧~(@frec)

10. 小圖片(必須)sprite 合併

11. 推薦)當編寫針對特定html結構的樣式時,使用元素名 +類名

/* 所有的nav都是針對ul編寫的 */
 ul.nav {
     ......
 }

".a div"和".a div.b",為什麼後者好?如果需求有所變化,在".a"下有多加了一個div,試問,開始的樣式是不是會影響後來的div啊~

12. (推薦)IE Hack List

 /* 針對ie的hack */
 selector {
     property: value;     /* 所有瀏覽器 */ 
     property: value\9;   /* 所有IE瀏覽器 */ 
     property: value\0;   /* IE8 */
     +property: value;    /* IE7 */
     _property: value;    /* IE6 */
     *property: value;    /* IE6-7 */
 }

當使用hack的時候想想能不能用更好的樣式代替

13. 不推薦)ie使用filter,( 禁止)使用expression

這裡主要是效率問題,應該當格外注意,咱們要少用燒CPU的東西~ 

14. (禁止)使用行內(inline)樣式

<p style="font-size: 12px; color: #FFFFFF">靖鳴君</p>

像這樣的行內樣式,最好用一個class代替。又如要隱藏某個元素,可以給他加一個class

.hide {
    display: none;
}

儘量做到樣式和結構分離~

15. (推薦)reset.css樣式

16.(禁止)使用"*"來選擇元素

/*別這樣寫*/
* {
    margin: 0;
    padding: 0;
}

這樣寫是沒有必要的,一些元素在瀏覽器中預設有margin或padding值,但是隻是部分元素,沒有必要將所有元素的margin、padding值都置為0。

17. 連結的樣式,(務必)按照這個順序來書寫

a:link -> a:visited -> a:hover -> a:active

18. 你補充...

應該說在前面的話

  • 對於不同的團隊、不同的需求,編碼規範上有一些差異,這個很正常。
  • 最後上線的程式碼肯定不是上述遵從規範的,上線的程式碼都會經過打包和壓縮。
  • 不同的人有不同的編碼風格,當你是一個人作戰的時候,你可以不用考慮這些,但是如果是團隊開發,有一個規範還是很有指導價值的~

  這些規範是在團隊開發過程中,集思廣益總結出來的,不是很全面,如果你有好的建議,請提出來,我們一起打造一個良好的前端生態環境!

  後面我會陸續把HTML、JavaScript和LESS等規範羅列出來,大家共同進步!!!

相關推薦

前端編碼規範CSS

  "字是門面書是屋",我們不會去手寫程式碼,但是敲出來的程式碼要好看、有條理,這還必須得有一點約束~   團隊開發中,每個人的編碼風格都不盡相同,有時候可能存在很大的差異,為了便於壓縮元件對程式碼進行壓縮以及書寫樣式的規範統一和美觀,很有必要大家一起來研究一套基本規範(模板)!   我先拋磚引玉。(禁止

前端編碼規範JavaScript

  上次淺談了下關於CSS的編碼規範,大部分童鞋持贊同意見,仍存在一些童鞋不太理解這些規範的意義。   如果是個人或者小作坊開發,其實這些所謂的編碼規範也沒啥意思,因為大家寫好的程式碼直接就給扔到網上去了,很少有打包、壓縮、校檢等過程,別人來修改你程式碼的情況也比較少。但是,對於一定規模的團隊來說,這些東西

前端編碼規範 -- css

註釋 lis post css 抽象 避免 lin 合作 節點 合理的避免使用ID 一般情況下ID不應該被應用於樣式。 ID的樣式不能被復用並且每個頁面中你只能使用一次ID。 使用ID唯一有效的是確定網頁或整個站點中的位置。 盡管如此,你應該始終考慮使用class,而不是i

前端規範CSS程式碼規範

CSS編碼規範 語法 · 用兩個空格來代替製表符(tab) -- 這是唯一能保證在所有環境下獲得一致展現的方法。 · 為選擇器分組時,將單獨的選擇器單獨放在一行。 · 為了程式碼的易讀性,在每個宣告塊的左花括號前新增一個空格。 · 宣告塊的右花括

前端開發規範命名規範、html規範css規範、js規範

在學習程式設計的時候,每次看到那些整齊規範的程式碼,心裡頓時對這個程式設計師表示點點好感,有時,比如看到自己和朋友寫的程式碼時,那閱讀起來就是苦不堪言,所以,一些基本的開發規範是必須的,是為了自己方便閱讀程式碼,也方便他人閱讀修改程式碼。 命名

前端開發規範jQuery編碼規範

前端開發whqet,csdn,王海慶,whqet,前端開發專家翻譯人員:前端開發whqet,意譯為主,不當之處敬請指正。譯者說:臨近期末,大部分的基礎教學內容已經講解完畢,在進行比較大型的專案訓練之前,如果能讓學生了解甚至遵循一些前端開發的編碼規範將會是一件非常有意義的事情。

Bootstrap CSS 編碼規範Less 和 Sass 中的巢狀

Less 和 Sass 中的巢狀避免不必要的巢狀。這是因為雖然你可以使用巢狀,但是並不意味著應該使用巢狀。只有在必須將樣式限制在父元素內(也就是後代選擇器),並且存在多個需要巢狀的元素的時候,才使用巢狀。// Without nesting.table > thead

《從零開始學Swift》學習筆記(Day 57)——Swift編碼規範凝視規範:文件凝視、文檔凝視、代碼凝視、使用地標凝視

精品 -type mil 顯示 clas ber ansi tex text 原創文章。歡迎轉載。轉載請註明:關東升的博客 前面說到Swift凝視的語法有兩種:單行凝視(//)和多行凝視(/*...*/)。這裏來介紹一下他們的使用規範。 1、文件凝視文件凝視就在每個文

前端編碼規範 -- html篇

一個 不可 發的 性能 itl 它的 替代 可用性 樣式 文檔類型 推薦使用 HTML5 的文檔類型申明: <!DOCTYPE html> (建議使用 text/html 格式的 HTML。避免使用 XHTML。XHTML 以及它的屬性,比如 applicati

前端編碼規範 -- 通用篇

好的 空格 lint 重要 body 單詞 分隔符 ges win 前言 本系列意在增強團隊的開發協作,提高代碼質量和打造開發基石的編碼風格規範。 我們知道,當一個團隊開始指定並實行編碼規範的話,錯誤就會變得更加顯而易見。如果一段特定的代碼不符合規範的話,它有可能只是代碼風

編碼規範命名

1.命名 命名是一個看似簡單卻值得深究的一個過程。變數、函式、檔案等等命名有一些內在的要求:見名知義。一個好的名字可以讓人一眼就知道它是做什麼的,它往往是一個事物的高度概括。如果一個名字取得不好,那麼可能會其他人帶來閱讀上的困難,甚至引起歧義。變數名和檔名一般採用名詞,而函式名一般採用動賓結構。

HTML 編碼規範布林型屬性

布林屬性:     XHTML 規範要求為布林型屬性賦值,到了HTML5,一切化繁為簡。HTML5 規範規定:元素的布林型屬性如果有值,就是 true,如果沒有值,就是 false。因此,在宣告布林型屬性時,不用賦值。   我們可以看到<input

前端系列教程CSS(盒模型)

盒模型 Margin(外邊距) - 清除邊框區域。Margin沒有背景顏色,它是完全透明 Border(邊框) - 邊框周圍的填充和內容。邊框是受到盒子的背景顏色影響 Padding(內邊距) - 清除內容周圍的區域。會受到框中填充的背景顏色影響 Content(內容) - 盒子的

前端系列教程CSS(引入)

CSS 引入 當讀到一個樣式表時,瀏覽器會根據它來格式化 HTML 文件。 插入樣式表的方法有三種: 外部樣式表 內部樣式表 內聯樣式 一、外部樣式表 當樣式需要應用於很多頁面時,外部樣式表將是理想的選擇。在使用外部樣式表的情況下,你可以通過改變一個

前端讀者 | 百度前端編碼規範(JS)

本文來自:百度FEX 1 前言 JavaScript在百度一直有著廣泛的應用,特別是在瀏覽器端的行為管理。本文件的目標是使JavaScript程式碼風格保持一致,容易被理解和被維護。 雖然本文件是針對JavaScript設計的,但是在使用各種JavaScript的預編譯語言時(如TypeScript等)時

程式設計小技巧(三)-------前端編碼規範

年末了最近在整理檔案,順手寫了一套編碼規範,來源於工作和習慣。雖然程式設計師多不勝數,但是不是每一個程式設計師都寫的一手好程式碼,不論邏輯,單是看上去就沒有讓人讀的慾望。寫程式碼跟寫書寫文件一樣,簡單整潔易明瞭是通用的原則,接觸前端已經四個月,好死不死還是寫了不少的程式碼,爬

前端基礎知識css

前端基礎知識之css   https://www.cnblogs.com/liwenzhou/p/7999532.html#autoid-4-5-0 CSS(Cascading Style Sheet,層疊樣式表)定義如何顯示HTML元素。   c

前端基礎學習CSS選擇器

CSS基礎之選擇器 派生選擇器 通過元素在其位置的上下文關係來定義樣式,使標記更加簡潔 派生選擇器允許你根據文件的上下文關係來定義某個標籤的樣式,通過合理的使用派生選擇器,可以是Html程式碼更加的簡潔 程式碼示例: li strong {

前端效能優化-css阻塞渲染

  為了防止頁面重複渲染頁面,降低瀏覽器效能,瀏覽器在CSSDOM構建完成之前,不會渲染頁面,直觀的感受就是,在css下載完成之前,瀏覽器將出現白屏現象。 瀏覽器渲染流程: 瀏覽器開始解析目標HTML檔案,執行流的順序為自上而下。 HTML解析器將

web前端技術講解CSS中position的定位技術

使用position定位有四種方式,分別為absolute、relative、static、fixed,static是靜態定位,也為系統自動定位。下面主要分析其他三種定位方式的特點。 1. 絕對定位:position:absolute (1) 絕對定位是將元素依據已經定位(絕對、固定或