2 回答
TA贡献1811条经验 获得超6个赞
在 PHP 中执行此操作是不必要的麻烦,而不是推荐或适合的方式。
在 HTTP GET 请求上获取视口几乎是不可能的。有一些 hacky 方法可以实现这一点,但它们需要通过 JS 进行某种额外的请求。
您最好的选择是使用HTML。
srcset
将为您提供保障!
我会建议类似:
<img srcset="/image.jpg 640w" sizes="100vw" src="/image.mob.jpg" alt="Alt attribute. Fill me!">
默认情况下,这将加载您的image.mob.jpg
图像,然后将其作为高性能基础图像提供,如果您的浏览器支持 srcset 并且视口大于640px
,您将获得/image.mob.jpg
图像。
假设您想要更多尺寸,那么您所要做的就是将它们添加到 srcset 属性并指定不同的尺寸:
<img srcset="/image-huge.jpg 1990w, /image-big.jpg 1440w, /image.jpg 640w" sizes="100vw" src="/image.mob.jpg" alt="Alt attribute. Fill me!">
TA贡献1804条经验 获得超7个赞
虽然@avcajaraville 的答案通常非常有用,但@Paflow 的评论帮助我找到了解决方案。不涉及 JavaScript。
HTML
<?php
...
while ($row = mysqli_fetch_array($result)) {
$mobile_image_path = substr($row['image'], 0, -4).".mob".substr($row['image'], -4);
$image_id = "banner-image-" . $row['id_banner']; ?>
<style>
#<?=$image_id?> {
background-image: url('<?=$row['image']?>');
}
@media (max-width: 640px) {
#<?=$image_id?> {
background-image: url('<?=$mobile_image_path?>');
}
}
</style>
<div class="image" id="<?=$image_id?>"> ... </div>
我第一次使用<style type="text/css" scoped>,但后来我阅读scoped已弃用,只允许<style>在内部使用。<body>
不是最花哨的方式,但它的工作原理!
- 2 回答
- 0 关注
- 196 浏览
添加回答
举报