Есть ли разница между
margin: 0;
и
margin: 0em;
Я ничего не заметил, но мой учитель говорит мне, что это не то же самое.
Есть ли разница между
margin: 0;
и
margin: 0em;
Я ничего не заметил, но мой учитель говорит мне, что это не то же самое.
Нет разницы, когда значение равно 0. Если оно равно 1 и 1em, да, есть разница, но 0 равно 0, независимо от единицы.
Файл больше с 0em.
Как доказать вашему профессору, что нет никакой разницы, нужно установить что-то в 0 и что-то еще в 0em и осмотреть DOM с помощью Firebug или аналогичного инструмента. Если я правильно помню, вы увидите, что оба они теперь равны 0. Таким образом, единственное различие в источнике. (Но прошло некоторое время с тех пор, как я проверил. Возможно, я подумал о том, чтобы получить и установить стили из jQuery. Поэтому проверьте это, прежде чем принять слово.)
Мне нравится говорить, что 0 бананов - это не то же самое, что 0 яблок. Таким образом, он правильно, но ноль равен нулю, поэтому в любом случае вы будете голодны!
спецификация CSS3 говорит следующее:
для нулевой длины идентификатор устройства является необязательным
Итак, хотя рекомендации Googles, руководства WordPress, Microsoft WebMatrix и, возможно, многие другие говорят, что вы должны опустить блок при использовании нуля, это фактически разрешено. Таким образом, это личное предпочтение или что-то, чтобы привести свои собственные рекомендации по кодированию.
Интересно, пытается ли учитель подчеркнуть, а не столько, что 0 и 0em - это не одно и то же значение, но, возможно, что блок по умолчанию в CSS не может быть em (я считаю, что спецификация требует, чтобы ненулевые значения прикрепленные, но часто предполагают px).
В конкретном примере очевидно, что они равны.
Ноль равен нулю. Независимо от того, отличаются ли устройства. Полученное значение в пикселях всегда одинаково: ноль.
Ваш учитель, оказывается, идиот.
Но, возможно, внешность обманчива: вы должны спросить своего учителя, что они имели в виду.
Я должен спросить, почему вы не спросили своего учителя, что они имели в виду, когда они впервые сказали это? Нуль равен нулю, независимо от того, какие единицы.
Конечно, существует разница между "0" с или без связанного блока калибровки (em, px и т.д.).
В то время как CSS в большинстве случаев интерпретирует "0" без единицы измерения как нулевой единицы по умолчанию для этого атрибута, это не всегда так (размер шрифта, например), а некоторые валидаторы будут возражать против свойств, которые требуйте размеры единиц в их спецификации, когда они сталкиваются с параметром без включенного устройства.
Разница в том, что "0" , без обозначения единицы, может интерпретироваться как ошибка выражения в свойствах, где требуется размер единицы измерения. Вы можете не заметить разницу, так как выражение просто будет рассматриваться как "плохой синтаксис", и интерпретатор пропустит его; как это обычно бывает с любым плохим синтаксисом в CSS. Поэтому, если вы указали "0" в качестве размера единицы, а по умолчанию "0em" или "0%" и т.д., Тогда результат останется "0" для этого атрибута. Однако вы заметите это, если вы намеревались изменить предыдущее значение в каскаде. a '0em' говорит: "измените значение до 0em", но нуль может просто сказать "игнорировать это правило" и оставить прежнее правило действующим. Это может быть совсем не то, что вы намеревались с вашим голым "0" .
Это процесс на стороне клиента, и вы не можете контролировать, как конкретный браузер, теперь или в будущем, может обрабатывать "0" и интерпретацию по умолчанию.
Итак, помимо того, что кто-то читает ваш код, который определенно должен иметь элемент размера "0" , и какой тип устройства подходит, он может фактически повлиять на результат. Лучше всегда использовать обозначение устройства с нулями. Если вы действительно суетливый (как я) или дизайн vls-системы и код (как и я), вы также можете поместить ведущий ноль (0.xx...) в любые значения меньше 0. Это позволяет позже читатели должны знать, что ваша фракция была преднамеренной, а не просто опечаткой.
Что касается тех, кто жалуется на "лишнюю типизацию", я предлагаю вам пройти класс ввода. Одна из первых вещей, которые я делаю при опросе дизайнеров или кодеров для работы, - дать им тест на ввод. Нет ничего лучше хорошей машинистки, чтобы экономить деньги и производить меньше ошибок!
ваш учитель упрям в том, что он или она не желает признавать себя неправым. 'whatever: 0' устанавливает все возможные единицы, унаследованные или иными, равными нулю. 0 определенно равно нулю.
Это было избито до смерти, но здесь... посмотрим, что говорят на нем "большие собаки".
Не используйте единицы после 0 значений, если они не требуются
WordPress CSS Руководство по стилю говорит аналогично...
0 значения не должны иметь единиц, если это необходимо, например, с переходная продолжительность.
0 и 0em одинаковы, но любое значение, отличное от 0 для x и xem, не совпадает.
Google собственный браузер Chrome в стиле "Вычисленный" включает в себя единицы с нулевыми значениями, которые соответствуют моим личным предпочтениям, чтобы просто включить его.
Там разница между 0
и 0em
!
Это связано с transition
собственности. По крайней мере, в случае line-height
, когда значение изменяется с некоторого другого значения на 0
анимация не будет воспроизводиться, но когда она изменится на 0em
она будет работать правильно.
Это может быть ошибкой, но я испытал одинаковое поведение как в Firefox, так и в Chromium.
Проверьте это сами: https://codepen.io/anon/pen/GPoopW?editors=1100.