传说中的Mozilla推荐
/* mozilla.org Base Styles* maintained by fantasai*/
/* Suggested order:* display* list-style* position* float* clear* width* height* margin* padding
Technorati 标签: CSS
 * border* background* color* font* text-decoration* text-align* vertical-align* white-space* other text* content**/
...

来源:http://www.mozilla.org/css/base/content.css

在怿飞’s Blog的这篇文章里,又将上面的属性分成了三组:显示属性、自身属性和文本属性。在回复里,inG补充这还和浏览器的解析过程有关:浏览器先对DOM定位,然后解析自身属性,接着再解析内部对象。(没找到相关的英文资料,有知情者还望告知)

在Mozilla官方,其实并没有推荐任何CSS书写顺序。很可能是某个开发者在阅读fantasai的这篇文章 mozilla.org Markup Reference 时,顺便对fantasai的CSS源文件产生了兴趣,因此才有了上面的发现。

字母排序

NETTUTS上时不时有些好文章,这不,前不久,Trevor Davis就分享了一篇:5 Ways to Instantly Write Better CSS. 这篇文章中,推荐CSS的属性按字母排序。

优点是:简单,任何人只要遵守,一看就明白。

缺点是:太简单,缺乏逻辑性。比如position, left, top等,这种紧关联的属性,如果都按字母排序,书写和维护起来都不方便。

Andy Ford推荐的排序

Andy Ford是HTML和CSS方面的专家,最近写了一篇文章:Order of the Day: CSS Properties. 文章推荐的CSS书写顺序为:

 1. Display & Flow2. Positioning3. Dimensions4. Margins, Padding, Borders, Outline5. Typographic Styles6. Backgrounds7. Opacity, Cursors, Generated Content

例子:

el {display: ;visibility: ;float: ;clear: ;position: ;top: ;right: ;bottom: ;left: ;z-index: ;width: ;min-width: ;max-width: ;height: ;min-height: ;max-height: ;overflow: ;margin: ;margin-top: ;margin-right: ;margin-bottom: ;margin-left: ;padding: ;padding-top: ;padding-right: ;padding-bottom: ;padding-left: ;border: ;border-top: ;border-right: ;border-bottom: ;border-left: ;border-width: ;border-top-width: ;border-right-width: ;border-bottom-width: ;border-left-width: ;border-style: ;border-top-style: ;border-right-style: ;border-bottom-style: ;border-left-style: ;border-color: ;border-top-color: ;border-right-color: ;border-bottom-color: ;border-left-color: ;outline: ;list-style: ;table-layout: ;caption-side: ;border-collapse: ;border-spacing: ;empty-cells: ;font: ;font-family: ;font-size: ;line-height: ;font-weight: ;text-align: ;text-indent: ;text-transform: ;text-decoration: ;letter-spacing: ;word-spacing: ;white-space: ;vertical-align: ;color: ;background: ;background-color: ;background-image: ;background-repeat: ;background-position: ;opacity: ;cursor: ;content: ;quotes: ;}

Andy的顺序大体上和fantasai推荐的顺序保持了一致,但细节上更具可操作性。

SitePoint上还有个很热烈的讨论贴:How do you order your properties within a declaration block?

我的想法

我喜欢fantasai和Andy的书写顺序,但fantasai的顺序中,“自身”属性有点含混不清,Andy的则太细,难以记住。我觉得可以借鉴CSS 2.1 Specification中对CSS属性的分类,将Andy的顺序稍微调整下:

  1. 影响文档流的属性(比如:display, position, float, clear, visibility, table-layout等)
  2. 自身盒模型的属性(比如:width, height, margin, padding, border等)
  3. 排版相关属性(比如:font, line-height, text-align, text-indent, vertical-align等等)
  4. 装饰性属性(比如:color, background, opacity, cursor等)
  5. 生成内容的属性(比如:content, list-style, quotes等)

事情永远没那么简单,比如下面这些困扰:

  1. 对于shorthand怎么处理?比如 border: 1px solid red; 其中border-width是和盒模型相关的,但border-color是装饰性的。如何组织呢?
  2. 考虑到换肤功能,是否应该将color, background, border-color等和颜色相关的都放一块?以方便以后修改。
  3. 对于hacks如何处理?单独放到css文件最后面,还是和hack的属性紧挨着好?
  4. 维护同事的css文件时,对于新增加或有修改的属性,如何注释?如何书写?
  5. 还有,考虑到CSS Sprite, 所有背景图的选择器都放在一起?不过这已经超出本文的话题了:CSS选择器内属性的顺序和组织。
  6. 更进一步的讨论是:CSS文件内的结构组织,以及多个CSS文件的组织。

