Могу ли я создать псевдоним для класса CSS?
Я использую этот font-awesome и пытаюсь создать псевдоним для некоторых классов значков. Так что .icon-globe
также будет называться .globe
.
Как я могу сделать такую вещь?
Могу ли я создать псевдоним для класса CSS?
Я использую этот font-awesome и пытаюсь создать псевдоним для некоторых классов значков. Так что .icon-globe
также будет называться .globe
.
Как я могу сделать такую вещь?
Там нет такой вещи, как псевдонимы. У 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 меньшего размера, вместо того чтобы прикреплять все эти стили ко всем ~ 200 классам, которые поставляются с FontAwesome. Вы можете сделать это, но я не думаю, что результат очень хороший.
Самый простой способ, который я могу придумать, - использовать javascript/jquery.
JQuery
$(document).ready(function() {
$('.globe').addClass('icon-globe');
});
Я знаю, что это старый вопрос, но я отвечаю на это, потому что поток выглядит неполным...
Вы можете легко сделать это с помощью 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 */
}
Вы можете применить одни и те же стили к нескольким классам с помощью простых селекторов css, разделенных запятой:
.icon-globe, .globe {
//styles
}
Применит те же стили к <i class="icon-globe">
и <i class="globe">
.
Вам может быть интересно CSS Crush, который позволяет создавать псевдонимы http://the-echoplex.net/csscrush/#core--selector-aliases
Использование
@selector globe :any( .icon-globe, .globe );
:globe {
color: red;
}
Результаты
.icon-globe, .globe {
color: red;
}
Ни SASS, ни CSS3/4 поддерживать псевдонимы. Вам нужно будет использовать точное имя класса, если вы хотите использовать font awesome.
Вы можете использовать SASS mixin @content
для создания псевдонима для селектора или их комбинации следующим образом:
@mixin icon {
.icon-globe,
.globe {
@content;
}
}
@include icon {
font-size: 16px;
}
SASS сгенерирует это для вас:
.icon-globe,
.globe {
font-size: 16px;
}
Подробнее о блоке контента SASS mixin;