Використовуйте FontAwesome або Glyphicons з css: before


79

Чи є спосіб вбудувати HTML в content:елемент css при використанні:before псевдоелемента?

Я хочу використовувати Font 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>

2
Оскільки :beforeце псевдоелемент, ви не можете мати htmlлише вміст text.
Торстен Вальтер

Привіт тиг, просто перевіряю, чи достатньо моєї відповіді. Сподіваюся, це допомогло. Дякую!
keithwyland

Ви справді повинні прийняти відповідь Віландера. Це повністю робить те, що мені потрібно, і це, здається, теж те, що ви хотіли!
Matthew Schinckel

Відповіді:


157

Те, що ви описуєте, насправді те, що вже робить 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: '\2022';}

19
Тут ви можете знайти всі коди піктограм вмісту "\xxxx";: astronautweb.co/snippet/font-awesome
miro marchi

1
@miromarchi Це приємний список - все в одному місці! Дякую, що поділились! Крім того, якщо ви перейдете на веб-сайт з чудовими шрифтами, на якому знаходяться значки ( fortawesome.github.io/Font-Awesome/icons ), і клацніть на одному з піктограм, сторінка має Unicode вгорі, що відповідає тому самому номеру у властивості вмісту.
keithwyland

Чи можна використовувати значення піктограм Unicode? \ 2022 ---> що це за формат?
ратата

2
@ratata Формат \ 2022, на мою думку, є шістнадцятковим поданням унікоду. Дивіться це питання і відповідь на нього для отримання додаткової інформації: stackoverflow.com/questions/10393462 / ...
keithwyland

якщо ви використовуєте підхід SVG-with-JS : прочитайте мою відповідь про те, як це працює .. або @ fontawesome.com/how-to-use/on-the-web/advanced/…
flowtron

4

Відповідь @keithwyland чудова. Ось комбінація SCSS:

@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");

0

У випадку з вашими елементами списку є трохи CSS, який ви можете використовувати для досягнення бажаного ефекту.

ul.icons li {
  position: relative;
  padding-left: -20px; // for example
}
ul.icons li i {
  position: absolute;
  left: 0;
}

Я перевірив це в Safari на OS X.


0

Цього підходу слід уникати. Значення за замовчуванням для vertical-alignце baseline. Зміна сімейства шрифтів лише псевдоелемента призведе до елементів з різними шрифтами. Різні шрифти можуть мати різну метрику шрифту та різні базові лінії. Для того, щоб різні базові лінії вирівнювались, загальна висота елемента повинна була б збільшитися. Побачте цей ефект у дії .

Завжди краще мати по одному елементу на піктограму шрифту.


0

Загальноприйнятий відповідь (станом на 29 липня 2019 роки) тільки залишається в силі , якщо ви ще не почали використовувати більш свіжий SVG-з-JS підхід FontAwesome. У такому випадку вам потрібно дотримуватися інструкцій, наведених у їхніх псевдоелементах CSS . В основному слід стежити за трьома речами:

  • помістіть атрибут data у тег SCRIPT "data-search-pseudo-elements", завантажуючи fontawesome.min.js
  • зробити так, щоб сам псевдоелемент мав display: none
  • правильна комбінація сімейства шрифтів і ваги шрифту для значка, який вам потрібен: "Шрифт Awesome 5 Free" та 300 (фальшивий / легкий), 400 (дальший / звичайний) або 900 (фас / твердий)

-1

Це найпростіший спосіб зробити те, що ви намагаєтесь зробити:

http://jsfiddle.net/ZEDHT/

<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>

-1

Re: використання піктограми в :before- останні збірки Font Awesome включають .fa-icon()міксин для SASS та LESS. Це автоматично включатиме font-family, а також деякі налаштування візуалізації (наприклад -webkit-font-smoothing). Таким чином, ви можете зробити, наприклад:

// Add "?" icon to header.
h1:before {
    .fa-icon();
    content: "\f059";
}

Лише коротке нагадування про те, що awesome font також надає змінні для використання як вміст, щоб можна було також використовувати: .pseudo-class: before {@include fa-icon (); вміст: $ fa-var-phone-square; }
Jan

-14
<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>

Усі чудові значки шрифтів за замовчуванням поставляються з Bootstrap.


1
відколи? bootstrap поставляється з гліфіконами, а не з фантастичним.
Рафаель Герсковічі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.