При указании значения 0 в CSS я должен явно пометить единицы измерения или пропустить? - PullRequest
38 голосов
/ 28 октября 2011

Это скорее аргумент «философии», но я хотел бы знать, что здесь рекомендуется.Я пока не настраиваю его как вики, если есть «официальный» ответ.

Очевидно, что нет разницы между 0px и 0em или чем-то еще, поэтому можно просто указать 0, а единицы измерения:избыточный (см. разница CSS между 0 и 0em ).Некоторые из тех, кто ответил на этот вопрос, утверждали, что следует всегда опускать единицы измерения.

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

Ответы [ 7 ]

60 голосов
/ 28 октября 2011

Я утверждаю, что вы также должны опустить единицы.

С точки зрения программиста, 0 == null == none == false, где только 0px == 0px.

Это означает, что если вы укажете ширину границы 0, то границы не будет, но если вы укажете границу 0px, будет создана граница 0 пикселей (такова идея этого реальность 0px дает точно такой же результат, как 0).

Дополнительные баллы

  • без единиц измерения 0 облегчает чтение, так как его легко отличить от обычных значений единиц.
  • Имеет смысл удалить юниты, поскольку они не имеют смысла находиться там (0 может означать размер, цвет и т. Д.).

Вывод : пропустить единицы в 0. Они не нужны и сбивают с толку.

14 голосов
/ 28 октября 2011

Css спецификация говорит, что 0<unit> может быть написано 0.И я много раз читал, что предлагается опустить блок, я не могу вспомнить, где.

Так что опустите их.

См. http://www.w3.org/TR/CSS2/syndata.html#length-units

2 голосов
/ 16 апреля 2015

Мне также нравится ставить единицы по моим нулям, потому что ...

  1. В IDE нравятся значения, чтобы они могли их правильно увеличивать, как упоминал Иштван.
  2. Мне не нужно вводить единицу позже, если я введу другое значение. И мне не нужно пытаться не забыть удалить единицу, если она равна нулю, или вернуть ее, если это не так.
  3. Один из авторов сказал, что обнаженный ноль был более читабельным . Я считаю, что это не . Когда есть блок, у вас есть контекст, и это делает его более читабельным. Например, если я сталкиваюсь со знаком процента, я знаю, что использую его не так, как «px», поэтому сразу узнаю, что это может быть.
  4. Другой парень, "красный", сказал это , что выглядит как хорошая информация. Вот фрагмент ...

    Однако вы заметите это, если намереваетесь изменить предыдущее значение в каскаде. «0em» говорит: «измените предыдущее значение на« 0em », но ноль может просто сказать« игнорировать это правило »и оставить прежнее правило в силе. Это может быть совсем не то, что вы намеревались использовать со своим голым «0». ссылка на оригинальную статью

2 голосов
/ 13 апреля 2015

В текущих инструментах разработчика браузеров вы можете легко изменять значения в реальном времени с помощью клавиш курсора вверх / вниз, но если вы укажете 0 без единицы, то она не будет работать, так как браузер не будет знать, какую единицу измерения вы используете.предпочтение, и установка 1, 2 ... без единицы измерения не имеет смысла.

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

2 голосов
/ 28 октября 2011

Я говорю, опустите модуль, это поможет, когда вы сжимаете CSS и повышаете производительность. Это не так много, но каждый немного помогает.

1 голос
/ 28 марта 2019

Как примечание к этому вопросу: 0 без единицы, поскольку длина не будет работать в calc(), вместо этого нужно написать 0px.

Спецификация :

Примечание: потому чтоs всегда интерпретируются как s или s, «без единиц измерения 0» s не поддерживаются в математических функциях.То есть ширина: calc (0 + 5px);недопустим, потому что он пытается добавить к , хотя оба width: 0;и ширина: 5 пикселей;действительны.

.a, .b { border: 10px solid; height: 30px; }
.a { width: calc(200px + 0px); border-color: #f00; }
.b { width: calc(200px + 0); border-color: #330; }
<div class="a"></div>
<div class="b"></div>

И все было бы более глючно, если пропущенный модуль 0 берется из некоторой переменной css.

1 голос
/ 28 октября 2011

Я всегда опускаю, так как кажется, что его легче читать, ноль выскакивает и его легко отличить от значений в единицах вокруг него.

...