#html #css #letter-spacing
#HTML #css #интервал между буквами
Вопрос:
Согласно этой странице, свойство CSS letter-spacing имеет значение по умолчанию normal.
Примечательно, что к значению по умолчанию добавляются значения, отличные от значений по умолчанию:
Наиболее важный момент, на который следует обратить внимание при использовании интервала между буквами, заключается в том, что указанное значение не изменяет значение по умолчанию, оно добавляется к интервалу по умолчанию, применяемому браузером (на основе показателей шрифта). Межбуквенный интервал также поддерживает отрицательные значения, которые улучшат внешний вид текста, а не ослабят его.
Согласно этому определению, 0 должно быть эквивалентно значению по умолчанию для normal, поскольку 0 X = X.
1) Допустимо ли использовать 0 в качестве замены значения по умолчанию для normal? (Это для реализации слайдера.)
2) Почему значение по умолчанию не является 0? Зачем вводить другое значение (т.Е. normal)?
Этот тест в CodePen также предполагает, что значение 0 действительно эквивалентно значению по умолчанию normal.
.loose {
letter-spacing: 2px;
}
.tight {
letter-spacing: -1px;
}
.zero {
letter-spacing: 0;
}
.normal {
letter-spacing: normal;
}
<p>This type has no additional letter-spacing applied.</p>
<p class="loose">This type is letter-spaced loosely at <code>2px</code>.</p>
<p class="tight">This type is letter-spaced tightly at <code>-1px</code></p>
<p class="zero">This type is letter-spaced at <code>0</code></p>
<p class="normal">This type is letter-spaced at <code>normal</code></p>
Комментарии:
1. Почему голоса за закрытие?
2. w3.org/TR/css-text-3/#letter-spacing-property : normal Дополнительный интервал не применяется. Вычисляется до нуля. — Это просто значение ключевого слова
3. @Pete итак, вы говорите, что normal и 0 эквивалентны, верно?
4. Я предполагаю, что это так, поскольку это последняя опубликованная версия css text module 3 и в ней не упоминается пользовательский агент — drafts.csswg.org/css-values/#keywords
Ответ №1:
Нет, оба они не точно эквивалентны. Если вы проверите текущую спецификацию
Нормальный
Интервал — это обычный интервал для текущего шрифта. Это значение позволяет агенту пользователя изменять интервал между символами для выравнивания текста.
Затем
<length>
Это значение указывает на межсимвольный пробел в дополнение к пробелу по умолчанию между символами. Значения могут быть отрицательными, но могут существовать ограничения, зависящие от конкретной реализации. Пользовательские агенты не могут дополнительно увеличивать или уменьшать межсимвольный интервал для выравнивания текста.
В большинстве случаев они будут отображаться одинаково, но, как вы можете прочитать, пользовательский агент не обрабатывает оба одинаково.
Определение в проекте следующего уровня, похоже, немного изменилось, и оба теперь одинаковы.
По устаревшим причинам вычисленный интервал между буквами, равный нулю, дает разрешенное значение (возвращаемое значение getComputedStyle()) normal ..
Вы также можете прочитать здесь: https://github.com/w3c/csswg-drafts/issues/1484
CSS2 раньше обрабатывал normal иначе, чем 0, поэтому требовались другие вычисления. Теперь, когда спецификация обрабатывает их одинаково…
Я не знаю, все ли браузеры уже реализуют этот уровень, но вы, скорее всего, можете считать их одинаковыми
Комментарии:
1. итак, в CSS2 оно отличается только для
text-align: justify
2. @gsnedders да, это может отличаться от justify (необязательно). К сожалению, я не могу это доказать, я пытаюсь найти, могу ли я получить рабочий пример, чтобы показать это различие.
Ответ №2:
Согласно документам Mozzila: https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing#Values
Обычный интервал между буквами для текущего шрифта. В отличие от значения 0, это ключевое слово позволяет агенту пользователя изменять интервал между символами для выравнивания текста.
Похоже, что 0
установить его по умолчанию более сложно. Значение Normal может быть изменено агентом пользователя.