2009-06-01 3 views
17

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

margin: 0; 

и

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

+23

Ваш учитель ошибается. – inspite

+4

Напоминает мне о физике средней школы. Если вы не поставили единицы, проблема была неправильной. – Robert

+6

В физике (и на уровне HS вы должны быть очень придирчивыми), получение единиц права гораздо важнее, чем получение правильного числового значения. Например, если вам требуется ускорение силы тяжести на поверхности Земли, и вы применяете часто используемое приближение 10 м/с^2, вы просто «немного выключены» (принятое значение составляет 9,81 м/с^2). Если вы используете 9,82 м/с, то - чтобы перефразировать У. Паули - вы даже не ошибаетесь. В технике единицы и правильный порядок величины ВСЕ. –

ответ

37

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

+1

и никакой разницы с 0 "независимо". Каждая единица в CSS определяется так, что 0 ничего: 0%, 0cm, 0in, 0pt и т. Д. –

+28

Это верно и для яблок и слонов. – inspite

+1

Итак, если у вас есть значение нуля, вы всегда должны опускать единицы, потому что они избыточны. –

3

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

8

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

+0

Ну, чтобы быть придирчивым - обычно, 0 бананов НЕ то же самое, что 0 яблок (о, например: var a = new List () - это не то же самое, что var b = new List ()). Но в этом случае они одинаковы, потому что мы на самом деле не считаем яблоки или бананы, а не em или px; мы рассчитываем РАССТОЯНИЕ в ЕДИНИЦАХ em или px. Это похоже на вопрос: «Какова емкость ящика в банановых единицах или яблочных единицах. Тогда« 0 »действительно то же самое, что« 0 бананов »и« 0 яблок ». –

+0

Я действительно говорю, что он прав ... – PatrikAkerstrand

13

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


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

+2

Хе-хе, правда. «Em» splattered css-файл немного больше, чем обычный «0». – Kriem

5

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

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

3

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

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

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

+0

Да, я хотел бы знать, что пытался получить проф. – Nosredna

+0

см. Править для ответа учителя:) –

0

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

1

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

4

Существует определенная разница между «0» с или без соответствующего элемента калибровки (em, px и т. Д.).

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

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

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

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

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

1

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

Google CSS Guidelines ...

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

WordPress CSS Руководство Стиль говорит так же ...

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

+1

MS WebMatrix также рекомендует это. Мне любопытно, почему, однако. Разве это не было бы личным предпочтением? – Peter

+0

Спасибо, что указали на них, лично я предпочитаю правила, которые исключают исключения - поэтому я предпочел бы быть явным и просто напечатайте единицы измерения. –

+0

И интересно, что вычисленная панель стиля Google Chrome в инструментах разработчика включает единицы с 0 значениями. –

5

CSS3 spec говорит, что это:

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

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

+0

+1 для справки. Очевидно, что obvi ous ... но ссылки убивают аргументы. –

-1

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

Include Units With Zero Values

Смежные вопросы