如何在css或sass中别名类名

bym*_*nan 37 css sass font-awesome

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

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

我怎么能完成这样的事情呢?

cim*_*non 22

没有别名这样的东西.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"; }
Run Code Online (Sandbox Code Playgroud)

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

.globe {
    @extend .icon-globe;
    @extend [class^="icon-"];
}
Run Code Online (Sandbox Code Playgroud)

产生:

[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"; }
Run Code Online (Sandbox Code Playgroud)

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


One*_*ude 15

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

jQuery的:

$(document).ready(function() {
  $('.globe').addClass('icon-globe');
});
Run Code Online (Sandbox Code Playgroud)

  • 像OneChillDude这样的人的答案证明了能够识别问题的根本问题并且帮助解决问题(而不是"你不能完全按照你的要求做什么")正是我们来到SO的原因. (5认同)
  • 旧问题......但很明显,来电者并没有问这个问题.他们想知道的是他们如何开始使用.globe,而不是使用.icon-globe. (3认同)
  • 如果您认为代码不合适,或者编辑我的答案,我会很乐意审核您的请求:)对于那些对我的答案进行评价的人,请发表评论. (2认同)
  • 这是一个关于SASS的问题,你建议使用JavaScript/jQuery答案...... (2认同)
  • 您要求对下降投票发表评论,所以我留下了。无需防御。 (2认同)

asp*_*asp 11

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

您可以SASS通过扩展icon-globe课程轻松完成此操作

.globe{
    @extend .icon-globe !optional;
}
Run Code Online (Sandbox Code Playgroud)

输出CSS将为,

.globe,.icon-globe{
   /* CSS Properties */
}
Run Code Online (Sandbox Code Playgroud)

考虑到Font-Awesome的新类名,您将需要使用.fa-globewith multiple class extends

.globe{
    @extend .fa, .fa-globe !optional;
}
Run Code Online (Sandbox Code Playgroud)

输出CSS将为,

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

.globe,.fa-globe{
   /* CSS Properties */
}
Run Code Online (Sandbox Code Playgroud)


Mad*_*adi 5

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

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

@include icon {
   font-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)

SASS 将为您生成:

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

@include icon {
   font-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)

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


boo*_*sey 4

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

.icon-globe, .globe {
  //styles
}
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢。仅当我在此块中定义样式时才有效吗?问题是,不想修改很棒的字体文件。 (2认同)