人人網 CSS編碼規范

3 評論 5310 瀏覽 25 收藏 18 分鐘

完整PDF下載鏈接:《人人FED CSS編碼規范》

瀏覽器特效支持規范

為了頁面性能考慮,如果瀏覽器不支持CSS3相關屬性的,則該瀏覽器的某些特效將不再支持,屬性的支持情況如下表所示:

圓角 陰影 動畫 文字陰影 透明 背景漸變 空間變換
Chrome5+ Y Y Y Y Y Y Y
Firefox 4+ Y Y Y Y Y Y Y
Safari 5+ Y Y Y Y Y Y Y
Opera Y Y Y Y Y N Y
IE9+ Y Y N N Y N Y
Chrome5- N N Y Y Y Y Y
Firefox 4- N N N Y Y N N
Safari5- N Y Y Y Y N Y
IE8 N N N N N N N
IE7 N N N N N N N
IE6 N N N N N N N

[說明] Y為支持,N為不支持。

 

文件相關規范

  1. 1、文件名必須由小寫字母、數字、中劃線-組成
  2. 2、文件必須用utf-8編碼
  3. 3、文件引入可通過外聯或內聯方式引入:
    1. 3.1 外聯方式:<link rel=”stylesheet” href=”…” />(類型聲明type=”text/css”可以忽略)
    2. 3.2 內聯方式:<style>…</style> (類型聲明type=”text/css”可以忽略)
  4. 4、原則上,不允許在html上直接寫樣式
  5. 5、link和style標簽都應該放入head中

注釋規范

  1. 1、文件頂部注釋(推薦使用)
    1
    2
    3
    4
    5
    /*
    * @description: xxxxx中文說明
    * @author: zhifu.wang
    * @update: zhifu.wang (2012-10-17 18:32)
    */
  2. 2、模塊注釋(推薦使用)
    1
    2
    3
    /* module: module1 by zhifu.wang */

    /* module: module2 by zhifu.wang */

    模塊注釋必須單獨寫在一行

  3. 3、簡單注釋
    1. 3.1 單行注釋
      1
      /* this is a short comment */

      單行注釋可以寫在單獨一行,也可以寫在行尾

    2. 3.2 多行注釋
      1
      2
      3
      4
      /*
      * this is comment line 1.
      * this is comment line 2.
      */

      多行注釋必須寫在單獨行內

  4. 4、特殊注釋(推薦使用)
    1
    2
    /* TODO: xxxx by zhifu.wang 2012-10-18 18:32 */
    /* BUGFIX: xxxx by zhifu.wang 2012-10-18 18:32 */

    用于標注修改、待辦等信息

  5. 5、長度要求:注釋中的每一行長度不超過40個漢字,或者80個英文字符

排版規范

  1. 1、一個tab設置為四個空格寬度。
  2. 2、規則可以寫成單行,或者多行,但是整個文件內的規則排版必須統一。如果是在html中寫內聯的css,則必須寫成單行。
  3. 3、單行形式書寫風格的排版約束
    1. 3.1 每一條規則的大括號 { 前后加空格
    2. 3.2 多個selector共用一個樣式集,則多個selector必須寫成多行形式
    3. 3.3 每一條規則結束的大括號 } 前加空格
    4. 3.4 屬性名冒號之前不加空格,冒號之后加空格
    5. 3.5 每一個屬性值后必須添加分號; 并且分號后空格
    6. 例如:
      1
      2
      3
      div.test?{?width:?100px;?height:?200px;?}
      a:focus,
      a:hover?{?position:?relative;?right:?1px;?}
  4. 4、多行形式書寫風格的排版約束
    1. 4.1 每一條規則的大括號 { 前添加空格
    2. 4.2 多個selector共用一個樣式集,則多個selector必須寫成多行形式
    3. 4.3 每一條規則結束的大括號 } 必須與規則選擇器的第一個字符對齊
    4. 4.4 屬性名冒號之前不加空格,冒號之后加空格
    5. 4.5 屬性值之后添加分號;
  5. 5、其他規范
    1. 5.1 使用單引號,不允許使用雙引號
    2. 5.2 如果使用CSS3的屬性,如果有必要加入瀏覽器前綴,則按照
    3. 1
      -webkit- / -moz- / -ms- / -o- / std
    4. 的順序進行添加,標準屬性寫在最后,并且屬性名稱要對齊,例如:
      1
      2
      3
      4
      5
      6
      div.animation-demo?{
      -webkit-animation:?mymove 5s infinite;
      -moz-animation:?mymove 5s infinite;
      -o-animation:?mymove 5s infinite;
      animation:?mymove 5s infinite;
      }

