我在这里没有看到任何关于它的快速搜索,如果有让我知道的话。
下面是我要编写的CSS选择器的一个示例。
div#container div#h h1 { /* styles */ }
div#container div#h ul#navi { /* styles */ }
div#container div#h ul#navi li.selected { /* styles */ }
我所有的CSS都是这样写的。这让我不再让样式到处浮动,从技术上讲,我可以很容易地重用相同的类名。例如,我可能在整个站点的多个元素上使用.selected。
我还在class/id之前指定了元素类型(div、ul等),除非样式用于多个元素。我还在id之前指定了元素,即使只有一个id,因为它让我在读取CSS时可以很容易地知道该元素。例如,我马上就知道em#example很可能会有一个字体风格的斜体。
这不是关于CSS格式的问题,这是关于编写选择器的问题。
我很乐意听到关于这种方法的意见,因为我已经使用它很多年了,我正在重新评估我的用法。
虽然有点离题,但我还是像这样为选择器库(比如jQuery )编写选择器。尽管我还没有研究过jQuery的内部结构,看看使用ID指定元素是否存在性能问题。
发布于 2010-01-03 04:02:55
我认为这真的取决于选择器是做什么的。
几乎每个站点都有一个或几个样式表来给站点“皮肤”-字体、文本颜色、链接颜色/悬停、行距等等,您不希望这些选择器非常具体。类似地,如果你有一个组件或元素在许多页面中被重用,并且总是需要看起来相同-就像这里的标签一样-那么如果你使用基于ID的选择器,那么维护它将是一件痛苦的事情。
如果ID指向特定页面上的特定元素,我将始终使用选择器中的ID。没有什么比试图找出为什么你的规则似乎因为与其他规则冲突而不起作用更令人沮丧的了,如果一切都是类的话,这种情况可能会发生很多。另一方面,我认为按实际情况嵌套ID (#container #h
)是多余的,因为ID的目的是唯一的。如果在同一个页面上有多个具有相同ID的元素,那么最终可能会出现各种问题。
当您的选择器提供所表示的“结构”的一些概念时,它确实使CSS更容易理解,但是,老实说,我认为这与分离关注点的想法背道而驰。出于完全合法的原因,#navi
可能会被移到#h
之外,现在必须有人更新#navi
的样式表,即使它没有任何变化。
正如Darrell指出的那样,这有点主观,但这是我的两个观点。
发布于 2010-01-03 03:28:42
虽然这个问题有点主观,但我不得不说,我同意你的想法。我认为在选择器之前定义元素在读取代码时更清晰,也不容易出错。
https://stackoverflow.com/questions/1992548
复制相似问题