comment alias nom de classe dans css ou sass

puis-je créer un alias pour une classe css?

j'utilise cette police-awesome et j'essaye de créer un nom d'alias pour certaines classes d'icônes. De sorte que .icône de globe-également appelé .Globe.

Comment puis-je accomplir une telle chose?

31
demandé sur bymannan 2012-11-12 01:18:02

6 réponses

Il n'y a pas une telle chose comme l'aliasing. Sass a le @extend directive, mais la solution n'est pas tout à fait évidente jusqu'à ce que vous examiniez la source.

Source: 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"; }

Même si vous avez fait .globe étendre .icon-globe, vous allez manquer la plupart de ce qui fait les styles FontAwesome à cause de la façon dont ils ont construit le sélecteur. Vous devez étendre l'autre sélecteur comme suit: bien.

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

Produit:

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

notez que le icon- le préfixe était délibéré. Vous obtenez des fichiers CSS plus petits de cette façon, plutôt que d'attacher tous ces styles à toutes les ~200 classes qui viennent avec FontAwesome. Vous le faire, mais je ne pense pas que le résultat est très bon.

21
répondu cimmanon 2012-11-11 22:13:44

la façon la plus simple que je puisse imaginer est d'utiliser javascript/jquery.

jQuery:

$(document).ready(function() {
  $('.globe').addClass('icon-globe');
});
16
répondu OneChillDude 2012-11-11 21:25:51

je sais que c'est une question plus ancienne, mais je réponds parce que le fil semble incomplet...

vous pouvez facilement faire cela avec SASS en prolongeant le icon-globe classe

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

La sortie de CSS,

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

compte tenu de la nouvelle classe des noms de font-Awesome, vous aurez besoin de l'aide de l' .fa-globe avec classes multiples s'étendant

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

La sortie de CSS,

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

.globe,.fa-globe{
   /* CSS Properties */
}
8
répondu asp 2017-05-24 05:57:43

vous pouvez appliquer les mêmes styles à plusieurs classes en utilisant des sélecteurs séparés par une virgule:

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

appliquera les mêmes styles <i class="icon-globe"> et <i class="globe">.

3
répondu bookcasey 2012-11-11 21:21:40

Vous pouvez être intéressé par CSS Crush qui vous permet de créer des alias http://the-echoplex.net/csscrush/#core--selector-aliases

Utilisation

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

:globe {
  color: red;
}

Sorties

.icon-globe, .globe {
  color: red;
}
3
répondu Mindthetic 2014-11-04 14:00:15

ni L'un ni l'autre SASS ni CSS3/4 supportez les alias. Vous devez utiliser exactement le nom de la classe si vous souhaitez utiliser police génial.

-1
répondu Zeta 2012-11-11 21:21:14