2009-06-01 11 views
17

¿Hay alguna diferencia entrediferencia CSS entre 0 y 0em

margin: 0; 

y

Yo no vi nada, pero mi maestro me dice que no es lo mismo.

+23

Tu profesor está equivocado. – inspite

+4

Me recuerda a la física de la escuela secundaria. Si no puso las unidades, el problema fue incorrecto. – Robert

+6

En física (y en el nivel HS debe ser muy exigente), obtener las unidades correctas es mucho más importante que obtener el valor numérico correcto. Por ejemplo, si necesita la aceleración de la gravedad en la superficie de la Tierra y aplica la aproximación de 10 m/s^2 a menudo utilizada, está "un poco desconectado" (el valor aceptado es de 9,81 m/s^2). Si usa 9.82 m/s, entonces - parafraseando a W. Pauli - usted ni siquiera está equivocado. En ingeniería, las unidades y el orden correcto de magnitud son TODO. –

Respuesta

37

No hay diferencia cuando el valor es 0. Si fuera 1 y 1em, sí, hay una diferencia, pero 0 es 0, sin importar la unidad.

+1

y no hay diferencia con 0 "lo que sea". Cada unidad en CSS se define para que 0 no sea nada: 0%, 0cm, 0in, 0pt, etc. –

+28

Esto también se aplica a las manzanas y los elefantes. – inspite

+1

Entonces, si tiene un valor de cero, siempre debe omitir las unidades porque son redundantes. –

3

El cero es cero es cero. Independientemente de si las unidades son diferentes. El valor derivado en píxeles siempre es el mismo: cero.

8

Es como decir que 0 plátanos no es lo mismo que 0 manzanas. Así que, de alguna manera, él está en lo cierto, pero el cero es cero, ¡de cualquier forma terminarás hambriento!

+0

Bueno, ser quisquilloso - normalmente, 0 plátanos NO ES lo mismo que 0 manzanas (oh, por ejemplo: var a = new List () no es lo mismo que var b = new List ()). Pero en este caso son lo mismo porque no estamos realmente contando manzanas o plátanos, ni em's o px's; estamos contando DISTANCE en UNIDADES de em's o px's. Es como si la pregunta fuera "¿cuál es la capacidad de una caja en unidades de plátano o manzana? Entonces, '0' realmente es lo mismo que '0 plátanos' y '0 manzanas'. –

+0

Yo digo que está en lo correcto ... – PatrikAkerstrand

13

El archivo es más grande con 0em.


La manera de demostrar a su profesor que no hay diferencia es establecer algo a 0 y algo más para 0em e inspeccionar el DOM con Firebug o una herramienta similar. Si recuerdo correctamente, verá que ambos son ahora 0. Entonces la única diferencia está en la fuente. (Pero ha pasado un tiempo desde que lo verifiqué. Puede que esté pensando en obtener y configurar estilos de jQuery. Así que échale un vistazo antes de tomar mi palabra.)

+2

Hehe, es cierto. Un archivo "css" salpicado es un poco más grande que el simple "0". – Kriem

5

Me pregunto si el profesor está tratando de resaltar, no tanto que 0 y 0em no tienen el mismo valor, pero quizás que la unidad predeterminada en CSS no sea em (creo que la especificación exige que los valores distintos de cero tengan unidades adjuntas pero a menudo asuman px).

En el ejemplo específico obviamente son iguales.

3

Tu profesor, parece, es un idiota.

Pero tal vez las apariencias son engañosas: debe preguntarle a su profesor qué significan.

Tengo que preguntar, ¿por qué no le preguntaste a tu profesor qué querían decir cuando lo dijeron por primera vez? Cero es cero, sin importar las unidades.

+0

Sí, me encantaría saber a qué estaba tratando de llegar el profesor. Informar – Nosredna

+0

ver la edición de la respuesta del docente:) –

0

0 y 0em son iguales, pero cualquier valor que no sea 0 para x y xem no es lo mismo.

1

