2012-11-11 15 views
26

Czy mogę utworzyć alias do klasy css?jak alias nazwa klasy w css lub sass

Używam tej font-awesome i próbuję utworzyć alias dla niektórych klas ikon. Tak więc, theicon-globus będzie również nazywał się .globe.

Jak mogę to zrobić?

+4

Pamiętaj, aby przyjąć właściwą odpowiedź! – OneChillDude

Odpowiedz

3

Można stosować te same style do kilku klas, stosując zwykły css selektorów oddzielonych przecinkami:

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

stosuje te same style do <i class="icon-globe"> i <i class="globe">.

+1

Dzięki. Czy zadziała tylko wtedy, gdy zdefiniuję style w tym bloku? Chodzi o to, że nie chcesz modyfikować świetnego pliku fontów. – bymannan

+0

Tak, w niektórych przypadkach mogę nie mieć "dostępu" do klasy, jak lub może nie chcieć zainwestować energii, aby ustalić, gdzie jest ona zdefiniowana. – Scalable

13

Najprostszym sposobem, jaki mogę wymyślić jest użycie javascript/jquery.

jQuery:

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

Do osoby, która obniżyła moją odpowiedź, zostaw komentarz, jeśli uważasz, że kod jest niewystarczający lub edytuj moją odpowiedź, a ja z przyjemnością sprawdzę Twoją prośbę :) – OneChillDude

+3

Stare pytanie ... chociaż, ale jest jasne że dzwoniący nie pyta o to. To, co chcą wiedzieć, to jak mogą zacząć używać .globe, zamiast używać .icon-globu. – Scalable

+2

To jest pytanie dotyczące SASS i sugerujesz odpowiedź JavaScript/jQuery ... –

17

Nie ma czegoś takiego jak aliasing. Sass ma dyrektywę @extend, ale rozwiązanie nie jest całkowicie oczywiste, dopóki nie spojrzy się na źródło.

Źródło: 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"; } 

Nawet jeśli się .globe przedłużyć .icon-globe, będziesz brakuje na większość tego, co sprawia, że ​​style FontAwesome powodu jak oni zbudowali selektora. Musisz również rozszerzyć drugi selektor.

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

Generuje:

[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"; } 

Zauważ, że przedrostek icon- było celowe. W ten sposób dostajesz mniejsze pliki CSS, zamiast dołączać wszystkie te style do wszystkich ~ 200 klas, które są dostarczane z FontAwesome. You można zrobić, ale nie sądzę, że wynik jest bardzo dobry.

+1

Hej, to genialne. – markus

7

wiem, że to ja s to starsze pytanie, ale odpowiadam na to, ponieważ wątek wygląda na niekompletny ...

można łatwo zrobić z SASS poprzez rozszerzenie klasy icon-globe

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

Sygnał wyjściowy CSS będzie tak,

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

Biorąc pod uwagę nowe nazwy klasy Font-Awesome, ci będzie konieczne użycie narzędzia .fa-globe z wieloma klasami rozszerzającymi:

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

CSS wyjście będzie jak

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

.globe,.fa-globe{ 
    /* CSS Properties */ 
} 
Powiązane problemy