转载于:https://www.cnblogs.com/mygoare/archive/2010/08/14/1799510.html

CSS中属性的书写顺序相关推荐

  1. 需警惕CSS3属性的书写顺序

    需警惕CSS3属性的书写顺序 文章传送门:http://www.zhangxinxu.com/wordpress/?p=1117 作者:张鑫旭

  2. css中属性兼容性写法,CSS3兼容属性和标准属性的书写顺序

    一.不同书写顺序示例 首先个人推荐的正确写法: //标准属性放在兼容属性之后 -webkit-border-radius: 10px 30px; border-radius:10px 30px; 容易 ...

  3. CSS中属性的值和单位

    CSS中值的单位 1.颜色值 被各种浏览器支持,并且作为 CSS 规范推荐的颜色名称只有 16 种,如下表所示. 百分比表示 color: rgb(100%, 100%, 100%); 这个声明将红. ...

  4. CSS中属性个属性值怎么区分,[CSS] 详细解释 @media 属性与 (max

    前言 现在 HTML5/CSS3 很流行罢,也是未来时代的趋势.在 HTML5 带来的许多实用功能之后,CSS3也同带来了一些牛逼哄哄的功能呢. 动画 animation 转化 transform 过 ...

  5. CSS样式 盒模型中的border属性的书写顺序

    border有三个属性,为了代码的可读性,建议顺序为 border-width.border-style.border-color 如: p {border: 1px solid black } 但实 ...

  6. css中属性设置成百分比

    结论: 标准流中的元素,看其属性有没有继承性.对于width和margin-left,它是可以继承的,它会参照父元素或者祖先元素(其实是包含块):对于height,它没有继承性,父元素或者祖先元素会自 ...

  7. web表格在css中属性,CSS属性之表格(Table)_html/css_WEB-ITnose

    HTML为表格定义了3个元素用于对行进行分组,它们是 thead (表头).tbody (表格主体).tfoot (脚注). 在HTML4中文档结构中的 tfoot 必须出现在 tbody之前,HTM ...

  8. CSS z-index属性层重叠顺序

    作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址

  9. js中样式属性的书写规则

    JavaScript和css中属性名称有哪些差异? 主要有两个: JavaScript使用驼峰命名法,而css不是. JavaScript的属性值用字符串表示,而css不是. 而导致这两个原因的就是J ...

最新文章

  1. Android定制:修改开机启动画面
  2. virtualenv 安装与使用linux下(记录一下)
  3. Web UI设计的关键要素!
  4. 基于大数据开发套件定时调度带资源文件的MapReduce作业
  5. java buffer nio_Java NIO之Buffer(缓冲区)入门
  6. js入门·表单详解一(修改表单属性,修改表单元素值)
  7. boost::coroutine模块实现对称协程的测试程序
  8. 【渝粤题库】广东开放大学 会展概论 形成性考核
  9. 【grafana】grafana 添加 MySQL 本地无法连接
  10. Fiddler--QUICKEXER
  11. Linux下的sniffer工具--Tcpdump的安装和使用
  12. MapXtreme2005开发的经典问题
  13. 零售销售数据分析案例实战
  14. 【设计模式】代理模式
  15. Linux版awvs最新版v_190325161的安装记录
  16. 使用python进行windows系统UI自动化
  17. QT QComboBox使用详解
  18. 计算机网络课程思政教学目标,计算机学院举行课程思政示范教学活动
  19. Piranha web 界面LVS DR 模式配置图文详解
  20. Linux下的gpt分区

热门文章

  1. 如何进行聚类可视化_R语言rainette包对数据聚类可视化
  2. 基于 RocketMQ 的基金数字化陪伴体系的架构实践
  3. 为什么说 Serverless 是云的未来?
  4. 阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
  5. android service alertdialog,Android service里面启动alertdialog
  6. 建行参考码大全ybla_52度五粮液价格表大全 不同系列价钱盘点
  7. 变阻感器测量位移的计算机流程图,传感器工作流程图
  8. python读取路径太长_路径名太长,无法打开?
  9. oracle bi publisher 安装,Oracle BI Publisher 企业版安装后的配置(BI Publisher Enterprise Edition)...
  10. shiro原理_java:shiro高级篇——1