我们可以在另一个css类中包含常见的css类吗?

jan*_*ith 42 css reusability

我是CSS新手.我只是想知道,是否有可能将一个共同的类包含在另一个类中?

例如,

.center {align: center};
.content { include .center here};
Run Code Online (Sandbox Code Playgroud)

我遇到了css框架 - 蓝图.我们需要将位置信息放入HTML中,例如

<div class="span-4"><div class="span-24 last">
Run Code Online (Sandbox Code Playgroud)

因此,我们将定位属性放在html中,而不是css中.如果我们改变布局,我们需要更改html而不是css.

这就是我问这个问题的原因.如果我可以将.span-4包含在我自己的CSS中,我将不必在我的html标记中指定它.

cle*_*tus 34

奇怪的是,即使CSS谈论继承,类也不能以这种方式"继承".你真正做的最好的是:

.center, .content { align: center; }
.content { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

另外我强烈建议你不要这样做"裸"类选择器.尽可能使用和ID或标签和类:

div.center, div.content { align: center; }
div.content { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我之所以这么说是因为如果你尽可能广泛地选择你的选择器,一旦你获得大型样式表,它最终会变得难以管理(根据我的经验).您最终会将非预期的选择器相互交互到您创建新类(如.center2)的位置,因为更改原始内容会影响您不想要的各种事物.

  • 我强烈反对避免裸体选择者.在我多年的CSS中,我从来没有遇到过将两个概念上不同的类命名为相同的问题.如果你这样做,那么a)你可以很容易地改变一个名字,b)指定元素名称不会解决问题,只是使它不那么可预测,并且通过扩展,更难以诊断和解决,因为*大多数时候,元素不匹配,所以bug只会出现一些时间.真正的问题是使用类似"中心"的类名. (12认同)
  • 我必须部分同意cletus和Thom.首先,像"中心"这样的类描述它应该是什么样子,而不是它的样子,应该避免.像"内容"这样的语义类名称是更好的选择.现在,至于使用广泛(或"裸")选择器,我必须同意cletus - 它确实是一个灾难的秘诀.Firebug使得识别错误变得更容易,但是如果你有十个`<div>,每个都有不同的语义含义,那么每个都应该拥有它自己的类.如果它们共享显示属性,则使用多重选择器(例如`div.content,div.author_name {}`) (4认同)

Der*_*lds 14

这就是层叠的层叠样式表也发挥了作用.

将您的html元素或窗口小部件/模块(嵌套的html元素组)视为对象.您知道您将拥有共享相同属性的对象,因此您需要创建可以使用的可重用类.

.baseModule {align: center;}
Run Code Online (Sandbox Code Playgroud)

假设您的模块是一条消息(错误,闪烁...).因此,您"扩展"或"包含".baseModule类,因为所有消息都将居中对齐(请参阅最终的html示例).

.message {border: 1px solid #555;}
Run Code Online (Sandbox Code Playgroud)

此外,您希望您的错误消息具有红色背景.此外,如果您希望它是不同的颜色或其他东西,您可以在此处覆盖.baseModule.message的border属性.

.error {background-color: red;}
Run Code Online (Sandbox Code Playgroud)

所以现在你有一些可以轻松重用的css定义.

<!-- Regular message module -->
<p class="baseModule message">
    I am a regular message.
</p>

<!-- Error message module -->
<p class="baseModule message error">
    I am an error message. My background color is red.
</p>
Run Code Online (Sandbox Code Playgroud)

要将此与您的问题联系起来,您基本上可以利用多个类名来获得最大的可重用性.当然,ie6不支持链式选择器(class1.class2.class3),但它仍然是一个巧妙的技巧!

  • 但为了保持 HTML 代码(特别是“class”属性)整洁,如果 CSS 定义中可以级联(继承),那就太好了。 (2认同)

Dee*_*ksy 11

在标准的CSS中,它不可能这样做,尽管它会很好.

对于类似的东西,你需要使用SASS或类似的,"编译"到CSS.

  • +1这些系统只是使CSS编写更容易 - 它们最终都像普通的CSS一样. (5认同)