博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)豆瓣网前端开发规范之 【CSS】
阅读量:4570 次
发布时间:2019-06-08

本文共 4262 字,大约阅读时间需要 14 分钟。

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

你可能感兴趣的文章
JAVA 主要特性
查看>>
DataBase First创建数据库
查看>>
NSString和NSMutableNSString的基本用法
查看>>
Selenium_WebDriver_定位元素
查看>>
spring 的redis操作类RedisTemplate
查看>>
第三篇——软件工程之结构化设计方法
查看>>
文件上传和下载
查看>>
存储过程/存储函数
查看>>
C++ && C# 函数的递归调用
查看>>
Json-lib 进行java与json字符串转换之一
查看>>
c++基础知识学习-----数据程序的储存、表示形式和基本运算
查看>>
python cookbook读书笔记1 第一章 数据结构和算法1
查看>>
【bzoj4300】绝世好题 dp
查看>>
真事儿!——我们官网被全站拷贝了!
查看>>
边工作边刷题:70天一遍leetcode: day 27-1
查看>>
清理C盘的一个新发现,Visio Studio在调试过程中产生的垃圾文件
查看>>
抽象类及抽象方法
查看>>
Canvas基本绘画学习
查看>>
要习惯用vector代替数组
查看>>
Django ORM 最后操作
查看>>