Понимание CSS межбуквенный интервал: допустимо ли заменить стандартное значение по умолчанию на 0? - программирование
Подтвердить что ты не робот

Понимание 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>
4b9b3361

Ответ 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 - более сложное значение, чтобы установить его по умолчанию. Нормальный может быть изменен пользовательским агентом.