Sass检查是否将规则应用于类

时间:2014-05-19 21:19:02

标签: css if-statement sass border-box

如果已经应用了特定样式,我有一个应该使用一个规则的类,如果已经应用了不同的样式,则有另一个规则。例如,假设某人包含我的样式表并且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
}

2 个答案:

答案 0 :(得分:0)

我不认为这可以通过CSS或SASS实现。

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

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

答案 1 :(得分: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级联的相当标准的使用。