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 關注
- 236 瀏覽
添加回答
舉報