【发布时间】:2015-07-23 07:45:10
【问题描述】:
在阅读了有关 SMACSS 的文章后,我正在重新评估我的 CSS 设计选择的有效性。
我检查过的冲突之一是:
<button class="cool-text button"></button>
除了语义,有问题的对象有两个类,它们无论如何都不会相互扩展。现在,如果 CSS 是:
.cool-text {
background-color: black; // want this
color: green; // don't want this
font-size: 16px;
text-shadow: 0 1px 0 yellow;
}
.button {
background-color: white; // don't want this
border: 1px solid;
border-radius: 4px;
color: #eee; // want this
}
再一次,这不是一个理想的例子。我想知道,如果我想要来自.cool-text 的background-color 和来自.button 的color 怎么办。在编程语言中,一个对象可以有两个类,您可以指定如何解决方法名称中的冲突。我想类似地,我可以指定.cool-text.button,但我必须重新编写属性,这似乎很糟糕。
.cool-text.button {
background-color: black;
color: #eee;
}
是否有任何使用 SCSS 的解决方法?
此外,依赖类属性中类的位置(在普通 CSS 中)是不是一个坏主意。首先指定的类具有更高的优先级,例如:
<button class="green-button button"></button>
在本例中,.green-button 具有更高的优先级。
这似乎为 HTML 添加了 CSS 特性。如果有很多课程,您将不得不花时间弄清楚应该先上哪些课程,这似乎非常违反直觉。
根据 Quentin,它由 CSS 中的顺序决定。
【问题讨论】:
-
酷文本是否仅限于按钮?如果没有,您可以在定义它们的 CSS 文件中更改它们的顺序。
.button似乎更笼统,应该放在首位 -
"在本例中,.green-button 具有更高的优先级。" ——不,它没有。 HTML 中的类顺序无关紧要(除非您正在编写奇怪的属性选择器)。特异性仅由样式表决定。
-
@Quentin hm 让我测试一下,那么它是如何定义的? nvm,它可能是由它在 css 中的顺序定义的。
-
在这种情况下会使用 !important 吗?