如何在css或sass中别名类名

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

我正在使用这种超棒的字体,并且尝试为某些图标类创建别名。这样.icon-globe也称为.globe

我该怎么做?

SamGreen十三2020/03/19 12:42:31

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

用法

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

:globe {
  color: red;
}

产出

.icon-globe, .globe {
  color: red;
}
L泡芙Jim2020/03/19 12:42:31

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

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

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

路易飞云2020/03/19 12:42:31

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

您可以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 */
}
米亚西里2020/03/19 12:42:31

没有别名。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"; }

即使您进行了.globeextend .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个类中。可以做到,但我认为效果不是很好。

路易米亚2020/03/19 12:42:31

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

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

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

SASS将为您生成此:

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

阅读更多有关SASS mixin内容块的信息