規則書寫規范

除16進制顏色和字體設置外,CSS文件中的所有的代碼都應該小寫。

規則書寫規范

  1. 1、規則命名中,一律采用小寫加中劃線的方式,不允許使用大寫字母或 _
  2. 2、命名避免使用中文拼音,應該采用更簡明有語義的英文單詞進行組合
  3. 3、命名注意縮寫,但是不能盲目縮寫,具體請參見常用的CSS命名規則
  4. 4、不允許通過1、2、3等序號進行命名
  5. 5、避免class與id重名
  6. 6、id用于標識模塊或頁面的某一個父容器區域,名稱必須唯一,不要隨意新建id
  7. 7、class用于標識某一個類型的對象,命名必須言簡意賅。
  8. 8、盡可能提高代碼模塊的復用,樣式盡量用組合的方式
  9. 9、規則名稱中不應該包含顏色(red/blue)、定位(left/right)等與具體顯示效果相關的信息。應該用意義命名,而不是樣式顯示結果命名。例如:
    1
    2
    .red?{?color:?red?}(錯誤)
    .important-news?{?color?:?red?}(正確)
  10. 10、除了重置瀏覽器默認樣式外,禁止直接為html tag添加css樣式設置,例如:
    1
    2
    3
    4
    div?{
    width:?200px;
    font-size:?16px;
    }
  11. 11、每一條規則應該確保選擇器唯一,禁止直接為全局.nav/.header/.body等類設置屬性

屬性編寫順序

推薦的樣式編寫順序

    1. 1、顯示屬性
      1
      display/list-style/position/float/clear
    2. 2、自身屬性(盒模型)
      1
      width/height/margin/padding/border
    3. 3、背景
      1
      background
    4. 4、行高
      1
      line-height
    5. 5、文本屬性
1
2
color/font/text-decoration/text-align/
text-indent/vertical-align/white-space/content
  1. 6、其他
    1
    cursor/z-index/zoom
  2. 7、CSS3屬性
    1
    transform/transition/animation/box-shadow/border-radius
  3. 8、鏈接的樣式請嚴格按照如下順序添加:
    1
    a:link ->?a:visited ->?a:hover ->?a:active(LoVeHAte)

性能優化

  1. 1、合并margin、padding、border的-left/-top/-right/-bottom的設置,盡量使用短名稱。
  2. 2、選擇器應該在滿足功能的基礎上盡量簡短,減少選擇器嵌套,查詢消耗。但是一定要避免覆蓋全局樣式設置。
  3. 3、注意選擇器的性能,不要使用低性能的選擇器,例如:
    1
    2
    3
    div?>?*?{}
    ul?>?li?>?a?{}
    body.profile?ul.tabs.nav?li a?{}
  4. 4、禁止在css中使用*選擇符
  5. 5、除非必須,否則,一般有class或id的,不需要再寫上元素對應的tag,例如:
    1
    div#test?{?width:?100px;?}
  6. 6、0后面不需要單位,比如0px可以省略成0,0.8px可以省略成.8px
  7. 7、如果是16進制表示顏色,則顏色取值應該大寫。
  8. 8、如果可以,顏色盡量用三位字符表示,例如#AABBCC寫成#ABC
  9. 9、如果沒有邊框時,不要寫成border:0,應該寫成border:none
  10. 10、盡量避免使用AlphaImageLoader
  11. 11、在保持代碼解耦的前提下,盡量合并重復的樣式,例如:
    1
    2
    3
    4
    5
    h1?{?color:?black;?}
    p?{?color:?black;?}
    –>
    h1,
    p?{?color:?black;?}
  12. 12、background、font等可以縮寫的屬性,盡量使用縮寫形式
    1
    2
    background:?color?image?repeat?attachment?position;
    font:?style weight?size/lineHeight family;

