常规CSS属性顺序

时间:2011-02-02 19:02:51

标签: css conventions

CSS属性应该采用什么顺序的标准指南?这将决定我是否应该使用此代码

p {font-size: 14px; color: purple}

或此代码

p {color: purple; font-size: 14px}

修改

我现在正在使用The CSS Box Model Convention

9 个答案:

答案 0 :(得分:19)

事实上,没有广泛认可的公约。我更喜欢编写同心CSS ,其中我从框的外部按顺序列出属性,以便我可以记住填充是在边框内部还是在边框之外,等等。在这里阅读了你的优秀问题之后,我意识到我对写博客文章感到非常强烈,所以在这里你以防万一你好奇:

http://rhodesmill.org/brandon/2011/concentric-css/

请注意,在某些情况下,受欢迎的Box Model Convention 订单错误。实际的CSS渲染按顺序排列,从外到内:

+-------------------+
|                   |
|      margin       |
|                   |
|  +---border----+  |
|  |             |  |
|  |(background  |  |
|  |    color)   |  |
|  |             |  |
|  |   padding   |  |
|  |             |  |
|  |  +-------+  |  |
|  |  | height|  |  |
|  |  |   ×   |  |  |
|  |  | width |  |  |
|  |  +-------+  |  |
|  +-------------+  |
+-------------------+

这表明CSS的自然顺序:

margin / border / background / padding / height × width

“Box Model Convention”改为使用这个相当奇怪的顺序:

height × width / margin / padding / border / background

答案 1 :(得分:2)

没有广泛采用的惯例。两个示例之间没有区别,因此您应该选择您喜欢的约定。如果你必须真正满足大地精,请选择按字母顺序或它影响盒子模型的顺序。

答案 2 :(得分:1)

我不相信属性的顺序会对最终结果产生任何影响,除非调用两个相似的属性,如

border:1px solid #000;
border-top:none;

border-top:none;
border:1px solid #000;

除此之外,无论你发现什么,最容易阅读都是最好的选择。我按字母顺序列出它们,因为它们倾向于将属性组合在一起。

答案 3 :(得分:0)

我见过几位指南说他们应该按字母顺序排列。那么,你的第二个例子。

CleanCSS这样的工具可以为您按字母顺序排列它们。

答案 4 :(得分:0)

我通常按字母顺序排列属性,这样当你搜索人口众多的CSS规则时,它会更容易找到你想要的东西。

答案 5 :(得分:0)

不是。

但按字母顺序和/或组字体规则和框/布局规则排序是有意义的。你的代码会更清楚。

示例:

/* font */
color: blue; font-size: 12px; word-wrap: break-word;
/* layout */
border: 1px solid red; border-bottom: none; margin-top: 6px; padding: 4px 6px;

答案 6 :(得分:0)

CSS的主要排序问题是类的顺序,而不是属性。由于样式表级联,更具体的样式表将获胜。我倾向于按字母顺序按字母顺序进行分组,可能的例外情况是属于同一属性,不管字母顺序如何。

答案 7 :(得分:0)

没有固定的标准。有些人根据他们的强迫症水平有偏好。我喜欢先做高度/宽度然后定位,颜色等。我见过人们开玩笑说公司的CSS根据字符数排序。至少我认为他们在开玩笑。

答案 8 :(得分:0)

这就是我的操作方式,我认为这在逻辑顺序方面最有意义。秘制酱是顶部的三个属性。在80/20分析方面,了解这三种可以帮助我确定其余样式的情况。

element {
  /* I. Microcosm of All Properties */
  content:           /* What it is. */
  display:           /* Where or whether it is. */
  position:              /* Relationships to others. */

  /* A. Content Properties † */
  background-image:   /* 1. Internal content styling ... */
  background- ...       
  border:               
  opacity:          

  font-family:       /* 2. Typographic styling ...*/
  font- ...         
  text- ...         
  color:                

  /* B. Display Properties */
  box-sizing:            /* Ordered by Box Model ...*/
  height:               
  width:                
  max- ...          
  padding:          
  margin:               

  /* C. Relational Properties */
  float:                
  order:                
  z-index:          

  /* D. State Properties */
  cursor:               
  animation:            
  transition:           
}

†在这里尤其可以看到“ background-image”和“ font-family”,我也倾向于从这些部分开始,这些属性的值带有长字符串。我认为它是这些部分之间的自然分隔符。