【问题标题】:How to make responsive background-images that come from a CMS?如何制作来自 CMS 的响应式背景图像?
【发布时间】:2015-12-22 09:43:44
【问题描述】:

在开发网站时,我经常使用背景图片作为横幅。当此网站在 CMS 中时,图像路径来自数据库(用户上传)。所以我最终使用了style="background-image:url(myImageFromDB.jpg)"

但是,当我想用​​相同图像的较小版本替换此图像时,这会成为一个问题。

那里有很多教程/指南,假设您已经知道此图像的路径,因此您可以使用@media 查询轻松替换它们。但是如果路径是动态的,那么我就不能使用媒体查询(除非它们是动态写入文档头部的)。

那么人们是如何处理这个问题的呢?

  1. 不使用背景图像? (改为使用?)
  2. 在文档开头动态编写媒体查询?
  3. 使用JS动态加载正确的图片?
  4. 在服务器上动态调整图像大小?

每种方法的缺点: 1. 缺点,不能使用一些好的选项比如 background-size:cover 2.需要编写服务器端脚本来确定要加载什么图像 3.可能是最好的选择,但需要先等待JS加载 4. 我试过这个,但没有多大成功。

【问题讨论】:

  • 另一个要添加到您的列表中:css-tricks.com/…。这是一个最近的规范,所以还没有很多浏览器支持。还有一些很好的 JS 库可以处理这个问题。这真的取决于你想要支持什么。
  • 我更喜欢 JS 选项,并为 bg 图像使用自制的 srcset 库。创建后备很容易,图像是异步的,并且可以设置为立即加载或使用类似航点的方式加载,这对性能有好处。
  • @SimonGooder 我以前读过那篇文章。不幸的是,不是只处理 img 标签的背景图像。

标签: html css image responsive-design media-queries


【解决方案1】:

你可以做的一件事.. 您可以使用像 width:90vw; 这样的视口宽度来分配它的宽度。 1 vw=总视图的 1/100。 所以你不需要改变小屏幕的图像。 您也可以简单地将其添加到您的媒体查询和默认 css 中。 宽度:90vw;.. 您可以根据需要更改宽度。 所以它会动态地行动。 不需要改变图像。 希望它有效。

【讨论】:

  • 你能举个例子吗?横幅图像非常大(通常)。仅使用 css 调整图像大小是不好的,因为您将迫使用户下载大文件大小,以获取小视图区域。
  • 是的,你是对的。如果图像尺寸太大,我将不适合调整图像大小。
猜你喜欢
  • 2016-10-09
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多