CSS屬性取值規范

字體大小font-size

font-size目前人人CSS取值的幾種類型如下:

1
12px/9pt/1.2em/150%/1.7

現將font-size取值的單位類型約束如下:

  1. 1、font-size必須以px或pt為單位,推薦用px(注:pt為打印版字體大小設置)
  2. 2、不允許使用xx-small/x-small/small/medium/large/x-large/xx-large等值

字體系列font-family

目前font-family取值類型豐富多樣,比如home-frame2-all-min.css中:

body Tahoma, Verdana, STHeiTi, simsun, sans-serif
.fselect-pager li a Arial
a.mini-share mingliu
.small tahoma, mingliu
select, label, textarea, input “lucida grande”, tahoma, verdana, arial, STHeiTi, simsun, sans-serif
.m-autosug small MingLiU
#appsMenuPro .menu-apps-side a.add-app-btn 宋體
.site-footer .haoes tahoma, mingliu

為了對font-family取值進行統一,更好的支持各個操作系統上各個瀏覽器的兼容性,現將font-family統一約束如下:

  1. 1、font-family不允許在業務代碼中隨意設置
  2. 2、font-family目前取值為
1
2
3
4
5
6
7
8
9
10
11
12
13
14
body?{
font:?12px?Tahoma,?Verdana,?STHeiTi,?simsun,?sans-serif;
}input,
label,
select,
option,
textarea,
button,
fieldset,
legend?{
font-family:?“lucida grande”,?tahoma,?verdana,?arial,?STHeiTi,?simsun,?sans-serif;
}

hack使用規范

重要原則:盡量少用hack,能不hack堅決不hack,不允許濫用hack。

如果需要使用hack,請參考以下hack方式:

區分規則

IE6 * html selector { … }
IE7 *+html selector { … }
非IE6 html>body selector { … }
firefox @-moz-document url-prefix() { … }
safari3+/chrome @media screen and (-webkit-min-device-pixel-ratio:0) { … }
opera @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { … }
iPhone/mobile webkit @media screen and (max-device-width: 480px) { … }

區分屬性

IE6 _property: value
IE7 +property: value
IE6/7 *property: value
IE6/7/8/9 property: value\9

z-index取值規范

目前人人頁面中的彈層較多,z-index取值也比較隨意,導致相互覆蓋的情況,有的彈層直接覆蓋了頂部導航條。

以下是首頁的一些z-index取值比較大的屬性設置統計:

header頭部導航條 1999
賬號菜單 10001
通知提醒 10000
頂部搜索結果彈窗 10001
頁面內容頂部/publisher 1998
publisher電影搜索提示 1000
用戶等級與登錄信息提醒 1999
回到頂部按鈕 999 in css, 1001 in html
@ 10001
表情 10001
名片卡 9999
底部工具條與webpager/radio 1000 in css, 1999 in html
照片瀏覽彈層 5000
照片多張上傳彈層 3001
XN默認彈層組件 10000
首頁應用中心推薦彈層 1002
HTML5拖拽上傳 999998

其他z-index設置:

.dropmenu-holder 999999
.appsMenuPro 10001
.search-Result 10002 !important
.menu-dropdown 200
.site-nav .navigation 981
.mentionFrdList 10002!important
.app-center-popup 1002
.feed-back-v6 1999
#appcardcontent 1998
.feed-comment-attach 1000
.message-box 1000
#friendcreate-box 100

