我可以为css类创建别名吗?
我正在使用这个字体很棒,我正在尝试为某些图标类创建一个别名。因此.icon-globe
也会调用.globe
。
我怎样才能完成这样的事情?
答案 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;