Добавление HTML-объектов с использованием CSS-контента
как вы используете CSS content
свойство для добавления HTML-объектов?
использовать что-то вроде этого просто выводит
на экран вместо неразрывного пространства:
.breadcrumbs a:before {
content: ' ';
}
9 ответов
вы должны использовать экранированный unicode:
Как
.breadcrumbs a:before {
content: '00a0';
}
дополнительная информация о:http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/
CSS не является HTML.
это называется ссылка в HTML; эквивалентно десятичной числовой символьной ссылке  
. 160-это десятичное код на NO-BREAK SPACE
персонаж Unicode (или UCS-2 см. спецификация HTML 4.01). Шестнадцатеричное представление этого кода является U+00A0 (160 = 10 × 161 + 0 × 160). Вы найдете это в Unicode Графики - > Код и База Данных Символов.
в CSS вам нужно использовать escape-последовательность Unicode для таких символов, которая основана на шестнадцатеричном значении кодовой точки символа. Поэтому вам нужно написать
.breadcrumbs a:before {
content: '\a0';
}
это работает до тех пор, пока последовательность идет в строковое значение. Если символы следуют, есть два способа избежать неправильного толкования:
a) (упомянутый другими) используйте ровно шесть шестнадцатеричные цифры для escape-последовательности:
.breadcrumbs a:before {
content: '00a0foo';
}
b) добавить один пробел (e. г., пробел) символ после escape-последовательности:
.breadcrumbs a:before {
content: '\a0 foo';
}
(поскольку f
является шестнадцатеричной цифрой,\a0f
в противном случае имею в виду GURMUKHI LETTER EE
здесь, или ਏ если у вас есть подходящий шрифт.)
разделяющий пробел будет проигнорирован, и это будет отображаться foo
, где отображаемое пространство здесь будет NO-BREAK SPACE
символ.
бело-пространстве подойти ('\a0 foo'
) имеет следующие преимущества перед шестизначным подходом ('00a0foo'
):
- это легче типа, потому что начальные нули не нужны, а цифры считать не нужно;
- это легче читать, потому что между escape-последовательностью и следующим текстом есть пробел, и цифры не нужно считать;
- это требует меньше места, потому что ведущие нули не обязательно;
- это вверх-совместимый, потому что поддержка юникода кодовых точек за пределами U+10FFFF в будущем потребует изменения спецификации CSS.
таким образом, чтобы отобразить пробел после экранированного символа, используйте два пробелы в таблице стилей –
.breadcrumbs a:before {
content: '\a0 foo';
}
- или сделайте это явным:
.breadcrumbs a:before {
content: '\a0 foo';
}
посмотреть в CSS 2.1, раздел "4.1.3 символы и регистр" для подробности.
обновление: PointedEars упоминает, что правильный стенд для
во всех ситуациях css будет'\a0 '
подразумевается, что пространство является Терминатором шестнадцатеричной строки и поглощается экранированной последовательностью. Далее он указал на это авторитетное описание что звучит как хорошее решение проблемы я описал и закрепилась ниже.
что вам нужно сделать, это использовать экранированный unicode. Несмотря на то, что вам сказали a0
не является идеальным дублером для
в CSS; поэтому попробуйте:
content:'>\a0 '; /* or */
content:'>00a0'; /* because you'll find: */
content:'No\a0 Break'; /* and */
content:'No00a0Break'; /* becomes No Break as opposed to below */
используя 00a0
as
.
Если вы попытаетесь, как предлагают Матье и Милликен:
content:'Noa0Break' /* becomes No਋reak */
он принимает B в шестнадцатеричные экранированные символы. То же самое происходит с 0-9a-fA-F.
в CSS вам нужно использовать escape-последовательность Unicode вместо HTML-объектов. Это основано на шестнадцатеричном значении символа.
я обнаружил, что самый простой способ преобразовать символ в его шестнадцатеричный эквивалент, например, от ▾ (▾
) к BE
использовать калькулятор Microsoft=)
да. Включите режим программистов, включите десятичную систему, введите 9662
, затем переключитесь на hex, и вы получите 25BE
. Затем просто добавьте обратную косую черту \
к начало.
используйте шестнадцатеричный код для неразрывного пространства. Что-то вроде этого:--2-->
.breadcrumbs a:before {
content: '>a0';
}
есть способ вставить nbsp
- откройте CharMap и скопируйте 160 символов. Однако в этом случае я, вероятно, поместил бы его с помощью прокладки, например:
.breadcrumbs a:before { content: '>'; padding-right: .5em; }
возможно, вам придется установить хлебные крошки display:inline-block
или что-то, хотя.
Например :
http://character-code.com/arrows-html-codes.php
пример: Если вы хотите выбрать своего персонажа, я выбрал "↬" "↬ " (мы используем HEX значение)
.breadcrumbs a:before {
content: '21ac';
}
результат : ↬
вот и все :)
Я знаю, что это довольно старый пост, но если интервал-это все ваше после, почему бы просто не:
.breadcrumbs a::before {
content: '>';
margin-left: 8px;
margin-right: 8px;
}
я использовал этот метод раньше. Он отлично подходит для других линий с ">" сбоку в моем тестировании.
вот два способа:
-
в HTML:
<div class="ics">⛱</div>
в результате
-
В Css:
.ics::before {content: "69;"}
HTML-код <div class="ics"></div>
в результате