CSS разница между 0 и 0em - PullRequest
17 голосов
/ 01 июня 2009

Есть ли разница между

margin: 0;

и

margin: 0em;

Я ничего не заметил, но мой учитель постоянно говорит мне, что это не то же самое.

Ответы [ 13 ]

37 голосов
/ 01 июня 2009

Нет разницы, когда значение равно 0. Если бы это были 1 и 1em, да, разница есть, но 0 равно 0, независимо от единицы измерения.

14 голосов
/ 01 июня 2009

Файл больше с 0em.


Чтобы доказать своему профессору, что нет разницы, нужно установить что-то на 0, а что-то еще на 0em и проверить DOM с помощью Firebug или аналогичного инструмента. Если я правильно помню, вы увидите, что оба теперь равны 0. Таким образом, единственная разница в источнике. (Но с тех пор, как я проверил, прошло некоторое время. Я мог подумать о том, чтобы получить и установить стили из jQuery. Поэтому проверьте это, прежде чем поверить мне на слово.)

8 голосов
/ 01 июня 2009

Это все равно, что сказать, что 0 бананов - это не то же самое, что 0 яблок. В некотором смысле, он прав, но ноль - это ноль, так что в любом случае вы будете голодны!

6 голосов
/ 22 августа 2013

Спецификация CSS3 гласит:

для нулевой длины идентификатор единицы является необязательным

Таким образом, несмотря на то, что рекомендации Googles, WordPress, Microsoft WebMatrix и, возможно, многие другие говорят, что вы должны опускать модуль при использовании нуля, это на самом деле разрешено. Так что это личное предпочтение или что-то, что можно вставить в ваши собственные правила кодирования.

5 голосов
/ 01 июня 2009

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

На конкретном примере очевидно, что они равны.

3 голосов
/ 07 сентября 2009

Конечно, есть разница между «0» с или без связанной единицы измерения (em, px и т. Д.).

Хотя CSS в большинстве случаев интерпретирует '0' без размера единицы как нулевую единицу по умолчанию для этого атрибута, это не всегда так (например, font-size), и некоторые валидаторы будут возражать против свойств, которые требовать размеры единиц в своей спецификации, когда они сталкиваются с параметром без этой единицы.

Разница в том, что «0» без обозначения единицы измерения может интерпретироваться как ошибка выражения в свойствах, где требуется размер единицы. Вы можете не заметить разницу, поскольку выражение будет просто рассматриваться как «неправильный синтаксис», и интерпретатор пропустит его; как это обычно происходит с любым плохим синтаксисом в CSS. Таким образом, если вы указали «0» в качестве размера единицы, а значение по умолчанию - «0em» или «0%» и т. Д., То для этого атрибута результат останется «0». Однако вы заметите это, если намереваетесь изменить предыдущее значение в каскаде. «0em» говорит: «измените предыдущее значение на« 0em », но ноль может просто сказать« игнорировать это правило »и оставить прежнее правило в силе. Это может быть совсем не то, что вы намеревались использовать со своим голым '0'.

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

Таким образом, помимо сообщения тому, кто читает ваш код, что вы определенно хотели иметь элемент размером 0, и какой тип блока подходит, это может фактически повлиять на результат. Лучше всегда использовать обозначение единицы измерения с вашими нулями. Если вы действительно суетливы (как я) или разрабатываете системы и код vls (как у меня), вы также можете поставить начальный ноль (0.xx ...) в любые значения меньше 0. Это разрешит позже Читатели должны знать, что ваша фракция была преднамеренной, а не просто опечаткой.

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

3 голосов
/ 02 июня 2009

Ваш учитель, похоже, идиот.

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

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

3 голосов
/ 01 июня 2009

Ноль ноль ноль. Независимо от того, разные ли единицы. Полученное значение в пикселях всегда одинаково: ноль.

1 голос
/ 29 марта 2013

Это было избито до смерти, но здесь идет ... посмотрим, что на это скажут "большие собаки".

Google CSS Guidelines ...

Не использовать единицы после 0 значений, если они не требуются

WordPress CSS Руководство по стилю говорит аналогично ...

0 значения не должны иметь единицы без необходимости, например, с переходная продолжительность.

1 голос
/ 23 июня 2009

ваш учитель упрям ​​в том, что он или она не желает признать свою неправоту. 'what: 0' устанавливает все возможные единицы, унаследованные или нет, в ноль. 0, безусловно, ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...