有没有好的CSS编码风格和标准?
我同意 Andrew Hare 链接中的大多数观点,但强烈相信
.class-name {
color: green;
}
is inferior to:
的翻译是 "不如:
"。.class-name
{
color: green;
}
因为以下理由:
.class-name, .class-name2 {
color: green;
}
或:.class-name,
.class-name2 {
color: green;
}
相比于以下内容,更不容易被 grep 或阅读到:
.class-name,
.class-name2
{
color: green;
}
并没有一个标准的标准。当然有许多内部标准和惯例,也有已知的最佳实践。
我遵循以下原则:
根据目的构建CSS结构
这可能涉及将CSS问题分为不同的文件(layout.css、colors.css等)。这也可以清晰地沿着相同的线路将单个CSS文件划分为清晰的部分。
尽可能具体
选择器具有不同的权重。基于ID的选择器比基于类的选择器更具体。链式选择器(例如body div#container div#content p
)非常具体。
一开始时尽可能具体,即使看起来你过于具体。稍后,通过删除一个并使另一个不太具体,很容易合并两个非常具体的样式定义。
具有松散特异性的样式定义可能以您未打算的方式针对元素,并且这种方式不是立即明显或明显的。我认为这是CSS挫败感的最常见原因(“为什么这个
始终指定要应用于给定定义的每个样式
例如,如果您希望所有段落都具有粉色文本,请将文本颜色设置为粉色,并设置边距/填充/背景颜色/字体等。
不要依赖浏览器默认值是否足够一致。对于最常用的元素,主要浏览器 tend to use very similar if not identical default styling。
如果您自己设置了所有相关样式,则知道最终结果应该是什么。
如果您只设置那些最直观的样式,则最终结果将(很可能)是浏览器默认值和您的样式的组合。这最终会在某个时候让您失望。我认为这是CSS挫败感的第二个最常见原因。
使用id来为独特元素设置样式
通常最好为任何将以任何方式交互的唯一元素应用id
属性。对于CSS,这将使您更轻松地应用适当的特定样式。
在唯一页面上使用id
与大多数页面(主页、搜索结果、404)风格和布局明显不同的页面应在body
元素上使用id
。这为您提供了所需的特异性,以确保您的精心设计的主页样式不会受到稍后应用于某些内部内容页面的样式的影响。
漂亮的代码风格 VS 网站速度
我一直在使用相当庞大的 CSS 文件,并发现了一些非常有趣的事情,这些以前我从未听说过。
@import
其中一个是使用 @import。实际上,这是一个瓶颈 - 完全不使用 @import,网站变得更加迅捷。
#每个 .style {都写在同一行}
当浏览器读取文档时,它逐行读取,所以通过从我的漂亮的代码风格切换到这种方式,我实现了两件事:
仅从经验来看,我曾经写过相当长的CSS样式表。现在我的样式表通常只有半页。
所以保持简单(KISS),基于行(greppable)和紧凑(使用font:而不是font-size等等)。
此外,我强烈建议使用CSSlint检查您的代码是否存在冗余。
将您的CSS规则(例如:“color: red;”)按字母顺序排列,并按它们在标记中出现的顺序排列选择器(例如:“div { color: red; }”)。将结构代码与样式代码分开。
我强烈推荐看一下Less: http://lesscss.org
虽然它不是真正的标准,但最近它已经获得了很多动力。Less是一种在浏览器中运行的CSS扩展,将变量和函数引入语言,从而允许模板化。
当我编写CSS代码时:
你可以在CSS Zen Garden中看到一些例子。
通常我会将最重要的元素插入到其他元素之上:如果有
p.important{/*features of a class*/}
p {/*features of a general element */}
通过读取CSS文件,我了解到关于最特定元素的格式规则先于最一般元素的规则。
这是Java编程中的一种习惯。