Подтвердить что ты не робот

Разница CSS между 0 и 0em

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

margin: 0;

и

margin: 0em;

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

4b9b3361

Ответ 1

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

Ответ 2

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


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

Ответ 3

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

Ответ 4

спецификация CSS3 говорит следующее:

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Ваш учитель, оказывается, идиот.

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

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

Ответ 8

Конечно, существует разница между "0" с или без связанного блока калибровки (em, px и т.д.).

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

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

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

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

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

Ответ 9

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

Ответ 10

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

Правила Google CSS...

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

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

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

Ответ 11

0 и 0em одинаковы, но любое значение, отличное от 0 для x и xem, не совпадает.

Ответ 12

Google собственный браузер Chrome в стиле "Вычисленный" включает в себя единицы с нулевыми значениями, которые соответствуют моим личным предпочтениям, чтобы просто включить его.

Include Units With Zero Values

Ответ 13

Там разница между 0 и 0em !

Это связано с transition собственности. По крайней мере, в случае line-height, когда значение изменяется с некоторого другого значения на 0 анимация не будет воспроизводиться, но когда она изменится на 0em она будет работать правильно.

Это может быть ошибкой, но я испытал одинаковое поведение как в Firefox, так и в Chromium.

Проверьте это сами: https://codepen.io/anon/pen/GPoopW?editors=1100.