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

Согласно этой странице , свойство CSS межбуквенное расстояние имеет значение по умолчанию normal .

Примечательно, не по умолчаниюзначения добавляются к значению по умолчанию:

Наиболее важный момент, который следует учитывать при использовании межбуквенного интервала, заключается в том, что указанное значение не меняет значение по умолчанию, оно добавляется к интервалу по умолчанию, применяемому браузером (на основе метрики шрифта).межбуквенный интервал также поддерживает отрицательные значения, которые будут уменьшать вид текста, а не ослаблять его.

Согласно этому определению 0 должно быть эквивалентно значению по умолчанию: нормальный , поскольку 0 + X = X.

1) Допустимо ли использование 0 в качестве замены значения по умолчанию normal ?(Это для реализации слайдера.)

2) Почему 0 не является значением по умолчанию?Зачем вводить другое значение (например, normal )?

Этот тест на CodePen также предлагает значение 0 , действительно, эквивалентнозначение по умолчанию нормальное .

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

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Нет, оба не точно эквивалентны.Если вы отметите текущую спецификацию

normal

Интервал является нормальным интервалом для текущего шрифта. Это значение позволяет агенту пользователя изменять расстояние между символами для выравнивания текста .

Тогда

<length>

Это значение указывает межсимвольный пробел в дополнение к стандартному пробелу между символами.Значения могут быть отрицательными, но могут быть определенные для реализации ограничения. Пользовательские агенты не могут дополнительно увеличивать или уменьшать межсимвольное пространство для выравнивания текста.

В большинстве случаев они будут отображаться так же, как вы можете прочитать, пользовательский агент не обрабатывает оба одинаково.


Определение в Черновик следующего уровня , кажется, немного изменилось, и оба теперь одинаковы.

По устаревшим причинам вычисленный межбуквенный интервал дает нулевое разрешенное значение (возвращаемое значение getComputedStyle ()) с нормальным значением.

Вы также можете прочитать здесь: https://github.com/w3c/csswg-drafts/issues/1484

CSS2 использовался для обработки нормалей, отличных от 0, поэтому вычисления по-другому были требованием.Теперь, когда спецификация обрабатывает их одинаково ...


Я не знаю, все ли браузеры уже реализуют этот уровень, но вы, скорее всего, можете считать их одинаковыми

0 голосов
/ 04 марта 2019

Согласно документам Mozzila: https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing#Values

Обычный межбуквенный интервал для текущего шрифта.В отличие от значения 0, это ключевое слово позволяет пользовательскому агенту изменять пробел между символами для выравнивания текста.

Похоже, 0 более сложно установить по умолчанию,Нормальный может быть изменен пользовательским агентом.

...