【发布时间】:2021-04-25 22:24:48
【问题描述】:
我正在开发一个网站(使用使用 Antlers、Bootstrap、SCSS 的 Statamic v3),该网站涉及移动和桌面背景的不同上传(内联样式)。做这个的最好方式是什么?我在这些问题上挣扎了很长时间。当然,我可以使用 display none 和 display block 与媒体查询,但我希望有一个解决方案,只有移动图像加载到移动/小屏幕尺寸上,只有桌面图像加载到桌面/大屏幕尺寸上,所以它更好用于页面加载。
对于 img 标签,可以使用 img srcset,但不能使用背景图像。我也在质疑自己如何用大量代码(所以不一定使用背景图像)来使用部分/元素来做到这一点
我还尝试通过 JavaScript 使用移动检测,但问题是如果用户在桌面上工作但浏览器视图较小,则无法获取网站的“移动版本”。
我主要是使用 Bootstraps d-none 和 d-block 来处理媒体查询,但这感觉不对。
任何人都有保持良好页面加载的最佳实践吗?
编辑:我添加了一些代码来显示我想要实现的目标。用户可以在 CMS 上上传桌面背景图像和移动背景图像。据我所知,这两个图像都将加载到页面中,但由于显示属性,它们不会同时显示。我的目标是页面不会加载两个图像,而只会加载该视口大小所需的图像。我不能在我的 SCSS 中使用媒体查询执行此操作,因为我无法在我的 SCSS 中设置背景 url。
<div class="row d-md-none main-content" style="background-image: url('{{ bg_image_desktop }}')">
<div class="offset-md-2 col-md-8">
<h1></h1>
</div>
</div>
<div class="row d-none d-md-block main-content" style="background-image: url('{{ bg_image_mobile }}')">
<div class="col-12">
<h1></h1>
</div>
</div>
【问题讨论】:
-
"浏览器小视图,看不到'手机版'" 为什么要呢?您加载不同图像的标准是“在移动设备上加载移动图像,并且仅在桌面上加载桌面图像”,这将完全满足移动检测。当然,您也可以使用媒体查询根据屏幕宽度选择要加载的图像,但它不是移动设备与桌面设备,而只是取决于屏幕宽度。
-
@Teemu 我之所以想要这样做是因为元素/背景图像在较小的屏幕尺寸上看起来与在大屏幕尺寸上的不同。我可以通过媒体查询来做到这一点,但是它已经加载了 html 元素(带有背景图像),这将加载 2 张图像并且对于页面加载更糟糕。你明白我的意思吗?
-
AFAIK 未应用 CSS 规则中的图像未加载..?
-
@Teemu 我编辑了我的问题。我认为我最大的问题是背景图片是从 CMS 上传的,所以我需要在元素上设置内联样式。我无法使用这些上传的图片“访问”CSS。
-
@Teemu 如果我不是很清楚,我很抱歉。我用一些代码编辑了我的帖子,我希望这能更清楚一点。
标签: javascript twitter-bootstrap sass responsive statamic