Web前端開發規范總結

1. 規范目的


為提高團隊協作效率, 便于后臺人員添加功能及前端后期優化維護, 輸出高質量的文檔, 特制訂此文檔. 本規范文檔一經確認, 前端開發人員必須按本文檔規范進行前臺頁面開發. 本文檔如有不對或者不合適的地方請及時提出, 經討論決定后可以更改此文檔。

2. 文件規范


2.1文件命名規則

  • 文件名稱統一用小寫的英文字母、數字和下劃線的組合,其中不得包含漢字、空格和特殊字符;命名原則的指導思想一是使得你自己和工作組的每一個成員能夠方便的理解每一個文件的意義,二是當我們在文件夾中使用“按名稱排例”的命令時,同一種大類的文件能夠排列在一起,以便我們查找、修改、替換、計算負載量等等操作。

2.1.1 HTML的命名原則

引文件統一使用index.htm index.html index.asp文件名(小寫)
各子頁命名的原則首先應該以欄目名的英語翻譯取單一單詞為名稱。例如:
關于我們 \ aboutus
信息反饋 \ feedback
產 品 \ product

如果欄目名稱多而復雜并不好以英文單詞命名,則統一使用該欄目名稱拼音或拼音的首字母表示;
每一個目錄中應該包含一個缺省的html 文件,文件名統一用index.htm index.html index.asp;

2.1.2 圖片的命名原則

圖片的名稱分為頭尾兩部分,用下劃線隔開,頭部分表示此圖片的大類性質
eg:廣告、標志、菜單、按鈕等等。

放置在頁面頂部的廣告、裝飾圖案等長方形的圖片取名: banner
標志性的圖片取名為: logo
在頁面上位置不固定并且帶有鏈接的小圖片我們取名為 button
在頁面上某一個位置連續出現,性質相同的鏈接欄目的圖片我們取名: menu
裝飾用的照片我們取名: pic

不帶鏈接表示標題的圖片我們取名: title
范例:banner_sohu.gif banner_sina.gif menu_aboutus.gif menu_job.gif title_news.gif logo_police.gif logo_national.gif pic_people.jpg
鼠標感應效果圖片命名規范為"圖片名+_+on/off"。
例如:menu1_on.gif menu1_off.gif

2.1.3. javascript的命名原則

eg:廣告條的javascript文件名為 ad.js 彈出窗口的javascript文件名為 pop.js

2.1.4. 動態語言文件命名原則

以性質描述,描述可以有多個單詞,用“”隔開,性質一般是該頁面得概要。
eg:register_form.asp register_post.asp topic_lock.asp


2.2 文件命名規則

文件存放位置規范.png

2.3 CSS 書寫規范


  • 基本原則:

CSS樣式可細分為3類:自定義樣式、重新定義HTML樣式、鏈接狀態樣式。

