文件編碼約定
所有文件統(tǒng)一采用UTF-8無(wú)BOM編碼。
文件和目錄命名約定
一律小寫(xiě),必須是英文單詞或者漢語(yǔ)拼音,以英語(yǔ)單詞優(yōu)先,多個(gè)單詞以連字符 ( - ) 連接。只能出現(xiàn)小寫(xiě)引文字母,數(shù)字和連字符。
很多瀏覽器會(huì)將含有這些詞的作為廣告攔截: ad、ads、adv、banner、sponsor、gg、guangg、guanggao等 頁(yè)面中盡量避免采用以上詞匯來(lái)命名。
該命令規(guī)范適用于所有前端維護(hù)的內(nèi)容和相關(guān)目錄
標(biāo)簽語(yǔ)義化 html5元素
section 表示文檔中的節(jié)、區(qū)段,可以和h1-h6一起來(lái)顯示文檔結(jié)構(gòu)
article 表示一塊比較獨(dú)立的內(nèi)容或者主題內(nèi)容,塊級(jí)元素,比如blog的內(nèi)容,報(bào)紙的文章
aside 表示article以外的內(nèi)容,而且應(yīng)該和article有一定的關(guān)系,塊級(jí)元素
hgroup 表示一個(gè)文檔、區(qū)段(section)的標(biāo)題組合
header 表示頁(yè)眉,頁(yè)頭
footer 表示頁(yè)腳
nav 表示導(dǎo)航內(nèi)容
figure 表示以相對(duì)獨(dú)立的或外引的元素,如img video
figcaption 表示 figure內(nèi)容的標(biāo)題
id和class命名約定
id 和 class 的命名基本原則:內(nèi)容優(yōu)先,表現(xiàn)為輔。首先根據(jù)內(nèi)容來(lái)命名,如:#header,#footer,.main-nav.如根據(jù)內(nèi)容無(wú)法找到合適的命名,可以再結(jié)合表現(xiàn)進(jìn)行命名,如:col-main,col-sub,col-extra,blue-box
id 和 class 的名稱(chēng)一律小寫(xiě),多個(gè)單詞以連字符連接,如:main-wrap
id 和 class 的名稱(chēng)只能出現(xiàn),小寫(xiě)字母,數(shù)字和連字符( - )(js鉤子除外)
id 和 class 的名稱(chēng)盡量使用英文單詞命名,如確實(shí)找不到合適的單詞,可以使用拼音,如:zhidao-com
在不影響語(yǔ)意的情況下,id 和 class 的名稱(chēng) 可以適當(dāng)使用縮寫(xiě),如:col,nav,hd,bd,fd(縮寫(xiě)只用來(lái)表示結(jié)構(gòu),不允許寫(xiě)任何樣式)。不要自造縮寫(xiě)。
class 對(duì)于選中命名.selected;對(duì)于hover,支持偽類(lèi)使用:hover,不支持的使用.hover,隱藏使用.hide。
id 和 class 的選擇,如果只使用一次,使用id,如果使用多次使用class,如果需要和js交互,使用id,如果需要交互并且頁(yè)面中有大量重復(fù),請(qǐng)參見(jiàn)下一條。
對(duì)于作為js鉤子的 id 和 class 命名規(guī)則為以”J_“開(kāi)頭或者以"-hook"結(jié)尾(J,象形鉤子的形狀),加上原應(yīng)有的命名,在使用class的時(shí)候需要放在最前面。如:class="J_tab-content some-mod-content"。(注意:鉤子,不允許在css中定義任何的樣式效果)
很多瀏覽器會(huì)將含有這些詞的作為廣告攔截:ad、ads、adv、banner、sponsor、gg、guangg、guanggao等 頁(yè)面中盡量避免采用以上詞匯來(lái)命名。
CSS約定
1.頁(yè)面中不允許出現(xiàn)css內(nèi)容(包括行內(nèi)樣式和style)
2.避免使用通配規(guī)則
除了傳統(tǒng)意義的通配選擇符之外還包括相鄰兄弟選擇符, 子選擇符, 后代選擇符和屬性選擇符。推薦id、class和標(biāo)簽選擇符。
3.不要限定id選擇符
頁(yè)面中指定一個(gè)id只能對(duì)應(yīng)一個(gè)元素,所以沒(méi)有必要添加額外添加限定符,如:div#header,應(yīng)該簡(jiǎn)化為:#header(提權(quán)的除外)。
4.不要限定類(lèi)選擇器
不要用具體的標(biāo)簽限定類(lèi)選擇符,而是根據(jù)實(shí)際情況對(duì)類(lèi)名進(jìn)行擴(kuò)展。例如:ul.recommend,改成.recommend-list或者.list-recommend。
5.讓規(guī)則越具體越好
盡量不要使用ul li a這樣長(zhǎng)的選擇符,最好使用.list-anchor之類(lèi)的選擇符。
6.避免使用后代選擇符
通常處理后代選擇符開(kāi)銷(xiāo)最高,使用字選擇符更高效,最好使用下一條代替。
7.避免使用標(biāo)簽子選擇符
如果有如:#header > li > a,這樣基于子標(biāo)簽的自選擇符,那么應(yīng)該使用一個(gè)class來(lái)關(guān)聯(lián)每個(gè)元素如:.header-anchor。盡量使用具體的類(lèi)代替子選擇符。
JavaScript約定
1.函數(shù)和變量的命名
駝峰命名方式
2.常量
大寫(xiě)
3.文件注釋
文件注釋要標(biāo)明作者、文件版本、創(chuàng)建/修改時(shí)間、重大版本修改記錄
函數(shù)描述
文件版本、創(chuàng)建或者修改時(shí)間、功能、作者
4.在if判斷中,使用===作比較,避免掉入==造成的陷阱,對(duì)于不同類(lèi)型的==判斷,有這樣一些規(guī)則,順序自上而下:
1.undefined與null相等
2.一個(gè)是number一個(gè)是string時(shí),會(huì)嘗試將string轉(zhuǎn)換為number
3.嘗試將boolean轉(zhuǎn)換為number,0或1
4.嘗試將Object轉(zhuǎn)換成number或string,取決于另外一個(gè)對(duì)比量的類(lèi)型
簡(jiǎn)單類(lèi)型轉(zhuǎn)換
number to string的轉(zhuǎn)換,建議使用1 + ''或String(1),不使用new String(1)或1.toString()的方式。
string to number的轉(zhuǎn)換,建議使用parseInt,必須顯式指定第二個(gè)參數(shù)的進(jìn)制。下面的例子展示了不指定進(jìn)制的風(fēng)險(xiǎn):
parseInt('08');// 0 ? parseInt('08',10);//8
float to integer的轉(zhuǎn)換,建議使用Math.floor/Math.round/Math.ceil方法,不使用parseInt。
字符串拼接
字符串拼接,應(yīng)使用數(shù)組保存字符串片段,使用時(shí)調(diào)用join方法。避免使用+或+=的方式拼接較長(zhǎng)的字符串,每個(gè)字符串都會(huì)使用一個(gè)小的內(nèi)存片段,過(guò)多的內(nèi)存片段會(huì)影響性能。
零散想到的
img 請(qǐng)勿將img元素作為定位布局的工具,不要用他顯示空白圖片; 必要時(shí)給img元素增加alt屬性;
自己寫(xiě)的z-index的值不能超過(guò) 100 (通用組的除外),需要按照內(nèi)容定義1 2 3 4不允許直接使用如1000,9999
以上如有不對(duì)之處請(qǐng)指出。