2012-11-11 86 views
26

我可以为css类创建别名吗?如何在css或sass中别名类名

我正在使用这种字体真棒,我试图为某些图标类创建一个别名。那么.icon-globe也会叫.globe。

我该如何完成这样的事情?

+4

请记住,接受正确的答案! – OneChillDude

回答

3

您可以将相同的样式,以使用纯CSS逗号分隔的选择几类:

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

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

+1

谢谢。只有在我定义这个块中的样式时才会起作用?事情是,不想修改font-awesome文件。 – bymannan

+0

是的,在某些情况下,我可能没有“进入”课堂,或者不想投入精力来找到它的定义。 – Scalable

13

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

的jQuery:

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

对于那些低估了我的答案的人,如果您觉得代码不足,请留下评论或编辑我的答案,我会很乐意审查您的请求:) – OneChillDude

+3

老问题......但是很明显来电者没有问这个问题。他们想知道的是他们如何开始使用.globe,而不是使用.icon-globe。 – Scalable

+2

这是一个关于SASS的问题,你建议一个JavaScript/jQuery答案... –

17

有混叠没有这样的事情。 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

嘿,太棒了。 – markus

7

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

您可以通过扩展icon-globe

.globe{ 
    @extend .icon-globe !optional; 
} 

输出CSS将与SASS很容易地做到这一点,

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

考虑的新的类名字体,真棒,你将需要使用.fa-globe与多个类别延伸

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

输出CSS会作为,

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

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