tu profesor es terco porque no está dispuesto a admitir que está equivocado. 'lo que sea: 0' establece todas las unidades posibles, heredadas o no, en cero. 0 es definitivamente cero.

4

Sin duda hay una diferencia entre un '0' con o sin una unidad de medida asociada (em, px, etc.).

Mientras que CSS, en la mayoría de los casos, interpreta '0' sin un tamaño de unidad como unidad cero predeterminada para ese atributo, no siempre es el caso (tamaño de letra, por ejemplo) y algunos validadores objetarán propiedades que requieren tamaños de unidad en su especificación cuando encuentran un parámetro sin esa unidad incluida.

La diferencia es que '0', sin una designación de unidad, puede interpretarse como un error de expresión en las propiedades donde se requiere el tamaño de la unidad. Es posible que no note la diferencia, ya que la expresión simplemente se considerará como "mala sintaxis" y el intérprete se saltará la frase; como lo hace normalmente con cualquier mala sintaxis en CSS.Por lo tanto, si especifica el '0' como un tamaño de unidad y el valor predeterminado es '0em' o '0%', etc., el resultado seguirá siendo '0' para ese atributo. Sin embargo, lo notará si tiene la intención de cambiar un valor anterior en la cascada. un '0em' dice, 'cambie el valor anterior a' 0em ', pero un cero puede simplemente decir' ignore esta regla 'y deje la regla anterior en vigencia. Esto puede no ser para nada lo que pretendías con tu desnudo '0'.

Este es un proceso del lado del cliente y no tiene control sobre cómo un navegador en particular, ahora o en el futuro, puede manejar '0' y la interpretación predeterminada.

Por lo tanto, además de decirle a quien lee su código que definitivamente pretende tener un elemento de tamaño '0' y qué tipo de unidad es la adecuada, en realidad puede afectar el resultado. Es mejor usar siempre la designación de la unidad con tus ceros. Si eres realmente quisquilloso (como yo lo soy) o diseño de sistemas y códigos vls (como yo lo he hecho), también puedes poner un cero a la izquierda (0.xx ...) en cualquier valor menor que 0. Esto permite más tarde lectores para saber que su fracción fue deliberada y no simplemente un error tipográfico.

En cuanto a los que se quejan de 'escribir extra' - le sugiero que vaya a tomar una clase de mecanografía. Una de las primeras cosas que hago al entrevistar diseñadores o codificadores para un trabajo es darles una prueba de mecanografía. ¡No hay nada como un buen mecanógrafo para ahorrar dinero y producir menos errores!

1

Esto ha sido golpeado hasta la muerte pero aquí va ... veamos qué dicen los "perros grandes".

Google CSS Guidelines ...

No utilice unidades después de valores de 0 a menos que se requieren

WordPress CSS Guía de estilo dice de manera similar ...

0 valores no debería haber unidades a menos que sea necesario, como con duración de transición.

+1

MS WebMatrix también recomienda esto. Tengo curiosidad por saber por qué. ¿No sería solo una preferencia personal? – Peter

+0

Gracias por señalarlas, personalmente prefiero reglas que eviten excepciones, así que prefiero ser explícito y justo escriba las unidades. –

+0

Y, curiosamente, el panel de estilo computarizado de Google Chrome en las herramientas de desarrollo incluye unidades con 0 valores. –

5

El CSS3 spec dice esto:

de cero longitudes del identificador de la unidad es opcional

Así, a pesar de las directrices Googles, directrices de WordPress, Microsoft WebMatrix, y posiblemente muchos otros que dicen debería omitir la unidad cuando se utiliza cero, en realidad está permitido. Por lo tanto, es una preferencia personal o algo para poner en sus propias pautas de codificación.

+0

+1 como referencia. ous ... pero las referencias matan a los argumentos. –

-1

El navegador Chrome propio de Google en el estilo 'Computado' incluye unidades con valores cero que se alinean con mis preferencias personales para simplemente incluirlo.

Include Units With Zero Values

Cuestiones relacionadas