1. 樣式為設計師自定義的新 CSS 樣式,影響被使用本樣式的區域,用于完成網頁中局部的樣式設定。樣式名 “.”+“相應樣式效果描述的單詞或縮寫”例:“ .shadow ”
文字樣式樣式名“.no”+“字號”+“行距”+“顏色縮寫”例:“ .no12 ” 、“ .no12-24 ”
2. 義HTML樣式為設計師重新定義已有的HTML標簽樣式,影響全部的被設定標簽樣式,用于統一網頁中某一標簽的樣式定義。樣式名“HTML標簽”例:hr { border: 1px dotted #333333 }
3. 態樣式為設計師對鏈接不同狀態設定特殊樣式,影響被使用本樣式區域中的鏈接。
該樣式寫法有2種: a.nav:link    nav.a:link  第一種只能修飾<a>標簽中;第二種可以修飾所有包含有<a>標簽的其他標簽。
頁面內的樣式加載必須用鏈接方式<link rel="stylesheet" type="text/css" href="style/style.css">

注意細則:

1.  協作開發及分工: i會根據各個模塊, 同時根據頁面相似程序, 事先寫好大體框架文件, 分配給前端人員實現內部結構&表現&行為; 共用css文件base.css由i書寫, 協作開發過程中, 每個頁面請務必都要引入, 此文件包含reset及頭部底部樣式, 此文件不可隨意修改;
2.  class與id的使用: id是唯一的并是父級的, class是可以重復的并是子級的, 所以id僅使用在大的模塊上, class可用在重復使用率高及子級中; id原則上都是由我分發框架文件時命名的, 為JavaScript預留鉤子的除外;
3.  為JavaScript預留鉤子的命名, 請以 js_ 起始, 比如: js_hide, js_show;
4.  class與id命名: 大的框架命名比如header/footer/wrapper/left/right之類的在2中由i統一命名.其他樣式名稱由 小寫英文 & 數字 & _ 來組合命名, 如i_comment, fontred, width200; 避免使用中文拼音, 盡量使用簡易的單詞組合; 總之, 命名要語義化, 簡明化.
5.  規避class與id命名(此條重要, 若有不明白請及時與i溝通):  
a, 通過從屬寫法規避, 示例見d; 
b, 取父級元素id/class命名部分命名, 示例見d; 
c, 重復使用率高的命名, 請以自己代號加下劃線起始, 比如i_clear; 
d, a,b兩條, 適用于在2中已建好框架的頁面, 如, 要在2中已建好框架的頁面代碼<div id="mainnav"></div>中加入新的div元素,
按a命名法則: <div id="mainnav"><div class="firstnav">...</div></div>, 
樣式寫法:  #mainnav  .firstnav{.......}
按b命名法則: <div id="mainnav"><div class="main_firstnav">...</div></div>, 
樣式寫法:  .main_firstnav{.......}
6.  css屬性書寫順序, 建議遵循 布局定位屬性-->自身屬性-->文本屬性-->其他屬性. 此條可根據自身習慣書寫, 但盡量保證同類屬性寫在一起. 屬性列舉: 布局定位屬性主要包括: margin、padding、float(包括clear)、position(相應的 top,right,bottom,left)、display、visibility、overflow等;自身屬性主要包括: width & height & background & border; 文本屬性主要包括:font、color、text-align、text-decoration、text-indent等;其他屬性包括: list-style(列表樣式)、vertical-vlign、cursor、z-index(層疊順序) 、zoom等.我所列出的這些屬性只是最常用到的, 并不代表全部;
7.  書寫代碼前, 考慮并提高樣式重復使用率;
8.  充分利用html自身屬性及樣式繼承原理減少代碼量, 比如:
<ul class="list"><li>這兒是標題列表<span>2010-09-15</span></ul>
定義ul.list li{position:relative}  ul.list li span{position:absolute; right:0}
即可實現日期居右顯示
9.  樣式表中中文字體名, 請務必轉碼成unicode碼, 以避免編碼錯誤時亂碼;
10. 背景圖片請盡可能使用sprite技術, 減小http請求, 考慮到多人協作開發, sprite按模塊制作;
11. 使用table標簽時(盡量避免使用table標簽), 請不要用width/ height/cellspacing/cellpadding等table屬性直接定義表現, 應盡可能的利用table自身私有屬性分離結構與表現, 如thead,tr,th,td,tbody,tfoot,colgroup,scope; (cellspaing及cellpadding的css控制方法: table{border:0;margin:0;border-collapse:collapse;} table th, table td{padding:0;} , base.css文件中我會初始化表格樣式)
12. 杜絕使用<meta http-equiv="X-UA-Compatible" content="IE=7" /> 兼容ie8;
13. 用png圖片做圖片時, 要求圖片格式為png-8格式,若png-8實在影響圖片質量或其中有半透明效果, 請為ie6單獨定義背景:
background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop, src=’img/bg.png’);
14. 避免兼容性屬性的使用, 比如text-shadow || css3的相關屬性;
15. 減少使用影響性能的屬性, 比如position:absolute || float ;
16. 必須為大區塊樣式添加注釋, 小區塊適量注釋;
17. 代碼縮進與格式: 建議單行書寫, 可根據自身習慣, 后期優化i會統一處理;
命名規則:

  頭:header
  內容:content/container
  尾:footer
  導航:nav
  側欄:sidebar
  欄目:column
  頁面外圍控制整體布局寬度:wrapper
  左右中:left right center
  登錄條:loginbar
  標志:logo
  廣告:banner
  頁面主體:main
  熱點:hot
  新聞:news
  下載:download
  子導航:subnav
  菜單:menu
  子菜單:submenu
  搜索:search
  友情鏈接:friendlink
  頁腳:footer
  版權:copyright
  滾動:scroll
  內容:content
  標簽頁:tab
  文章列表:list
  提示信息:msg
  小技巧:tips
  欄目標題:title
  加入:joinus
  指南:guild
  服務:service
  注冊:regsiter
  狀態:status
  投票:vote
  合作伙伴:partner
(二)注釋的寫法:
  /* Footer */
  內容區
  /* End Footer */
(三)id的命名:
  (1)頁面結構
  容器: container
  頁頭:header
  內容:content/container
  頁面主體:main
  頁尾:footer
  導航:nav
  側欄:sidebar
  欄目:column
  頁面外圍控制整體布局寬度:wrapper
  左右中:left right center

  (2)導航
  導航:nav
  主導航:mainbav
  子導航:subnav
  頂導航:topnav
  邊導航:sidebar
  左導航:leftsidebar
  右導航:rightsidebar
  菜單:menu
  子菜單:submenu
  標題: title
  摘要: summary

  (3)功能
  標志:logo
  廣告:banner
  登陸:login
  登錄條:loginbar
  注冊:regsiter
  搜索:search
  功能區:shop
  標題:title
  加入:joinus
  狀態:status
  按鈕:btn
  滾動:scroll
  標簽頁:tab
  文章列表:list
  提示信息:msg
  當前的: current
  小技巧:tips
  圖標: icon
  注釋:note
  指南:guild
  服務:service
  熱點:hot
  新聞:news
  下載:download
  投票:vote
  合作伙伴:partner
  友情鏈接:link
  版權:copyright
