2009-08-08 13 views
64

Si conozco el alto y el ancho de una imagen que voy a mostrar con una etiqueta de imagen, ¿debo incluir los atributos de alto y ancho, o simplemente poner la información en CSS? ¿O ambos?¿Debo especificar los atributos de alto y ancho para mis IMG en HTML?

Ej.

<img src="profilepic.jpg" height="64" width="64" /> 

o

<img src="profilepic.jpg" height="64" width="64" style="height: 64px; width: 64px;" /> 

o

<img src="profilepic.jpg" style="height: 64px; width: 64px;" /> 
+0

posible duplicado de [Ancho de la imagen/altura que un atributo o en CSS?] (Http://stackoverflow.com/questions/640190/image-width-height-as-an-attribute-or-in -css) –

Respuesta

75

Según Google Page Speed, debe definir siempre el ancho y la altura de la etiqueta de imagen. Pero, para validar, no puede usar la etiqueta de estilo.

Además, siempre debe especificar el mismo alto y ancho que la imagen real para que el navegador no tenga que hacer ninguna modificación, como cambiar el tamaño.

yo sugeriría hacerlo

<img src="..." height="20" width="50"> 

Editar: Alguien sugirió en los comentarios que sería más rápido para no añadir ningún atributo. Según Google (no es el fin del conocimiento del navegador):

Si no se especifican dimensiones en el documento que lo contiene, o si las dimensiones especificadas no coinciden con las de las imágenes reales, el navegador se requiere un reflujo y vuelve a pintar una vez que se descargan las imágenes. Para evitar reflujos, especifique el ancho y el alto de todas las imágenes, ya sea en la etiqueta HTML o en CSS. - Read More

Teniendo en cuenta que, usted podría hacer las dimensiones IMG en CSS, pero para validar que tendría que hacerlo en un archivo CSS, no en línea.

BTW, Google Page Speed ​​es una serie de consejos enfocados en renderizar la página más rápido.

+0

la página se renderizará más rápido sin ningún atributo. –

+0

@Elzo Valugi - Apuesto a que Google sugiere que para una mejor experiencia de usuario en lugar de rendimiento. – karim79

+1

@Elzo Según Google, dice que sí. Lea esto: http://code.google.com/speed/page-speed/docs/rendering.html#SpecifyImageDimensions –

4

Sí, debe especificar las dimensiones, de modo que los agentes de usuario conozcan de antemano el tamaño antes de que la imagen se cargue por completo, por lo que un diseño no podría parecer roto si se basa en las dimensiones de la imagen cargada. Además, si confía en la propiedad de filtro de IE6 para insertar png's, necesitará esas dimensiones.

+2

Él está preguntando qué método de agregar las dimensiones de la imagen no debería o no debería. no. – MitMaro

+0

Debo haber olvidado agregar eso: es preferible ir con atributos nativos ... casi * nunca * hay una razón para confiar en css en línea. –

22

Siempre debe especificar height y width de una imagen para ayudar al navegador a colocar la página incluso antes de que se haya descargado la imagen.

Ver 13.7 Visual presentation of images, objects, and applets en la especificación HTML 4.01:

La altura y atributos de anchura dan agentes de usuario una idea del tamaño de una imagen u objeto para que puedan reservar espacio para ello y continuar renderizando el documento mientras espera para los datos de la imagen.

Son recomienda y no requiere pero que realmente, realmente debería especificarlos ;-)

También, por favor asegúrese de que las dimensiones que especifique en realidad coincide con las dimensiones de la imagen.

No hay nada peor que esperar a que se descargue una página porque esas imágenes 400x300 (!) Son en realidad más como 4000x3000 con un 95% de calidad.

+0

Después de la prueba, Chrome y Safari reservan espacio antes de la carga. Firefox sin embargo no lo hace. – lulalala

1

Esta respuesta ahora es antigua y no recomendaría lo mismo que en 2009 con los navegadores modernos.


No importa cuál use, pero le recomendaría usar solo una.

Recomendaría el atributo sobre la solución CSS, ya que es más compatible con navegadores antiguos y personas con estilos desactivados.

+3

? Esto fue downvoted (sin comentarios sobre por qué). Lo volví a subir a cero, al menos. Aquí está el porqué, y esta pregunta no entra en ella, pero SÍ - hay un valor al especificar solo uno de los atributos de dimensión.Tiene que ver con la escala de las imágenes para que quepan dentro de un contenedor particular, y la necesidad de escalar (manteniendo la proporción) el alto y el ancho. Se puede confiar en el navegador para hacer eso. Dicho esto, veo la "corrección" de proporcionar ambos, pero en algunas situaciones solo una dimensión (lo que permite que el navegador calcule el otro en proporción). –

+1

Creo que @MitMaro solo hablaba sobre el uso de los atributos style * o * width, height. No especificando solo uno de ancho o alto. El voto negativo se debió a que todos los navegadores de uso común en la actualidad admiten el tamaño de una imagen con CSS y aquellos que tienen estilos desactivados no pueden esperar obtener una buena experiencia de usuario (incluso los lectores de pantalla para ciegos usan CSS). –

+0

Es 2016 y sigo teniendo un diseño que salta por todos lados debido a la carga de imágenes. Si las imágenes tienen los atributos 'width' y' height', esto no sería tan discordante. – Flimm

0

Actualmente no es necesario que los especifique. De acuerdo con w3c specificatio n, los usa solo para anular los valores predeterminados que están incrustados en el archivo de imagen y que el navegador los lee. Cuando se use, escalará la imagen original a tamaños determinados, por lo que ponerlos es hacer un cálculo extra para el navegador.

Los atributos de alto y ancho dan a los agentes de usuario una idea del tamaño de una imagen u objeto para que puedan reservar espacio para ello y continúen representando el documento mientras esperan los datos de la imagen.

<img src="profilepic.jpg" alt="image" /> 
+0

, así que he leído que esto ayuda a mejorar el tiempo de carga (sin importar cuánto puede ser, independientemente) si los pone en aunque no sean necesarios. – PositiveGuy

Cuestiones relacionadas