«свойство: 0» или «свойство: 0px» в CSS?

Я много раз видел, как эта нотация используется, и мне было интересно, есть ли заметная разница между этими двумя нотациями?

element#id
{
  property: 0;
}

а также

element#id
{
  property: 0px;
}

Я использую property: 0px; все время, так как считаю его более чистым, но я не совсем уверен, что браузер интерпретирует 0px иначе, чем 0.

Кто-нибудь знает, какой из них лучше или правильнее?


person Blender    schedule 30.11.2010    source источник
comment
Хороший вопрос, и до этого вероятного дубликата: stackoverflow.com/q/5359222/292060, но у него лучше ответ со ссылкой на спец.   -  person goodeye    schedule 13.01.2012
comment
Что бы вы ни использовали, следите за тем, чтобы оставаться последовательным на протяжении всего проекта.   -  person PBwebD    schedule 11.08.2016


Ответы (11)


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

CSS2 – из спецификации W3C CSS 2.1 для синтаксиса и основные типы данных:

Формат значения длины (обозначаемый ‹length› в этой спецификации) представляет собой ‹число› (с десятичной точкой или без нее), сразу за которым следует идентификатор единицы измерения (например, px, em и т. д.). После нулевой длины идентификатор единицы не является обязательным.

(выделено мной)

CSS3 – из модуля W3C CSS Values ​​and Units, уровень 3. (в настоящее время находится в кандидатной рекомендации на момент написания этой статьи)

Для нулевых длин идентификатор блока является необязательным (т. е. может быть синтаксически представлен как 0).

person Chris Bier    schedule 10.05.2013
comment
Сомневаюсь, что вы действительно экономите 2 байта при активном сжатии GZIP. Для меня это вопрос того, в чем вы чувствуете себя комфортно. Однако некоторым CSS-линтерам может не понравиться 0px. - person Manuel Arwed Schmidt; 21.03.2015

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

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

person Blender    schedule 23.07.2013
comment
+1 за то, что заметил, что минификаторы знают об этом и что есть функциональность, которую можно получить, включив их. - person Graham P Heath; 06.03.2015
comment
Инструменты разработчика Chrome по умолчанию используют px, если вы нажимаете клавиши со стрелками вверх/вниз на 0 без идентификатора. Кроме того, в инструментах разработчика Chrome, если вы проведете стрелку вниз до 0, она сохранит px. - person PBwebD; 11.08.2016
comment
@ testing123: Я не думаю, что это было в то время, когда я писал этот ответ, но это полезно знать. - person Blender; 12.08.2016
comment
будут ли проблемы со временем выполнения с 0 и 0px, если они используются в нескольких местах приложения? - person Kurkula; 15.02.2020

Они одинаковые. Браузер интерпретирует оба значения как 0, так что используйте то, что более читабельно для вас.

person Sebastian Patane Masuelli    schedule 30.11.2010
comment
Есть ли «правильный» или соответствующий стандартам выбор? Я знаю, что вы не можете написать border: 3 solid, так как единиц нет, но есть ли веб-стандарты на нуле? - person Blender; 30.11.2010
comment
Как я упоминаю в своем ответе, это потому, что все они идентичны: ноль раз все равно ноль, независимо от того, умножаете ли вы на размер пикселя, em, ex или процент. - person AgentConundrum; 30.11.2010
comment
Не уверен, что вы имеете в виду под веб-стандартами, но margin: 10px 0 0 10px работает нормально, как и border: 0, что означает, что вы можете использовать ноль как эквивалент нуля. - person Tom; 30.11.2010
comment
@blender Проверьте мой ответ ниже, чтобы узнать о веб-стандартах со ссылкой на документацию. - person Chris Bier; 22.01.2014
comment
-1 за ответ спорного содержания без каких-либо ссылок, ссылок или обоснования. Пожалуйста, либо подкрепите свое мнение данными, либо четко заявите, что это только ваше мнение, а не фактическая информация. - person ; 27.04.2014

Ноль чего-либо есть ноль. 0px = 0% = 0em = 0pt = 0

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

person Chuck    schedule 30.11.2010
comment
Исключение составляют единицы измерения времени: 0 не является допустимой альтернативой 0s / 0ms. - person Henrik Christensen; 30.05.2017

Насколько я знаю, между ними нет никакой разницы, так как 0px = 0em = 0ex = 0% = 0. Вам, как разработчику, решать, что вам больше нравится (если, конечно, у вас нет корпоративных стандартов кодирования, которым вы должны следовать).

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

person AgentConundrum    schedule 30.11.2010
comment
Если вы отправляете значительный объем данных (например, если вы Google), вам лучше использовать инструменты минимизации, которые сделают это за вас: p - person John Kurlak; 28.09.2012

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

person meder omuraliev    schedule 30.11.2010
comment
На мгновение я собирался проголосовать против вашего поста, потому что думал, что ваше утверждение о том, что 0 пикселей равно 0 дюймам и так далее, было ложным. :) Потому что в уме я думал, как это может быть? это разные единицы. - person Web_Designer; 31.03.2011

Лично я считаю 0 чище, чем 0px. Это два дополнительных символа, которые можно добавить. Зачем добавлять лишние байты, если вам это не нужно. Я слишком часто вижу padding: 0px 0px 0px 0px, который можно легко выразить как padding: 0.

person Amir Raminfar    schedule 30.11.2010

Вы можете использовать любой из них — мой лучший совет — не слишком беспокоиться, но быть последовательным в том или ином случае. Лично я предпочитаю указывать «0px» по следующим причинам:

  • Использование 0px делает вещи более совместимыми со всеми другими размерами 'px', которые вы указали.
  • Это также более подробно и ясно дает понять, что вы устанавливаете нулевую длину, а не флаг «отключить это».
  • Немного проще настроить значение «0px», чтобы сделать его другим значением, если это необходимо.
person Chris Halcrow    schedule 09.05.2016

Как говорят другие, на самом деле не имеет значения, равен ли он 0, хотя я решил добавить измерения ко всем моим значениям, чтобы любой, кто просматривает мои файлы CSS, мог оценить, с какими измерениями они, вероятно, будут иметь дело в другом месте.

person danjah    schedule 30.11.2010

Я знаю, что не должно быть никакой разницы между 0px и 0, но я обнаружил, что иногда она есть.

Я пытался центрировать объект следующим образом:

position: absolute;
left: max(0px, calc((100vw - 400px)/2));
max-width: 400px;   

Это работает, но если вы замените 0px на 0, это не так.

person Davide Zanin    schedule 07.12.2020

zero-units Нулевые значения не нуждаются в единицах измерения. Простой способ сохранить байты в CSS — не включать единицы измерения, когда значение равно 0. Например, 0px и 0 — это одно и то же...

http://csslint.net/index.html

person Chirag Suthar    schedule 17.05.2021