常用名稱.png
常用名稱.png

2.4 html 書寫規范


2.4.1 1. 網頁制作細節 ---- head區代碼規范

head區是指HTML代碼的<head>和</head>之間的內容。 
必須加入的標簽 
a)  公司版權注釋  <!--- The site is designed by EHM,Inc 07/2005 --->
b)  網頁顯示字符集 
簡體中文:<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
繁體中文:<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
英 語:<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
c)  網頁制作者信息  <META name="author" content="webmaster@maketown.com"> 
d)  網站簡介  <META NAME="DESCRIPTION" CONTENT="xxxxxxxxxxxxxxxxxxxxxxxxxx">
e)  搜索關鍵字  <META NAME="keywords" CONTENT="xxxx,xxxx,xxx,xxxxx,xxxx,">
f)  網頁的css規范  <LINK href="../css/style.css" rel="stylesheet" type="text/css">
g)  網頁標題  <title>xxxxxxxxxxxxxxxxxx</title>
可以選擇加入的標簽 
a)  設定網頁的到期時間。一旦網頁過期,必須到服務器上重新調閱。 
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
b)  禁止瀏覽器從本地機的緩存中調閱頁面內容。 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
c)  用來防止別人在框架里調用你的頁面。
<META HTTP-EQUIV="Window-target" CONTENT="_top">
d)  自動跳轉。
<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://www.yahoo.com">  5指時間停留5秒
e)  網頁搜索機器人向導。用來告訴搜索機器人哪些頁面需要索引,哪些頁面不需要索引。
<META NAME="robots" CONTENT="none">
CONTENT的參數有all,none,index,noindex,follow,nofollow。默認是all。 
f)  收藏夾圖標  <link rel = "Shortcut Icon" href="favicon.ico">
g)  所有的javascript的調用盡量采取外部調用. 
<SCRIPT LANGUAGE="JavaScript" SRC="script/xxxxx.js"></SCRIPT> 
h)  附<body>標簽: 
<body>標簽不屬于head區,這里強調一下,為了保證瀏覽器的兼容性,必須設置頁面背景<body bgcolor="#FFFFFF">

2.4.2 網頁制作細節 ---- 字體

1. 在設定字體樣式時對于文字字號樣式和行間距應必須使用CSS樣式表。禁止在頁面中出現 <font size=?> 標記。

2.在網頁中中文應首選使用宋體。英文和數字首選使用verdana 和arial 兩種字體。一般使用中文宋體的9pt 和11pt 或12px 和14.7px 這是經過優化的字號,黑體字或者宋體字加粗時,一般選用11pt 和14.7px 的字號比較合適。

3. 為了最大程度的發揮瀏覽器自動排版的功能,在一段完整的文字中請盡量不要使用<br> 來人工干預分段。

4.不同語種的文字之間應該有一個半角空格,但避頭的符號之前和避尾的符號之后除外,漢字之間的標點要用全角標點,英文字母和數字周圍的括號應該使用半角括號。 

5. 請不要在網頁中連續出現多于一個的   也盡量少使用全角空格(英文字符集下,全角空格會變成亂碼),空白應該盡量使用 text-indent, padding, margin, hspace, vspace 以及透明的gif 圖片來實現。 

6. 行距建議用百分比來定義,常用的兩個行距的值是line-height:120%/150%. 

7. 排版中我們經常會遇到需要進行首行縮進的處理,不要使用   或者全角空格來達到效果,規范的做法是在樣式表中定義 p { text-indent: 2em; } 然后給每一段加上 <p> 標記,注意,一般情況下,請不要省略 </p> 結束標記 。

2.4.3. 網頁制作細節 ---- 鏈接

a.網站中的鏈接路徑全部采用相對路徑,一般鏈接到某一目錄下的缺省文件的鏈接路徑不必寫全名,如我們不必這樣:<a href=”aboutus/index.htm”> 而應該這樣:<a href=”aboutus/”>,所有內頁指向首頁的鏈接寫成<a href=”/”>

b.在瀏覽器里,當我們點擊空鏈接時,它會自動將當前頁面重置到首端,從而影響用戶正常的閱讀內容,我們用代碼“javascript:void(null)”代替原來的“#”標記

2.4.4 網頁制作細節 ---- 下載速度

