Используйте FontAwesome или Glyphicons с css: before
есть ли способ встроить HTML в css content:
элемент при использовании :before
псевдо-элемент?
Я хочу использовать шрифт Awesome( или Glyphicon) в таком случае:
h1:before {
content: "X";
padding-right: 10px;
padding-left: 10px;
color: @orangeLight;
}
здесь X
что-то вроде <i class="icon-cut"></i>
.
Я могу, конечно, сделать это вручную в HTML, но я действительно хочу использовать :before
в этом случае.
точно так же, есть ли способ использовать <i>
как список пули? Это работает, но не ведет себя правильно многострочные элементы пули:
<ul class="icons">
<li><i class="icon-ok"></i> Lists</li>
<li><i class="icon-ok"></i> Buttons</li>
<li><i class="icon-ok"></i> Button groups</li>
<li><i class="icon-ok"></i> Navigation</li>
<li><i class="icon-ok"></i> Prepended form inputs</li>
</ul>
7 ответов:
то, что вы описываете, на самом деле то, что уже делает FontAwesome. Они применяют семейство шрифтов FontAwesome к
::before
псевдо элемент любого элемента, который имеет класс, который начинается с " icon -".[class^="icon-"]:before, [class*=" icon-"]:before { font-family: FontAwesome; font-weight: normal; font-style: normal; display: inline-block; text-decoration: inherit; }
тогда они используют псевдо элемент
::before
, чтобы поместить значок в элементе с классом. Я просто пошел в http://fortawesome.github.com/Font-Awesome/ и проверил код, чтобы найти это:.icon-cut:before { content: "\f0c4"; }
так что если вы хотите добавить значок снова, вы можете использовать
::after
элемент для достижения этой цели. Или для вашей второй части вашего вопроса, Вы могли бы использовать::after
псевдо элемент, чтобы вставить символ маркера, чтобы выглядеть как элемент списка. Затем используйте абсолютное позиционирование, чтобы поместить его влево или что-то подобное.i:after{ content: '22';}
@keithwyland ответ отличный. Вот SCSS mixin:
@mixin font-awesome($content){ font-family: FontAwesome; font-weight: normal; font-style: normal; display: inline-block; text-decoration: inherit; content: $content; }
использование:
@include font-awesome("\f054");
в случае элементов списка есть немного CSS вы можете использовать для достижения желаемого эффекта.
ul.icons li { position: relative; padding-left: -20px; // for example } ul.icons li i { position: absolute; left: 0; }
Я проверил это в Safari на OS X.
Это самый простой способ сделать то, что вы пытаетесь сделать:
<style> ul { list-style-type: none; } </style> <ul class="icons"> <li><i class="fa fa-bomb"></i> Lists</li> <li><i class="fa fa-bomb"></i> Buttons</li> <li><i class="fa fa-bomb"></i> Button groups</li> <li><i class="fa fa-bomb"></i> Navigation</li> <li><i class="fa fa-bomb"></i> Prepended form inputs</li> </ul>
этого подхода следует избегать. Значение по умолчанию для
vertical-align
иbaseline
. Изменение семейства шрифтов только псевдо-элемента приведет к появлению элементов с разными шрифтами. Разные шрифты могут иметь разные метрики шрифтов и разные базовые линии. Чтобы выровнять различные базовые линии, общая высота элемента должна была бы увеличиться. посмотреть этот эффект в действии.это всегда лучше иметь один элемент на значок шрифта.
Re: использование значка в
:before
– последние шрифты удивительные сборки включают в себя.fa-icon()
mixin для SASS и меньше. Это будет автоматически включать в себяfont-family
а также некоторые настройки рендеринга (например-webkit-font-smoothing
). Таким образом вы можете сделать, например:// Add "?" icon to header. h1:before { .fa-icon(); content: "\f059"; }
<ul class="icons-ul"> <li><i class="icon-play-sign"></i> <a>option</a></li> <li><i class="icon-play-sign"></i> <a>option</a></li> <li><i class="icon-play-sign"></i> <a>option</a></li> <li><i class="icon-play-sign"></i> <a>option</a></li> <li><i class="icon-play-sign"></i> <a>option</a></li> </ul>
все значки Font awesome поставляются по умолчанию с Bootstrap.