(轉)豆瓣網前端開發規範之 【CSS】

weixin_30639719發表於2020-04-05

Douban CSS Code Guideline

來源:https://github.com/kejun/CSS-Code-Guideline#douban-css-code-guideline-

1. CSS瀏覽器支援標準

  WinXP Win7 OS X
IE9 B B  
IE8 A A  
IE7 B B  
IE6 B B  
Chrome16 A A A
Chrome14 A A A
Firefox10 A A A
Firefox9 A A A
Safari B B B
Opera C C C

(注:根據2012年4月資料整理)

  • A級-互動和視覺完全符全設計的要求
  • B級-視覺上允許有所差異,但不破壞頁面的整體效果
  • C級-可忽略設計上的細節,但不防礙使用

2. 重用已有的樣式庫

  • 2-1. 主站全域性CSS檔案 - douban.css (注意:新專案中不推薦使用)
  • 2-2. 相容主站的全域性CSS檔案 - /css/core/init.css
  • 2-3. 當前使用的CSS庫(持續更新)
    • util-01 reset /css/core/reset.css
    • util-02 通用模組容器 /css/core/mod.css
    • ui-01. 喜歡按鈕 /css/core/fav_btn.css
    • ui-02. 視訊/相簿列表項 /css/core/media_item.css
    • ui-03. 評星 /css/core/rating.css
    • ui-04. 通用按鈕 /css/core/common_button.css
    • ui-05. 分頁 /css/core/pagination.css
    • ui-06. 推薦按鈕 /css/core/rec_btn.css
    • ui-07. 老版對話方塊 /css/core/old_dialog.css
    • ui-08. 老版Tab /css/core/old_tab.css
    • ui-09. 老版成員列表 /css/core/old_userlist.css
    • ui-10. 老版資訊區 /css/core/notify.css
    • ui-11. 社群使用者導航 /css/core/profile_nav.css
    • ui-12. 當前大社群導航 /css/core/site_nav.css
    • ui-13. 載入中 /css/lib/loading.css

3. CSS檔案的目錄管理

所有的CSS分為兩大類:通用類和業務類。

  • 3-1. 通用的CSS檔案,放在如下目錄中:

    基本樣式庫 /css/core
    通用UI元素樣式庫 /css/lib
    JS元件相關樣式庫 /css/ui
  • 3-2. 業務類的CSS是指和具體產品(如音樂、讀書等)相關的檔案,放在如下目錄中:

    讀書 /css/book/
    電影 /css/movie/
    音樂 /css/music/
    社群 /css/sns/
    小站 /css/site/
    同城 /css/location/
    電臺 /css/radio/
    九點 /css/newnine/
    商務 /css/biz/
    ... /css/產品名稱
  • 3-3. 外聯CSS檔案適用於全站級和產品級通用的大檔案。

  • 3-4. 內聯CSS檔案適用於在一個或幾個頁面共用的CSS。利用模板系統支援的istatic方法引用。

  • 3-5. 模組依賴的CSS和模組放在一起。利用模板系統支援的collect_css過濾器實現。

4. CSS的模組化組織

當前靜態檔案管理系統已支援SCSS和匯入語法。開發中,應儘量按功能分解大檔案,實現模組化的檔案組織。

  • 使用和完善現有CSS庫(見2-4)。
  • 單個CSS檔案避免過大(建議少於300行)。
  • CSS檔案巢狀不要超過一層

5. 不要輕易改動全站級CSS和通用CSS庫。改動後,要經過全面測試

6. 單條CSS規則的書寫格式要求

  • 6-1. 單行形式適用於直接寫在頁面中和長檔案的情況。宣告寫在一行。需要在“{"和"}”前後加空格。 (注:在很長的檔案中,單行形式有利於檢索選擇器)
    .selector { property:value;property:value; }

簡短規則宣告(1或2個)也適用單行形式。

    .selector { property:value; }
  • 6-2. 格式化書寫形式。適用於不是很長的模組檔案或CSS3語法。冒號後加空格。
    .selector { 
        property: value;
        property: value; 
    }

CSS3相容書寫形式和對齊方式:

    .selector { 
      -webkit-box-shadow: 0 0 5px rgba(200, 200,200, 0.8);
         -moz-box-shadow: 0 0 5px rgba(200, 200,200, 0.8);
              box-shadow: 0 0 5px rgba(200, 200,200, 0.8);
    }

CSS3中逗號分隔的長屬性值:

    .selector {
        box-shadow:
            1px 1px 1px #000,
            2px 2px 1px 1px #ccc inset;
        background-image:
            linear-gradient(#fff, #ccc),
            linear-gradient(#f3c, #4ec);
    }
  • 6-3. 多個(>2)selector每個佔一行:
    .selector1,
    .selector2,
    .selector3 { ... }
  • 6-4. 規則宣告的順序:定位、盒模型(width/height/padding/border/margin)、行高、字型/字號/顏色、背景、CSS3效果等

  • 6-5. 相容多個瀏覽器時,將標準規則宣告寫在後面,如:

    -webkit-border-radius: 4px;
       -moz-border-radius: 4px;
            border-radius: 4px;

7. 註釋書寫形式

  • 7-1. 註釋內容單行控制在40箇中文或80個英文字元寬。註釋的格式:
     /* 
      * mod: doulist 
      * 描述內容
      */

SCSS中支援單行註釋

    // mod: doulist
  • 7-2. 規則分類放在一起。通用規則在具體業務規則的前面。如:
    /* layout */
    ...
    /* mod */
    ...
    /* nav */
    ...
    /* mod: events album */
    ...

8. ID和Class命名。命名不要用縮寫(除一些公認的縮寫,見8-4),單詞間用"-"做為連線符

  • 8-1. ID是用來標識具體模組,命名必須具體且唯一,由字首和名字組成。不要濫用ID。如: #db-video-list、#group-member-list等。
  • 8-2. Class是用來標識某一型別的物件,命名簡潔表意清楚。如:.list。
  • 8-3. 命名示例:

壞:

    #rec
    .gray-link
    .broadsmr
    .pl

好:

    #db-nav-main
    .infobox
    .item
  • 8-4. 推薦使用的class名:
    表示狀態 .on, .active, .selected, .hili
    表示位置 .first, .last, .main, .side
    表示結構 .hd, .bd, .ft, .col, .section
    通用元素 .tb, .frm, .nav, .list, .item, .tag, .pic, .info

9. 避免濫用CSS Hack

推薦使用下面的:

區別屬性:

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

區別規則:

IE6 * html selector { ... }
IE7 *:first-child+html selector { ... }
非IE6 html>body selector { ... }
firefox only @-moz-document url-prefix() { ... }
saf3+/chrome1+ @media all and (-webkit-min-device-pixel-ratio:0) { ... }
opera only @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) { ... }

注意:SCSS會自動轉換一些不標準CSS寫法,會破壞CSS Hack。

10. 使用after或overflow的方式清浮動,不要在html裡增加多餘的標籤

11. CSS必須放在head裡

12. 避免使用低效的選擇器

如:

    body > * {...}
    ul > li > a {...}
    #footer > h3 {...}
    ul#top_blue_nav {...}
    #searbar span.submit a { ... }
    .target #target-node { ... }

13. 避免使用filter

14. 避免直接定義標籤的樣式。如: div { ... }

15. 避免在標籤上直接寫樣式。如:

16. 避免在CSS中使用expression

17. 避免在CSS中使用@import

18. 儘量不要在CSS中使用!important

19. 絕對不要在CSS中使用"*"選擇符

轉載於:https://www.cnblogs.com/Shane-Chow/archive/2012/07/10/2584713.html

相關文章