css - 基于不同的混合生成多个输出

标签 css less

我有一组 LESS 文件,例如:

变量

.someMixinName() {
    font-family: Arial, sans-serif;
    font-weight: normal;
}
  • variables.less
  • 无主题

变量包含字体混合(例如),我想创建完全相同样式表的替代版本,但字体混合除外。

变量

.someMixinName() {
    font-family: Arial, sans-serif;
    font-weight: normal;
}

变量-alt

.someMixinName() {
    font-family: Georgia, serif;
    font-weight: bold;
}
  • variables.less
  • 变量-alt.less
  • 无主题

我试图尽可能地简化它 - 我正在寻找一种针对单个 LESS 文件使用不同变量集的技术。

有没有办法基于theme.less生成两个CSS文件,一个对应两组变量?

最佳答案

可以针对单个 LESS 文件使用的一个解决方案是 Parent Selectors 的想法

使用父选择器,您可以根据父元素或属性应用不同的规则。然后可以在父元素上使用此实例中的属性 - 无论是直接父元素还是更全局的东西,如 body 标签。

然后使用你的 mixin .someMixinName() 你可以引用不同的父规则:

所以

.someMixinName() {
    font-family: Arial, sans-serif;
    font-weight: normal;
}

可以变成:

.someMixinName() {

    body:not([data-text="Georgia"]) & {
        font-family: Arial, sans-serif;
        font-weight: normal;
    }

    body[data-text="Georgia"] & {
        font-family: Georgia, serif;
        font-weight: bold;
    }
}

要触发上面的不同规则,您将有一个格鲁吉亚的 body 标签:

<body data-text="Georgia">

CSS 中的结果:

字体系列:Georgia, serif; 字体粗细:粗体;

那么任何不是 'body data-text="Georgia"' 的内容都会导致 Arial 字体:

<body data-text="something else">

<body>

CSS 中的结果:

font-family: Arial, sans-serif;
font-weight: normal;

关于css - 基于不同的混合生成多个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484621/

相关文章:

html - 全屏背景不适用于移动设备

javascript - 谁能告诉我为什么我的 div 是垂直排列而不是水平排列的?

python - 类型错误 : Field 'id' expected a number but got (()

html - CSS 视差效果拉伸(stretch)我的背景图像

css - LESS css 的 compass 样式库?

html - 将 Bootstrap 与特定元素结合使用时出现问题

css - 使用 less 和 Twitter bootstrap

css - 使用 Bootstrap 根据设备大小在元素上应用边框

javascript - Less.js 主动缓存导入的 LESS 文件

node.js - 使用 NPM 安装 lessc - UNABLE_TO_VERIFY_LEAF_SIGNATURE