規範目的:爲了提升工做效率,便於後臺人員添加功能及前端後期優化維護,輸出高質量的文檔,在網站建設中,使結構更加清晰,代碼簡明有序,有一個更好的前端架構。javascript
規範基本準則:符合web標準,使用具備語義的標籤,使結構、表現、行爲分離,兼容性優良。頁面性能優化,代碼簡潔、明瞭、有序,儘量的減小服務器的負載,保證最快的解析速度。css
1、文件規範html
1.1 HTML部分前端
1.1.1 建包問題java
文件均歸檔至約定的目錄中,建包格式以下:web
注意:全部的css文件放在css文件夾中,image放在images文件夾中,js放在js文件夾中chrome
1.1.2 HTML頭部編寫express
(1) 編碼:全部編碼均採用xhtml/html,標籤必須閉合,編碼統一爲UTF-8,在多語言的網站建議添加<html lang="zh-CN">,說明內容是以中文顯示和閱讀爲基礎的瀏覽器
(2) 語義化:正確使用標籤,充分利用無兼容性問題的html自身標籤性能優化
(3) 文件頭部head內容:
• title: 須要添加標題
• 編碼: charset=UTF-8
• meta: 能夠添加description、keywords內容
1.2 CSS部分
1.2.1 CSS種類及其命名
能夠將CSS樣式表分爲三類:全局樣式表、模塊通用樣式表和獨立樣式表
• 全局樣式表經常使用命名:public.css
• 模塊通用樣式表命名:模塊名_basic.css
• 獨立樣式表:模塊名_頁面名.css
1.2.2 CSS引入
CSS文件引入可經過外聯或者內聯方式引入
• 外聯方式
• 內聯方式
注意:link和style標籤都應該放入head中,原則上,不容許在html上直接寫樣式。避免在CSS中使用@import,嵌套不要超過一層。
2、註釋規範
2.1 頂部文檔註釋(推薦使用)
1 /* 2 * @description: 中文說明 3 * @author: name 4 * @update: name(xxxx-xx-xx xx:xx) 5 */
2.2 屬性註釋
1 /*Header*/ 2 /*Nav*/ 3 /*Container*/ 4 ... 5 /*Footer*/
2.3 功能模塊註釋
1 /* module: module1 by 小王 */ 2 ... 3 /* module: module2 by 小李 */
2.4 特殊註釋
1 /*Color codes 2 -------------------------------- 3 Red: #e03d3d; 4 Dark: #424242; 5 Light: #c3c5c0; 6 blue #e03d3d; 7 */ 8 9 /* 10 默認寬度爲1128px 11 */ 12 13 /*@group Reset Css*/ 14 /*@group General Definitions*/ 15 16 /*---------------Typography-----------------*/ 17 /*------------------Sprite--------------------*/
注意:
• 每個文檔對應一個文檔註釋(主要註釋內容包括:文檔建立人、建立時間、主要內容描述等)
• 屬性註釋說明:能夠分CSS屬性來進行命名(如:margin/padding值、CSS Hack、全局Hover等)
• 功能模塊註釋說明:分模塊來編寫CSS樣式(如:頭部、導航、按鈕、頁腳等等)
3、命名規範
3.1 如何命名
• css最好用class來命名,js用id來命名,已作區分
• id和class的命名應反映該元素的功能或使用通用名稱,而不要用抽象的晦澀的命名
3.2 命名示例
3.3 命名精簡
id和class命名越精簡越好,只要足夠表達意思,這樣有助於理解,同時也能提升代碼效率
3.4 命名嵌套問題
書寫css要注意前後順序和嵌套問題,從性能上考慮儘可能減小選擇器的層級
3.5 注意事項
4、書寫規範
4.1 排版規範
書寫風格:
4.2 屬性編寫順序(通常遵循顯示屬性 -> 自身屬性 -> 文本屬性 -> 其餘屬性的書寫格式)
4.3 代碼性能優化
4.4 CSS Hack的使用
儘可能少使用瀏覽器檢測和CSS Hacks,先試試別的解決辦法。考慮到代碼高效率和易管理,雖然這兩種辦法能快速解決瀏覽器解析差別,但應被視爲最後的手段。在長期的項目中,容許使用hack只會帶來更多的hack,因此儘可能少用
4.5 IE兼容性
IE支持經過特定的<meta>標籤來肯定繪製當前頁面所應該採用的IE版本,除非有強烈的特殊需求,不然最好是設置edge mode,從而通知IE採用其所支持的最新的模式
<!-- IE8及以上的版本都會以最高版本IE來渲染頁面 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
注意:X-UA-Compatible這個是IE8的專用標記,用來指定IE8瀏覽器去模擬某個特定版本的IE瀏覽器的渲染方式
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">中的chrome=1效果是若是安裝了GCF,則使用GCF來渲染頁面,若是未安裝GCF,則使用最高版本的IE內核進行渲染
4.6 字體規則
5、其餘規範
6、 自適應頁面佈局(響應式佈局,暫不考慮低版本IE兼容性)
6.1 佈局細節
<!-- 讓viewport的寬度等於物理設備上的真實分辨率,不容許用戶縮放,通常主流的web app都是這樣設置 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
6.2 CSS3引入的Media Query模塊,可自動探測屏幕寬度
7、幫助文檔
7.1 全局樣式寫法(reset css)
7.2 清浮動
須要清除浮動的地方有:
解決辦法(四種方法)
使用clearfix來清除浮動(推薦),至關於建立一個隱形的內容爲空的塊的目標元素來清除浮動
.clearfix{*zoom:1;} /* 針對IE7 hack,觸發IE7的haslayout,以清除浮動 */
.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
7.3 各大網站的字體樣式:
默認字體樣式:
7.4 文本多行顯示添加省略號(文本溢出省略)
給須要的標籤添加具體寬度限制、white-space:nowrap;text-overflow:ellipsis;overflow:hidden;
7.5 input框的具體樣式
input框行高問題,通常不須要寫line-height,可是在IE8/IE7須要寫hack