css - 不同的选择器,同样的风格,如何在less中防止重复输出

标签 css less

我有以下较少的代码,它导致生成四个代码块,其中三个 block 具有相同的内容。

有没有办法确保只生成两个代码块,而不必为这些元素使用以逗号分隔的长链选择器?

section.bmform {
    .thanks-for-requesting {
        .change-request {
            .highlight_bordered();
        }
    }
    .bmform-submit-container {
        .bmform_submit {
            .highlight_bordered();
        }
    }
    .btn {
        &.btn-danger {
            &.plus, 
            &.minus {
                .highlight_bordered();
            }
        }
    }
}
.highlight_bordered() {
    border-radius: 0px;
    border: 2px solid #af2222;
    font-size: 1.2em;
    line-height: 1.2em;
    padding: 4px 6px 2px 6px;
    &:hover {
        border: 2px solid #8c2828;
        background-color: #bf0808;
    }
}

以上代码生成如下代码:

section.bmform .thanks-for-requesting .change-request {
    border-radius: 0;
    border: 2px solid #af2222;
    font-size: 1.2em;
    line-height: 1.2em;
    padding: 4px 6px 2px
}
section.bmform .bmform-submit-container .bmform_submit {
    border-radius: 0;
    border: 2px solid #af2222;
    font-size: 1.2em;
    line-height: 1.2em;
    padding: 4px 6px 2px
}

section.bmform .btn.btn-danger.minus,
section.bmform .btn.btn-danger.plus {
    border-radius: 0;
    border: 2px solid #af2222;
    font-size: 1.2em;
    line-height: 1.2em;
    padding: 4px 6px 2px
}

section.bmform .bmform-submit-container .bmform_submit:hover,
section.bmform .btn.btn-danger.minus:hover,
section.bmform .btn.btn-danger.plus:hover,
section.bmform .thanks-for-requesting .change-request:hover {
    border: 2px solid #8c2828;
    background-color: #bf0808
}

这是我理想中希望生成的代码。

section.bmform .thanks-for-requesting .change-request,
section.bmform .bmform-submit-container .bmform_submit,
section.bmform .btn.btn-danger.plus,
section.bmform .btn.btn-danger.minus {
    border-radius: 0px;
    border: 2px solid #af2222;
    font-size: 1.2em;
    line-height: 1.2em;
    padding: 4px 6px 2px 6px;
}
section.bmform .thanks-for-requesting .change-request:hover,
section.bmform .bmform-submit-container .bmform_submit:hover,
section.bmform .btn.btn-danger.plus:hover,
section.bmform .btn.btn-danger.minus:hover {
    border: 2px solid #8c2828;
    background-color: #bf0808;
}

最佳答案

一个解决方案是使用扩展。通过使用扩展,它将共享相同样式规则的选择器分组,从而产生更紧凑的代码。

它不是列出的选择器从其中的 .highlight_bordered 中提取代码,而是将自己的选择器标准添加到 .highlight_bordered 样式规则中。

section.bmform {
    .thanks-for-requesting {
        .change-request {
            &:extend(.highlight_bordered);
        }
    }
    .bmform-submit-container {
        .bmform_submit {
            &:extend(.highlight_bordered);
        }
    }
    .btn {
        &.btn-danger {
            &.plus, 
            &.minus {
                &:extend(.highlight_bordered);
            }
        }
    }
}

关于css - 不同的选择器,同样的风格,如何在less中防止重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356663/

相关文章:

css - Less:mixins 样式与添加的样式规则

css - CSS 预处理器会生成更高效的 CSS 代码吗?

html - 在 Angular 中使用主机选择器

css - 修复了 3 列布局中的可切换页脚

jquery - 定位下拉菜单

jquery - 如何在弹出屏幕显示时禁用 ListView 的滚动

css - LESS 中的十六进制数学有一个奇怪的观察/结果。为什么会这样呢?

css - 如何防止 Less 尝试编译 CSS calc() 属性?

jquery - 链接背景图片在 Firefox 上不起作用

css - LESS 不输出源映射