如何将多个 css 类选择器合并为一个?

Posted

技术标签:

【中文标题】如何将多个 css 类选择器合并为一个?【英文标题】:how to combine multiple css class selectors into one? 【发布时间】:2014-10-12 09:57:55 【问题描述】:

我有几个选择器类,例如

.rt-grid-6 ... .largemargintop ... .rt-left ...

我必须在我的 html 中的几个元素中使用它们

样本

<div class="rt-grid-6 largemargintop rt-left">
    ...
</div>
<div class="rt-grid-6 largemargintop rt-left">
    ...
</div>
...

所以这是重复的并且难以管理,如果我必须添加或删除一个类,那么我必须更新所有出现的情况

所以我在想下面提到的 css 是否可以通过某种方式实现

.item

    rt-grid-6; //refer to the mentioned class
    largemargintop;
    rt-left;

我可以像下面的示例一样使用它们

<div class="item">
    ...
</div>
<div class="item">
    ...
</div>
...

我可以为相同的值定义一个新的 .item 类,但问题是我不能更改现有的类,同时我必须使用各自类中定义的样式。

我不能少用,因为我不能重新定义样式或访问资源。我只收到一个编译后的 css 以按原样使用。

那么有什么可能的方法可以实现我的期望吗?

按照我提到的方式可能不需要解决方案,但我想增加维护,以便更容易从单点向所需元素添加或删除类。

【问题讨论】:

你不能像在常规 CSS 中那样进行继承。看看 Less 或 SASS 或其中一种程序化 CSS 引擎,在这些引擎中,你可以做到这一点。 :) 你需要一个 CSS 预处理器,比如 LESS:lesscss.org 【参考方案1】:

只有CSS 是不可能的。您必须使用 CSS 编译器,例如 SASSLESS

可以看攻略:http://sass-lang.com/guide

SASS 的示例:

.item

    @extend .rt-grid-6; //refer to the mentioned class
    @extend .largemargintop;
    @extend .rt-left;

非常简单!

SASS 中,您可以使用变量等等!非常好用。

【讨论】:

这看起来很棒!看来我需要安装软件。可以只做网页吗? 是的。例如,您可以使用sassmeister.com。您也可以使用SASS 框架,如Compass,它对浏览器兼容性很有用。一些框架如SymfonySASS 兼容以自动编译。我建议你学习SASS! :)。 See this example!.【参考方案2】:

由于你不能使用less或sass,你可以做的是使用一个临时的css类名并使用jQuery替换它,如下代码,

HTML

<div class="temp-class">aaaaaaaaaaaaaa</div>
<div class="temp-class">bbbbbbbbbbb</div>

JS

$(".temp-class").attr("class", "rt-grid-6 largemargintop rt-left");

Demo

【讨论】:

这是我的问题最可行的解决方案。顺便说一句,只是想知道是否可以撤消相同的操作?不只是为了我的知识。无论如何感谢您的帮助:) 你可以使用$(".temp-class").toggleClass("rt-grid-6 largemargintop rt-left");【参考方案3】:

尝试使用 SASS / LESS 来克服这个问题。你用的不行

【讨论】:

以上是关于如何将多个 css 类选择器合并为一个?的主要内容,如果未能解决你的问题,请参考以下文章

详解CSS样式选择器都有哪些?

[转]CSS类选择器:一个元素同时使用多个类选择器

CSS选择器

2、css 选择器

css都有哪些选择器

CSS一个元素同时使用多个类选择器(class selector)