【问题标题】:Is setting image dimensions with CSS as "good" as setting them in HTML?使用 CSS 设置图像尺寸是否与在 HTML 中设置图像尺寸一样“好”?
【发布时间】:2010-11-17 16:23:48
【问题描述】:

很久以前,当我第一次学习 HTML 时,有人告诉我,始终在 HTML 中设置图像的尺寸很重要,这样浏览器就可以在图像应该去的地方绘制一个空框,呈现你的页面,然后下载并渲染它们所属的图像。如果您没有为图像设置宽度和高度值,则浏览器必须先下载图像才能发现它们的尺寸,并且对于连接不佳的人来说,这会降低页面加载速度。

在过去的几年里,我一直在使用 CSS,我总是在我的 HTML 中的 img 标记中放置 widthheight 声明。我的问题是,是否在样式表中设置宽度和高度,不再添加这些 HTML 属性,也一样好吗?没有它们,这无疑让我的斯巴达式 HTML 看起来更加干净。

【问题讨论】:

    标签: html css image dimensions


    【解决方案1】:

    您提到的图片未立即下载的问题也适用于您的 CSS。

    不同之处在于,如果没有 CSS 的其余部分,整个布局可能没有意义。换句话说,如果 CSS 的其余部分没有加载,那么图像尺寸也丢失的事实就不会那么明显了。

    所以我个人认为将尺寸放在 CSS 中很好。

    【讨论】:

    • 如果不设置宽度/高度内联,如果图像丢失,它不会渲染已用完的空间,请参阅图像以供参考。通常这不会有问题,但最好将宽度设置为内联,因为有时它会导致布局问题。
    【解决方案2】:

    这是一个很好的问题,但它有点主观,可能会导致比一般建议的 SO 更多的讨论。

    在 90 年代,浏览器速度很慢,互联网也是如此。 56k 需要一段时间来传输中等大小的图像。在此期间,布局将调整大小以适合图像。

    快进十年,互联网速度更快,渲染时间也更快。人们习惯于在页面加载的前半秒发生一些变化的布局。 指定图片大小也不错,只要您了解页面布局在加载过程中可能会发生变化。

    CSS 在页面加载之前进行解析,因此在 CSS 中指定高度和宽度与内联指定一样有效。

    要记住的一点是,内联样式(包括高度和宽度声明)总是在特异性上胜过 CSS。如果您指定内联图像的高度和宽度,如果您想调整图像的大小,则可能必须返回存在图像的每个页面。

    我个人建议使用 CSS,因为它将所有样式保存在同一个位置。

    【讨论】:

    • 这就是我正在琢磨的思考过程,很高兴听到它如此简洁地呈现。
    • 另外,我同意这几乎是一个论坛有争议的问题,而不是一个简单的“做 A 而不是 B,这是它说的手册”交易。
    【解决方案3】:

    是的,在 CSS 中设置这些属性也可以。

    但是,我不知道它会以任何方式影响页面呈现速度。它确实有一点影响,就是依赖于图像的布局会在页面上跳来跳去,直到图像被加载并分配它最终会分配的所有空间。

    这不是我自己遵循的做法。

    【讨论】:

      【解决方案4】:

      这里已经讨论并回答了一个类似的问题:

      Image width/height as an attribute or in CSS?

      应该内联定义。如果你 正在使用 img 标签,该图像 应该具有语义价值 内容,这就是为什么 alt 验证需要属性。

      如果图像要成为 布局或模板,您应该使用 除 img 标签以外的标签并分配 图像作为 CSS 背景 元素。在这种情况下,图像有 没有语义,因此 不需要 alt 属性。我是 相当肯定的是,大多数屏幕 读者甚至不知道 CSS 图像存在。

      这也很有帮助:

      如果它是您网站模板的一部分, 我会把它放在 CSS 文件中。

      如果它只是在一页上,它应该是 内联(或在块中定义 页面特定的 CSS 位于顶部)。

      【讨论】:

      • 语义不需要宽度和高度。这就是不推荐使用内联样式的原因,它们在语义上没有意义。
      • @zzzzBov:错了。它们没有被弃用 - w3schools.com/tags/tag_IMG.asp
      • @Dave 错了,您没有为您的 w3schools 链接提供任何上下文,而且 w3schools 不如实际的 w3c 规范全面。如果您对此感到困惑,我并不是说不推荐使用高度和宽度。我指的是style 属性。仅仅因为您可以使用属性并不意味着您应该
      • @zzzzBov:我不困惑,你只需要更清楚。在 w3c 规范中,它与 w3schools 页面有什么矛盾之处吗?此外,虽然特定标签已被弃用,但 style 属性并非如此,您需要在将某些内容作为事实传递之前进行检查,并且您应该始终引用粗体的声明,如“不推荐使用 style 属性”。如果您也尝试过,您很快就会发现自己错了。
      • @Dave,你说得对,我应该更清楚,我误认为 style 属性已被弃用。话虽如此,设计师应该选择 CSS 而不是内联样式,因为内联样式在语义上并不是特别有意义。
      【解决方案5】:

      我认为唯一的区别是 css 可以(是的,有可能!)不被读取,所以使用了<img> 属性。 但我不确定,我要检查一下。

      编辑:http://www.mezzoblue.com/archives/2005/05/10/image_attrib/

      【讨论】:

      • 我也不太关心可访问性(我知道,这不是一个非常流行的观点,但我做的网站是针对非常特定的目标受众的,而不是很多需要网络 -当它是外科医生注册保险等的网站时,与盲人阅读器兼容的代码)。
      • 所以 HTML 或 CSS 图像尺寸之间的差异是无用的^^
      • 不完全是,我只是说,CSS 可能永远不会被解析的想法(例如,纯文本或盲文浏览器,或者关闭样式表的人)并不是真的一个担心。但是,无论如何,我确实希望遵循最佳实践,并且仍然希望尽可能快地呈现页面。
      • 是的,但纯文本浏览器只关心 alt 图片属性!我看到的唯一情况是我的旧 5K 连接,它有时会加载图像而不是 css...
      【解决方案6】:

      虽然您可以使用 CSS 来清理布局,但如果您的布局因无法加载单个图像而混乱,您应该先修复它。

      现代布局应由 div 和 CSS 控制,布局中的图像应仅以 background-image: 的形式提供

      【讨论】:

      • 这不是他要问的。
      • 我的问题不是“我可以使用 CSS”(我知道)而是“我应该”。
      • 我回答说你根本不应该在布局中使用图像标签。瞧 :)
      • 另外,我不同意你应该只使用 background-image 来制作图像。背景图像用于,您猜对了:背景图像。内容图片不是背景,与网站的文字一样重要。
      • 但是内容应该从布局中抽象到这样的程度,不管你用它做什么,布局总是有效的。
      【解决方案7】:

      过去总是将尺寸放入 HTML 代码的原因在于加载时间——在 14.4K 调制解调器上,即使是相对较小的图像文件也会在主 HTML 文档加载后显着加载。

      这些天来,这已经不是什么大问题了。如果这是一个问题,值得注意的是 CSS 文件将在主 HTML 文档之后加载,因此如果您只在那里指定尺寸,您可能会遇到同样的问题,但 CSS 文件通常很小,所以效果应该是最小化。

      另外一点是,老式的 HTML 设计非常注重布局,而图像尺寸通常是其中的关键部分——如果图像尺寸错误,整个页面的布局通常会完全错误。

      现代页面设计的处理方式非常不同,将任何布局信息放入 HTML 中,并将其全部抽象到样式表中。因此,在典型的现代站点上,在加载样式表之前,站点将只是一系列块,并且完全缺乏设计。事实上,通常图形本身——不仅仅是它们的尺寸——是在样式表中定义的。

      所以答案是,要遵循现代页面设计方法,你应该把它放在样式表中。

      显然,对于当今大多数网站来说,快速加载样式表至关重要,但影响的不仅仅是图形的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多