-1

如果已经应用了特定样式,我有一个类应该使用一个规则,如果已经应用了不同的样式,则应该使用另一个规则。例如,假设有人包含我的样式表并box-sizing设置为border-box,我如何检查我的班级是否会应用这样的规则?

// from another person's stylesheet
* {
    box-sizing: border-box;
}

// rules created by my Sass mixin
.triangle {
    // if `border-box` xyz, else abc
}
4

2 回答 2

0

你不能用 CSS 做到这一点,因为 CSS 是一种声明性语言。Sass 不会改变 CSS 的工作方式;它只是让编写 CSS 变得更容易。

如果您不确定该声明是否存在,只需声明即可。

例子:

// from another person's stylesheet
* {
    box-sizing: border-box;
}

// rules created by my Sass mixin
.triangle {
    box-sizing: border-box;
    border solid red 15px;
}

或者,如果您想使用标准box-sizing

// rules created by my Sass mixin
.triangle {
    box-sizing: content-box;
    border solid blue 15px;
}

这是 CSS 级联的相当标准的使用。

于 2014-05-21T00:10:48.573 回答
0

我认为 CSS 或 SASS 不可能做到这一点。

请注意,这不是一个小问题:CSS 的顺序决定了应用的 css 属性(您可以覆盖 css 属性)。您可以将 CSS 属性约束到最狂野的 html 路径,SASS 编译器甚至不知道,因为它独立于 html 代码。两者都会使您想要的功能难以实现。

实际上,我也想不出该功能的用例。也许您可以通过在 html 元素上使用越来越多的语义 css 类来解决您的问题。作为阅读的起点,您可能需要阅读Scalable and Modular Architecture for CSS的第 3、6 和 7 章。

于 2014-05-19T21:31:27.043 回答