【发布时间】:2015-05-13 14:46:27
【问题描述】:
将(响应式)背景图片添加到静态网站的最佳方式是什么?另一个要求(用“动态”描述)是图像由后端设置,因此不能直接写入 CSS 文件。
选项 A:
通过style属性在模板中注入背景图片。
Pro:浏览器的预解析器可以获取它。
相反:它直接添加样式并硬编码到标记中,这并不理想。我也不知道如何在不将超复杂的媒体查询添加到样式属性中的情况下实现响应式图像解决方案。
选项 B:
在模板中注入响应式背景图像源作为数据属性,并通过 JavaScript 将最佳假设写入style 属性。
Pro:响应式图像是可以实现的。内联样式仅由脚本写入标记。
相反:当 JavaScript 失败时失败。 Preparser 无法提前获取它。因此增加了在图像显示之前闪烁的机会。
选项 C:
使用内容响应式图片。 专业人士:容易做到。 相反:这不是我想要做的,并且在语义上也不正确,因为图像显然只是代表性的,应该存在于 CSS 中,而不是 HTML。
您有更好的想法或知道什么是最佳选择吗?感谢您提供任何其他见解或想法!
【问题讨论】:
-
图片中的动态原样会变成不同的图片吗?
-
我认为第一个选项不需要超级复杂媒体查询。只需将 css 属性
img {max-width: 100%;}添加到body或您想要背景的元素,您的图像就会响应。 -
你为什么不制作单独的类,每个类都有不同的背景图像,切换那个类。确保所有图像的大小相同并且对于任何分辨率都足够大,然后将图像宽度设为 100%
-
它将使您的图像适合容器元素的宽度,因此小图像会被拉伸。但这是另一个问题,与 CSS 无关,你不能让小图像在更大的尺寸下看起来很好
-
也许选项 C 带有 ARIA 属性,例如
role="presentation"和aria-hidden="true"?这样您就可以将它们从屏幕阅读器流程中删除。
标签: javascript css performance responsive-design