首頁Flash 網頁大小應限定在 200K 以下,盡可能的使用矢量圖形和Action來減小動畫大小。非首頁靜態頁面含圖片大小應限定在 70K 左右,盡可能的使用背景顏色替換大塊同色圖片。

2.4.5 網頁制作細節 ---- include

asp標準寫法
jsp 標準寫法 <%@ include file="../inc/index_top..jsp" %>

2.4.6 網頁制作細節 ---- Alt和Title

都是提示性語言標簽,請注意它們之間的區別。 
在我們瀏覽網頁時,當鼠標停留在圖片對象或文字鏈接上時,在鼠標的右下角有時會出現一個提示信息框。對目標進行一定的注釋說明。在一些場合,它的作用是很重要的。 
alt 用來給圖片來提示的。Title用來給鏈接文字或普通文字提示的。 
用法如下: 
<p Title="給鏈接文字提示">文字</p> 
<a href="#" Title="給鏈接文字提示">文字</a>
都是提示性語言標簽,請注意它們之間的區別。 
在我們瀏覽網頁時,當鼠標停留在圖片對象或文字鏈接上時,在鼠標的右下角有時會出現一個提示信息框。對目標進行一定的注釋說明。在一些場合,它的作用是很重要的。 
alt 用來給圖片來提示的。Title用來給鏈接文字或普通文字提示的。 
用法如下: 
<p Title="給鏈接文字提示">文字</p> 
<a href="#" Title="給鏈接文字提示">文字</a>

2.4.7 網頁制作細節 ---- 緩存

網頁不會被緩存 
HTM網頁 
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="0"> 
ASP網頁 
Response.Expires = -1 
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"

2.4.8 網頁制作細節 ---- 瀏覽器兼容性

創建站點時,應該明白訪問者可能使用各種 Web 瀏覽器。在已知的其他設計限制下,盡可能將站點設計為具有最大的瀏覽器兼容性。
目前使用的 Web 瀏覽器有二十多種,大多數已發行了多個版本。即使您只針對使用 Netscape Navigator 和 Microsoft Internet Explorer 的大多數 Web 用戶,但您應明確并不是每個人都在使用這兩種瀏覽器的最新版本。
您的站點越復雜(在布局、動畫、多媒體內容和交互方面),跨瀏覽器兼容的可能性就越小。例如,并非所有的瀏覽器都可以運行JavaScript。不使用特殊字符的純文本頁面或許能夠在任何瀏覽器中正確顯示,但比起有效地使用圖形、布局和交互的頁面,這樣的頁面在美感上可能要差得多。所以,應盡量在最佳效果設計和最大瀏覽器兼容性設計之間取得平衡。
所有的HTML 標簽的屬性都要用單引號或者雙引號括起,即我們應該寫 <a href=”url”> 而不 是 <a href=url>.

2.4.9 圖片處理細節 ---- LOGO的國際標準規范

為了便于INTERNET上信息的傳播,一個統一的國際標準是需要的。實際上已經有了這樣的一整套標準。其中關于網站的LOGO,目前有三種規格:
88*31 這是互聯網上最普遍的LOGO規格。
120*60 這種規格用于一般大小的LOGO。
120*90 這種規格用于大型LOGO

圖片經過優化以加快下載的速度,有較佳的視覺空間效果,用圖要與頁面風格、頁面內容相符;制作精美,細節處理得當。

2.5JavaScript書寫規范


1.  書寫過程中, 每行代碼結束必須有分號; 原則上所有功能均根據XXX項目需求原生開發, 以避免網上down下來的代碼造成的代碼污染(沉冗代碼 || 與現有代碼沖突 || ...);
2.  庫引入: 原則上僅引入jQuery庫, 若需引入第三方庫, 須與團隊其他人員討論決定;
3.  變量命名: 駝峰式命名. 原生JavaScript變量要求是純英文字母, 首字母須小寫, 如iTaoLun; jQuery變量要求首字符為'_', 其他與原生JavaScript 規則相同, 如: _iTaoLun; 另, 要求變量集中聲明, 避免全局變量.
4.  類命名: 首字母大寫, 駝峰式命名. 如 ITaoLun;
5.  函數命名: 首字母小寫駝峰式命名. 如iTaoLun();
6.  命名語義化, 盡可能利用英文單詞或其縮寫;
7.  盡量避免使用存在兼容性及消耗資源的方法或屬性, 比如eval() & innerText;
8.  后期優化中, JavaScript非注釋類中文字符須轉換成unicode編碼使用, 以避免編碼錯誤時亂碼顯示;
9.  代碼結構明了, 加適量注釋. 提高函數重用率;
10. 注重與html分離, 減小reflow, 注重性能.

參考鏈接:
雅虎軍規
前端開發規范手冊
編碼規范 by @mdo

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,034評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,413評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,165評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,559評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,781評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,327評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,084評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,278評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,495評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,010評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,241評論 2 375

推薦閱讀更多精彩內容