如果我知道要用图像标签显示图像的高度和宽度,我应该包含高度和宽度属性,还是只将信息放在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;" />
答案 0 :(得分:78)
根据Google Page Speed,您应该始终在图片标记中定义宽度和高度。但是,要验证您不能使用样式标记。
此外,您应始终指定与实际图像相同的高度和宽度,以便浏览器不必像调整大小那样对其进行任何修改。
我建议你这样做
<img src="..." height="20" width="50">
编辑:有人在评论中建议,不添加任何属性会更快。根据谷歌(并不是说他们最终都是浏览器知识):
如果在包含文档中未指定尺寸,或者指定的尺寸与实际图像的尺寸不匹配,则浏览器将需要重排并在下载图像后重新绘制。要防止回流,请在HTML标记或CSS中指定所有图像的宽度和高度。 - Read More
鉴于此,您可以在CSS中执行img维度,但要验证您必须在CSS文件中执行此操作,而不是内联。
BTW,Google Page Speed是一系列专注于更快地呈现网页的提示。
答案 1 :(得分:22)
您应该始终指定图片的height
和width
,如果只是为了帮助浏览器在图片下载之前将页面展开。
请参阅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" />