轉自《Front End Standards》javascript
此爲前端開發團隊遵循和約定的代碼書寫規範,意在提升代碼的規範性和可維護性。
此規範爲參考規範,不全是硬性要求,部分硬性約定見下一條書寫規範,統一團隊編碼規範和風格。讓全部代碼都是有規可循的,而且可以獲得沉澱,減小重複勞動。css
-- 項目結構
----|---- CSS文件結構
----|---- JS文件結構html
|---- index.html 入口頁
|---- js/ JS //具體見JS細化結構
|---- css/ CSS //具體見CSS細化結構前端
index.html
所有樣式附着於 class="xxx"
注: 此時文件中不包含任何一個 id="xxx"js
交互文件,使用 ID
和 Class
定位被操做句柄index.html
中須要的地方添加 id="xxx"
及 data-xxx="xxx"
-
, _
",不可出現其餘字符../css/style.css, jquery.1.x.x.js
/libs
文件需包含版本號,壓縮文件需包含min
關鍵詞,其餘插件則可不包含/libs/jquery.1.9.1.js
/libs/modernizr-1.7.min.js
fileuploader.js
plugins.js
firstName
topBoxList
footerCopyright
top-item
main-box
box-list-item-1
left
bottom
等方位性的詞語.xxx
UTF-8_(無BOM)_ 編碼.png
(PNG-24) .jpg
(壓縮率8-12).gif
.tar.gz
.zip
--- ../css/
|---- css/libs/reset.css CSS reset文件
|---- … …
|---- css/images/ 主 CSS-sprite 圖片
|---- css/style.css 主 CSS 樣式表
|---- … …
|---- css/images/xxx/sprite.png xxx 的 CSS-sprite 圖片
|---- css/xxx-style.css xxx 的 樣式表html5
--- ../css/
|---- css/libs/reset.less CSS reset文件
|---- css/libs/elements.less Less 函數複用文件
|---- … …
|---- css/images/ 主 CSS-sprite 圖片
|---- css/style.less 主樣式Less
|---- css/style.css less -> css 自動生成
|---- … …
|---- css/images/xxx/sprite.png xxx 的 CSS-sprite 圖片
|---- css/xxx-style.less xxx 的 Less
|---- css/xxx-style.css less -> css 自動生成java
在 .less
文件頭部引入 reset.less & elements.less,以後調用以下屬性傳參便可,具體使用說明見 -> Lesselements 官方文檔node
@import "libs/reset.less";
@import "libs/elements.less";jquery
.gradient
.bw-gradient
.bordered
.drop-shadow
.rounded
.border-radius
.opacity
.transition-duration
.rotation
.scale
.transition
.inner-shadow
.box-shadow
.columns
.translategit
CSS reset 文件使用:reset.css 或 reset.lessgithub
.clearfix
清除浮動/
@name: Drop Down Menu
@description: Style of top bar drop down menu.
@require: reset.css
@author: Andy Huang(andyahung@geekpark.net)
/
其中,@require爲可選項
.box1 {float:left;}
{
左側空格,字體名用\
包含.box1,.box2,.box3 {font-family:Courier,'Courier New';}
font-family: "Microsoft YaHei";
font-family:\5fae\8f6f\96c5\9ed1;
如:如下2種順序都可
.box {
/* 順序1 /
background: none repeat scroll 0 0 transparent;
bottom: 11px;
position: relative;
width: 22px;
z-index: 33;
}
.box {
/ 順序2 */
z-index: 33;
width: 22px;
bottom: 11px;
background: transparent none repeat scroll 0 0 ;
position: relative;
}
/* 推薦嵌套層級 */
.ui-icon-rarr{}
.ui-icon-larr{}
.ui-title{}
.ui-nav .ui-list{}
.ui-table .ui-list{}
/* 不推薦 */
.ui-icon-rarr{}
.ui-icon-larr{}
.ui-title{}
.ui-list{}
.ui-nav{}
勿格式化,保留下面這種格式,增長可讀性和可維護性,後期後臺程序(如:PHP/Python)會將CSS壓縮成 一行 輸出:
.box{
/* 勿格式化,增長可讀性 */
background: none repeat scroll 0 0 transparent;
bottom: 11px;
position: relative;
width: 22px;
z-index: 33;
}
/* 推薦嵌套層級 */
<!DOCTYPE html>
<img>
標籤默認缺省格式:<img src="xxx.png" alt="缺省時文字" />
避免出現[src="" 問題]<a>
標籤缺省格式:<a href="###" title="連接名稱">xxx</>
注:target="_blank"
根據需求決定<a>
標籤預留連接佔位符使用###
,參見:[a標籤佔位符問題]<br />
<hr />
注意之間空格<b>
<u>
<i>
而用 <strong>
<em>
等代替data-xxx
來添加自定義數據,如:<input data-xxx="yyy"/>
style="xxx:xxx;"
的內聯樣式表---/js/
|---- /libs/plugin-1/ 使用到的js插件1
|---- /libs/plugin-2/ 使用到的js插件2
|---- /libs/plugin-3/ 使用到的js插件3
|---- script.js 單獨書寫的js
|---- plugins.js 調用的plugins彙總
|---- juqery-1.9.x.min.js 調用jq庫文件
;
$
, 私有變量:首字符爲_
; 儘可能避免全局變量.console.log()
及console.dir()
進行,避免使用彈出框,線上版須要註釋全部調試代碼name-src.js
在同路徑供從此修改使用參考JSON Style Guide翻譯,原版:Google JSON Style Guide
head
部分的結構參看:cool-head (摘取必要內容便可)css
文件置於都 頭部jQuery
及 Google Analytics
引用置於 頭部js
及統計代碼
文件置於 尾部從設計之處就堅持"Mobile First"的理念,在重構頁面的時候要靈活採起響應式的解決方案。
* 設置 meta viewport 屬性
* 引入不一樣尺寸設備的樣式表
* 使用 CSS Media Queries 方法
@media screen and (max-width: 40.5em) {
.product-img {
width: auto;
float: none;
}
}
@media screen and (max-width: 480px) {
}
* JS控制導航欄在 resize 事件 觸發後的可見性,如:
$(w).resize(function(){ //Update dimensions on resize
sw = document.documentElement.clientWidth;
sh = document.documentElement.clientHeight;
checkMobile();
});
//Check if Mobile
function checkMobile() {
mobile = (sw > breakpoint) ? false : true;
if (!mobile) { //If Not Mobile
$('[role="tabpanel"],#nav,#search').show(); //Show full navigation and search
} else { //Hide
if(!$('#nav-anchors a').hasClass('active')) {
$('#nav,#search').hide(); //Hide full navigation and search
}
}
}
* 彈性圖片
img {
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
* 自適應嵌入媒體
.video embed, .video object, .video iframe {
width: 100%;
height: auto;
}
* 禁用iPhone字體自適應功能:
html {
-webkit-text-size-adjust: none;
}
* 讓 IE 9 如下的IE版本支持響應式:
CSS
只可以使用 內聯樣式表 ,如:style="margin:0;"
MailChimp HTML Email CSS Fix
參看下文連接CSS Reset for HTML Email
參看下文連接Table
佈局而非DIV
IMG
標籤,如:<img style="style="display:block" "src="" />
spacer.gif
<br />
換行而非<p>
550-600px
Javascript
更多細節參考下面連接:
12 Killer Tips and Tricks for Building HTML Email
Coding HTML Newsletters (EDM)
for more app detial check -> IUSETHIS
涉及到 設計
->重構
->兼容性
->測試
時可參考各瀏覽器的佔用狀況
-- updated: 2013/02 - 2013/04
via Google Analytics of GeekPark
總瀏覽器分佈 | IE版本分佈 | 移動設備分佈 | 屏幕解決方案 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
此規範基於 MIT License 開源,持續更新維護中,可 Star
或 Fork
本項來造成你的規範,請以 建立[issues] 的方式反饋,或發起Pull Request
[src="" 問題]: http://js8.in/555.html "src="" 問題" [a標籤佔位符問題]: http://www.v2ex.com/t/48511/ "a標籤佔位符問題"