如何在css或sass中别名类名

时间:2012-11-11 21:18:03

标签: css sass font-awesome

我可以为css类创建别名吗?

我正在使用这个字体很棒,我正在尝试为某些图标类创建一个别名。因此.icon-globe也会调用.globe

我怎样才能完成这样的事情?

6 个答案:

答案 0 :(得分:21)

没有别名这样的东西。 Sass确实有@extend指令,但在你查看源代码之前,解决方案并不完全明显。

来源:https://github.com/FortAwesome/Font-Awesome/blob/master/sass/font-awesome.scss

[class^="icon-"]:before,
[class*=" icon-"]:before {
  font-family: FontAwesome;
  font-weight: normal;
  font-style: normal;
  display: inline-block;
  text-decoration: inherit;
}

// snip

.icon-globe:before                { content: "\f0ac"; }

即使你使.globe扩展.icon-globe,你也会错过大部分构成FontAwesome样式的内容,因为它们是如何构建选择器的。您还必须扩展其他选择器。

此:

.globe {
    @extend .icon-globe;
    @extend [class^="icon-"];
}

编译到

[class^="icon-"]:before, .globe:before,
[class*=" icon-"]:before {
  font-family: FontAwesome;
  font-weight: normal;
  font-style: normal;
  display: inline-block;
  text-decoration: inherit; }

.icon-globe:before, .globe:before {
  content: "\f0ac"; }

请注意,icon-前缀是故意的。您可以通过这种方式获得较小的CSS文件,而不是将所有这些样式附加到FontAwesome附带的所有~200个类中。你可以这样做,但我认为结果不是很好。

答案 1 :(得分:15)

我能想到的最简单方法是使用javascript / jquery。

jQuery的:

$(document).ready(function() {
  $('.globe').addClass('icon-globe');
});

答案 2 :(得分:10)

  

我知道这是一个较老的问题,但我回答这个问题,因为线程看起来不完整......

通过扩展SASS

,您可以使用icon-globe轻松完成此操作
.globe{
    @extend .icon-globe !optional;
}

输出CSS将为,

.globe,.icon-globe{
   /* CSS Properties */
}

考虑到Font-Awesome的新类名,您将需要使用具有多个类扩展的.fa-globe

.globe{
    @extend .fa, .fa-globe !optional;
}

输出CSS将为,

.fa,.globe{
 /* ... */
}

.globe,.fa-globe{
   /* CSS Properties */
}

答案 3 :(得分:3)

您可以使用普通的css逗号分隔选择器将相同的样式应用于多个类:

.icon-globe, .globe {
  //styles
}

将相同的样式应用于<i class="icon-globe"><i class="globe">

答案 4 :(得分:3)

您可能对CSS Crush感兴趣,它允许您创建别名http://the-echoplex.net/csscrush/#core--selector-aliases

<强>用法

@selector globe :any( .icon-globe, .globe );

:globe {
  color: red;
}

<强>输出

.icon-globe, .globe {
  color: red;
}

答案 5 :(得分:0)

您可以使用SASS mixin @content为选择器或它们的组合创建别名,如下所示:

@mixin icon {
   .icon-globe,
   .globe {
      @content;
   }
}

@include icon {
   font-size: 16px;
}

SASS将为您生成此文件:

.icon-globe,
.globe {
   font-size: 16px;
}

详细了解db-fiddle;