【发布时间】:2012-02-08 11:03:55
【问题描述】:
我在Object-Oriented CSS 上阅读了一些关于Nicole Sullivan 的理论。简而言之,基本思想是,与其在每次设计网站时都从头开始,不如使用一些已经编写好的基本构建块作为类,然后扩展它们以满足我们的需求. (“扩展”包括向 HTML 添加更具体/覆盖的类,因为 CSS 类不可能相互继承规则......希望在 CSS4 中?:) OOCSS 原则的灵感来自于你不需要每次需要查找双数的正弦时,都重新编写Java Math class。代码已经(由某人)编写,为什么不使用它呢?
虽然我认为这是一个很棒的抽象形式的提案,但从适用的角度来看,我很难理解它。 [阅读下面我的具体问题,但我一直在寻找阅读材料,所以请随时停下来并评论一些指向 OOCSS 资源的链接,例如好处和批评等]
这是我的样式表:
.heading {...} /* for all heading styles */
.alpha {...} /* specific changes for h1 */
.beta {...} /* specific changes for h2 */
.gamma {...} /* specific changes for h3 */
.delta {...} /* specific changes for h4 */
.epsilon {...} /* specific changes for h5 */
.zeta {...} /* specific changes for h6 */
现在第一个选择器适用于任何标题,具有常见的属性,例如font-family、letter-spacing 等。然后每个“子类”(不是真正的子类)都有特定的差异,例如color、@987654330 @、font-weight 等。这些“子类”写在样式表中在.heading 之后的事实表明,如果它们中的任何一个包含具有不相等值的相等属性,那么@987654333 中的属性@ 将被“子类”中的那个覆盖。为了得到我的标题 1,我会写:
<h1 class="heading alpha">Contact Me</h1>
事实上,我可以使用class="heading alpha" 来设置任何元素的样式,例如span,但这确实是一个h1 元素。
[当然,我想说的是
.heading {...}
.alpha {
extends: .heading;
...
}
==============================
<h1 class="alpha">Contact</h1>
但我们还没有完全到那个时候。]
我的问题是,如果heading alphas 通常是左对齐的,我该怎么做才能使这个实例居中? Nicole 会说我应该导入她的样式表并使用她的.txtC {text-align:center;} 规则,所以我的代码会变成:
<h1 class="heading alpha txtC">Contact Me</h1>
但我认为基本上与 CSS 规则和类具有一对一的对应关系。如果我使用这种方法,那么我就不需要编写任何自己的样式表,而只需在我的 HTML 代码中添加一堆小类(“legos”),使其变得庞大且不可读。想象一下:
<p class="ital size-medium sans-ser txtJ med-height dark-blue">This is a
size 12pt, italic, Arial, left-right justified, 1.2em line height, dark
blue paragraph.</p>
写一个类specialParagraph(or paragraph-special or whatever)然后在CSS中分配所有这些规则不是更有意义吗?不需要乐高积木?就我而言,我不能将.alpha {text-align: center;} 添加到我的联系人页面顶部吗?或者甚至是在线?
【问题讨论】:
标签: css css-selectors oocss