這些z-index設置,極有可能造成相互覆蓋,存在潛在的問題風險。例如:

  1. 1、publisher在導航條以下,但是在publisher中彈出的@、表情卻在導航條以上。
  2. 2、XN的默認彈層樣式穿透導航條
  3. 3、@組件與名片卡組件相互重疊

因此,有必要對z-index取值進行規范和約束。避免前端開發人員為了自己開發的功能能夠正確展示,而忽略了其他組件的展示需求。

如果要為彈層設置z-index,請務必按照給定的取值區間來進行設置。

這里只是初稿,可能還需要精確到某一個組件的z-index分配,需要大家集思廣益(可以參考cookie的設置流程,在使用z-index時必須經過審批)

頭部導航區域 [1999 – 2100]
publisher所在的內容head區 [1998]
頁面主要內容區域 [-1 – 1997]
頁面底部 [1999 – 2100]
首頁應用彈層 [1000]
全站公共組件 [-1 – 1999]
全頁面蒙層彈窗組件 [10000-11000]

常用的 CSS 命名

header 內容 content footer 導航 nav
子導航 subnav 欄目 column 主體 main 新聞 news
版權 copyright 文章列表 list 加入 joinus 合作伙伴 partner
標志 logo 側欄 sidebar 橫幅 banner 狀態 status
菜單 menu 子菜單 submenu 滾動 scroll 搜索 search
標簽頁 tab 提示信息 msg 小技巧 tips 標題 title
指南 guild 服務 service 熱點 hot 下載 download
注冊 regsiter 登錄條 loginbar 按鈕 btn 投票 vote
注釋 note 友情鏈接 friend-link 外套 wrap 面包屑 bread-crumb
當前的 current 購物車 shop 圖標 icon 文本 txt
待補充…

其他

    1. 1、字體名稱請映射成對應的英文名,例如:黑體(SimHei) 宋體(SimSun) 微軟雅黑 (Microsoft Yahei),如果字體名稱中有空格,則必須加單引號。
    2. 2、背景圖片請合理使用csssprites,按照模塊、業務、頁面來劃分均可
    3. 3、css背景圖片的文件類型,請按照以下原則來保存:
      1. 3.1 如果背景圖片有動畫,則保存成gif
      2. 3.2 如果沒有動畫,也沒有半透明效果,則保存成png-8
      3. 3.3 如果有半透明效果,則保存成png-24
    4. 4、不要在html中加入標簽來清理浮動,通過在浮動元素的父元素上添加.clearfix來清除浮動
    5. 5、為了SEO和頁面可用性,請使用text-indent來隱藏文本內容。
    6. 6、制作csssprites時,盡量把顏色相近的圖標放在一起,存儲為png8格式,存儲完以后還能用一些壓縮工具進行無損壓縮。
    7. 7、避免過小的背景圖片平鋪。
    8. 8、盡量少用!important
    9. 9、避免使用非一次性expression

參考資料

瀏覽器CSS3特效支持規范
http://www.w3schools.com/cssref/css3_browsersupport.asp

Google CSS guidelines
http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml#CSS_Style_Rules

Mozilla官方推薦CSS書寫順序
http://www.mozilla.org/css/base/content.css

bootstrap.css
http://twitter.github.com/bootstrap/assets/css/bootstrap.css

瀏覽器兼容性問題匯總
http://wiki.d.xiaonei.com/pages/viewpage.action?pageId=16090142

CSS hack區分Firefox、Opera、Safari、IE
http://leeiio.me/css-hack-for-firefox-opera-safari-ie/

說說CSS Hack 和向后兼容
http://sofish.de/1331

常用的css命名
http://www.03964.com/read/bbfd0a70fc1602583e1038d7.html

來源:人人網FED

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 從頭學習了

    來自湖北 回復