Понимание CSS межбуквенный интервал: допустимо ли заменить стандартное значение по умолчанию на 0?
Согласно этой странице, свойство CSS для разметки букв по умолчанию имеет значение normal.
Примечательно, что значения по умолчанию добавляются к значению по умолчанию:
Наиболее важный момент, который следует отметить при использовании межбуквенного интервала, заключается в том, что указанное значение не меняет значение по умолчанию, оно добавляется к интервалу по умолчанию, применяемому браузером (на основе метрик шрифта). межбуквенный интервал также поддерживает отрицательные значения, которые будут усиливать внешний вид текста, а не ослаблять его.
Согласно этому определению, 0 должно быть эквивалентно значению по умолчанию для normal, поскольку 0 + X = X.
1) Справедливо ли использовать 0 в качестве замены для значения по умолчанию нормально? (Это для реализации слайдера.)
2) Почему 0 не является значением по умолчанию? Зачем вводить другое значение (т.е. нормальное)?
Этот тест на 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
Нет, оба не совсем эквивалентны. Если вы проверите текущую спецификацию
нормальный
Интервал является нормальным интервалом для текущего шрифта. Это значение позволяет агенту пользователя изменять расстояние между символами для выравнивания текста.
затем
<length>
Это значение указывает межсимвольный пробел в дополнение к стандартному пробелу между символами. Значения могут быть отрицательными, но могут быть определенные для реализации ограничения. Пользовательские агенты не могут дополнительно увеличивать или уменьшать межсимвольное пространство для выравнивания текста.
В большинстве случаев они будут отображаться одинаково, но, как вы можете прочитать, пользовательский агент не обрабатывает оба одинаково.
Определение в черновике следующего уровня, похоже, немного изменилось, и оба теперь одинаковы.
По унаследованным причинам вычисленный межбуквенный интервал дает разрешенное значение (возвращаемое значение getComputedStyle()) нормального значения.
Вы также можете прочитать здесь: https://github.com/w3c/csswg-drafts/issues/1484
CSS2 раньше относился к обычному, отличному от 0, поэтому вычисление по-другому было требованием. Теперь, когда спецификация относится к ним одинаково...
Я не знаю, все ли браузеры уже реализуют этот уровень, но вы, скорее всего, можете считать их одинаковыми
Ответ 2
Согласно документам Mozzila: https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing#Values
Обычный межбуквенный интервал для текущего шрифта. В отличие от значения 0, это ключевое слово позволяет агенту пользователя изменять расстояние между символами для выравнивания текста.
Похоже, 0
- более сложное значение, чтобы установить его по умолчанию. Нормальный может быть изменен пользовательским агентом.