css - 添加 CSS 类作为样式

标签 css css-selectors

有没有办法在外部样式表中引用另一个类?以我的代码为例。假设我想在按钮悬停时将其变为红色;我知道我可以只使用背景:#fff,但是有没有办法可以使用另一个类作为此选择器的样式? (没有 JavaScript,只有 css 和/或 html)

.red {
    background: #f00;
}
button {
    background: #000;
}
button:hover {
    /* Reference another class */
    .red; ???
}

编辑:我想要 button继承 red 的样式当鼠标悬停在类上时。

最佳答案

如果没有任何预处理器(例如Less),目前这是不可能的。 。然而,有一个相当新的提议implement CSS variables在遥远的 future 的某个时间。但目前,使用纯 CSS 还无法实现这一点。您现在可以做两件事:

1。使用预处理器

您可以使用预处理器,例如 LESSSCSS 。在 LESS 的情况下,您需要使用 mixins ,在 SCSS 中您需要 extend the existing class 。 CSS 预处理器还有更多,但这些是最流行的。

您使用的语法与 Less 中所需的语法完全相同。

SCSS demo , LESS demo

2。使用 JavaScript

如果您在自己无法轻松访问的服务器上运行站点,或者您有任何其他原因无法安装此类预处理器,则可以使用 JavaScript 作为替代方案。您必须运行一个脚本来扫描所有类的应用样式。这可行(基于 this SO answer ),但是 do watch out with cross-domain rules .

function applyRules(from, to) {
    var sheets = document.styleSheets;
    var re = new RegExp('(^|,)\\s*'+from+'\\s*(,|$)');
    var rules, curr;
    var styles = '';
    for (var i=0;i<sheets.length;i++) {
        rules = sheets[i].rules || sheets[i].cssRules;
        for (var j=0;j<rules.length;j++) {
            if (re.test(rules[j].selectorText)) {
                curr = rules[j].cssText || rules[j].style.cssText;
                styles += ';' + curr.substring(curr.indexOf('{')+1, curr.indexOf('}'));
            }
        }
    }
    var sheet = document.createElement('style');
    sheet.type = 'text/css';
    sheet.innerHTML = to + '{' + styles + '}';
    document.head.appendChild(sheet);
    return sheet;
}
applyRules('.red', 'button:hover');

Demo .

这将在所有可访问的样式表中搜索选择 .red 的样式,并将这些样式应用于 button:hover

关于css - 添加 CSS 类作为样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704292/

相关文章:

javascript - `tbody` 为什么不在表格中设置背景颜色?

javascript - Galaxy Nexus 忽略视口(viewport)元标记

css - 可以为网页设计带来戏剧性(非破坏性)美学变化的最简单的 CSS 更改是什么?

javascript - jQuery 选择器和运算符

java - Webdriver - 无法找到 Xpath/CSS 并出现 NoSuchElementException

CSS 使用相同的背景颜色将每 3 行组合在一起并调整最后或最后两行

css - 如何使用 CSS 将绝对 div 水平居中?

html - 如何垂直对齐div内的段落

css - 如何结合 nth-child hover 和 before

html - 如何在 css 中使用 nth-of-type 而不重启