我应该在HTML中为我的IMG指定高度和宽度属性吗?

时间:2009-08-08 01:21:10

标签: html css image

如果我知道要用图像标签显示图像的高度和宽度,我应该包含高度和宽度属性,还是只将信息放在CSS中?或两者兼而有之?

实施例

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

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

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

5 个答案:

答案 0 :(得分:78)

根据Google Page Speed,您应该始终在图片标记中定义宽度和高度。但是,要验证您不能使用样式标记。

此外,您应始终指定与实际图像相同的高度和宽度,以便浏览器不必像调整大小那样对其进行任何修改。

我建议你这样做

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

编辑:有人在评论中建议,不添加任何属性会更快。根据谷歌(并不是说他们最终都是浏览器知识):

  

如果在包含文档中未指定尺寸,或者指定的尺寸与实际图像的尺寸不匹配,则浏览器将需要重排并在下载图像后重新绘制。要防止回流,请在HTML标记或CSS中指定所有图像的宽度和高度。 - Read More

鉴于此,您可以在CSS中执行img维度,但要验证您必须在CSS文件中执行此操作,而不是内联。

BTW,Google Page Speed是一系列专注于更快地呈现网页的提示。

答案 1 :(得分:22)

您应该始终指定图片的heightwidth,如果只是为了帮助浏览器在图片下载之前将页面展开。

请参阅HTML 4.01规范中的13.7 Visual presentation of images, objects, and applets

  

高度和宽度属性给出   用户代理一个大小的想法   图像或物体,以便他们可以   为它预留空间并继续   在等待时呈现文档   对于图像数据。

他们推荐不需要但是你真的应该指定它们; - )

另外,请确保您指定的尺寸实际上与图像的尺寸相匹配。

没有什么比等待页面下载更糟糕的了,因为那些400x300(!)图像实际上更像4000x3000,质量为95%。

答案 2 :(得分:4)

是的,您应该指定尺寸,以便用户代理在图像完全加载之前预先知道尺寸,因此如果布局依赖于加载的图像的尺寸,则布局不会看起来破碎。另外,如果您依靠IE6的过滤器属性来插入png,那么需要这些尺寸。

答案 3 :(得分:1)

这个答案现在已经过时了,我不会像2009年那样用现代浏览器做出同样的推荐。


使用哪一个并不重要,但我建议只使用一个。

我建议使用css解决方案的属性,因为它与旧浏览器和禁用了样式的人更兼容。

答案 4 :(得分:0)

实际上你不必指定它们。相对于w3c specificatio n,您仅使用它们来覆盖嵌入在图像文件中并由浏览器读取的默认值。使用时会将原始图像缩放到给定的大小,因此放置它们会为浏览器进行额外的计算。

高度和宽度属性使用户代理可以了解图像或对象的大小,以便他们可以为其预留空间并在等待图像数据时继续渲染文档。

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