【发布时间】:2009-03-12 19:47:19
【问题描述】:
指定图像高度和宽度的“正确”语义方式是什么?在 CSS 中...
width:15px;
或内联...
<img width="15"
?
CSS 似乎是放置视觉信息的正确位置。另一方面,很少有人认为不应将图像“src”指定为属性,并且高度/宽度似乎与“src”一样与二进制图像数据相关。
(是的,从技术和最终用户的角度来看,我意识到这并不重要。)
【问题讨论】:
指定图像高度和宽度的“正确”语义方式是什么?在 CSS 中...
width:15px;
或内联...
<img width="15"
?
CSS 似乎是放置视觉信息的正确位置。另一方面,很少有人认为不应将图像“src”指定为属性,并且高度/宽度似乎与“src”一样与二进制图像数据相关。
(是的,从技术和最终用户的角度来看,我意识到这并不重要。)
【问题讨论】:
应该内联定义。如果您使用 img 标签,该图像应该对内容具有语义价值,这就是验证需要 alt 属性的原因。
如果图像要成为布局或模板的一部分,则应使用 img 标签以外的标签,并将图像作为 CSS 背景分配给元素。在这种情况下,图像没有语义,因此不需要 alt 属性。我相当肯定大多数屏幕阅读器甚至都不知道 CSS 图像的存在。
【讨论】:
我认为这取决于您如何使用该属性。如果您要在列表或表格中设置 多个图像 的样式以使其布局正确,则将宽度/高度放入您的 CSS 中以避免需要添加另一组列表中每个图像的标签。使用类似
ul.gallery img: { width:117px; }
另一方面,如果您要在某些内容中插入图像,并且它需要一定的大小才能使文档正常流动,那么将其放入HTML。这样,您就不必为 html 中的每个不同图像弄乱样式表。这样一来,如果您将内容更改为不同的图像,或者将图像全部删除,您的 CSS 中就不会留下散落的代码残留物需要记住删除。
【讨论】:
高度和宽度应包含在 HTML 中。原因是它在页面上创建间距。如果由于某种原因无法加载 img(并且您一直是个好孩子,并且包含了一个 alt.. 浏览器将显示该框架(使用提供的 w 和 h),其中包含 alt。
主要的有益原因是防止“流行”效应。当浏览器加载页面时,有时较大的方面(例如 img)需要更长的时间来加载,如果您没有在 HTML 中指定 w 和 h,浏览器会暂时折叠该区域,认为它不存在。然后,当它最终加载时,所有内容都会弹出到适当的位置。
这特别烦人,但在计算机上仍然很烦人,因为您要单击一个链接,突然页面向下移动,并且您不小心单击了错误的链接。
【讨论】:
width/height 属性来防止“pop”效果。这也可以通过 CSS 完成。
根据<img> article at MDN,HTML 属性指示图像的内在尺寸,即它的真实尺寸。这就是为什么 HTML 4 也允许百分比值,而 HTML5 只允许 px 值。 (常见的陷阱:“px”不应该写)
如果您想显示具有这些尺寸的图像,那就大功告成了。否则,您还必须添加 CSS 来指定 display 大小。
当然,最好以显示的大小提供图像,以避免浏览器调整大小、节省带宽等,但这并不总是可行的。
另请参阅此问题的答案:What's the difference between HTML's and CSS's width attribute?
【讨论】:
我会说 CSS。
HTML 是关于内容的,
CSS 是关于展示的。
【讨论】:
我会说 HTML。
宽度和高度属性用于阻止页面以脱节的方式加载和增长。
如果您曾经阅读页面上的一段文本,但由于上面的延迟加载图片而将其向下推,您就会知道这是多么令人沮丧!
为每个图像添加一个 ID 只是为了指定它的宽度和高度将是可笑的,并且几乎与添加两个宽度/高度属性一样混乱。
问题是 Firefox 没有使用 width 和 height 属性来保留图像空间,但我很惊讶他们实际上没有更新它。
【讨论】:
如果您查看 HTML5 规范,指定高度和宽度是一个选项而不是要求。因此,无论有没有这些属性,代码都是有效的。
从实际的角度来看,非常希望指定它们以防止上面提到的页面重排。然而,那些建议它应该在 html 中的人因为这个原因错过了浏览器在最初构建页面时使用 css 的事实。如果他们不这样做,则必须为浮动元素、指定的填充、边距等重新绘制页面。
是用html还是css指定最好看个人情况。大量相同大小的图像可能最好使用 css 来处理,一个带有 html 的图像。也就是说,如果您要为图像指定其他样式(边框颜色、样式或半径、浮动等),则向 css 添加宽度和高度是有意义的。
如果您在 html 中指定,则只能使用像素。如果您想指定百分比,则必须使用 css。
附带说明,我们鼓励使用 ems & % 而不是 px 来帮助避免在用户更改浏览器设置等时出现问题,但图像始终以像素为单位。显然,将 px 用于图像是有实际原因的。但是,将图像保留在 px 中似乎会否定不使用它们的论点。
【讨论】:
如果它是您网站模板的一部分,我会将其放在 CSS 文件中。
如果它只是在一个页面上,它应该是内联的(或在顶部的一个页面特定的 CSS 块中定义)。
【讨论】:
我认为它是内容的一部分,正如您所提到的,就像 src 属性一样。
另一方面,没有必要在 html 或 css 中指定宽度或高度,尽管它可能有助于更快地呈现页面。
【讨论】:
我会选择 W3C 推荐。
也就是说,将宽度和高度定义为这样的属性:<img src="example.png" width="150" height="150" alt="example image">
http://www.w3.org/TR/html5/embedded-content-0.html#the-img-element
【讨论】:
我可能是错的,如果我错了,请有人纠正我……但我认为 Google 和其他一些搜索引擎会将 alt 标签的内容编入索引。
有时,为了设计美学,我创建了一个文本图像,该图像是用 HTML 不可用的字体创建的,但 Photoshop、Illustrator 等可以使用。如果您想要创建一个精确的印刷印象,其中涉及文本获取信息的唯一方法是创建印刷文本的图像并将实际文本放在 alt 标记中以供搜索引擎使用。
如果有人有更好的解决方案,我很乐意听到。
同时,鉴于对我所描述的内容的需求,作为标准做法,我投票支持 HTML 内联高度/宽度参数以及 alt 文本描述似乎是合理的。事实上,它是内容,而不仅仅是在这种情况下的设计——在 CSS 和搜索引擎提出更好的解决方案之前,这种情况真的不应该是规则的例外。
【讨论】:
img标签的width属性有价值??
@font-face 规则)似乎是更可取的解决方案(优于将文本预呈现为图像)以客户端计算机上可能不存在的特定字体呈现文本。
电子邮件客户端如何将 img 约束作为属性与内联样式处理?
<img src="http://imperavi.com/img/redactor-image.jpg" width="1400" >
<img src="http://imperavi.com/img/redactor-image.jpg" width="1400" height="582" >
<img src="http://imperavi.com/img/redactor-image.jpg" style="width: 120px; " >
<img src="http://imperavi.com/img/redactor-image.jpg" style="width: 120px; height: 50px;" >
因此,不应使用内联样式设置 img 大小约束,主要是因为 Outlook 2007/2010/2013 不支持它们。
同时使用属性和内联样式时会发生什么?有些客户端使用其中一种,有些则使用内联宽度和属性高度:
<img src="http://imperavi.com/img/redactor-image.jpg" width="1400" height="582" style="width: 120px; height: 50px;" >
tldr:对 html 电子邮件使用 img 属性。
【讨论】: