jmn*_*mng 5 html css responsive-design responsive-images
我的目标是提供同一图像的不同版本(分辨率/尺寸),这些版本应占据视口宽度的 100%,因此我可以为移动设备(或者通常是显示屏较小或速度较慢的设备)提供 800px 版本连接)、1366px 及以上到更大的桌面显示器。
问题是我正在使用 Chromium 设备模拟器进行测试,一些小屏幕设备加载 1366px 版本而不是 800px:iPhone 6/7/8(375px 宽度)加载 800px 图像,但 iPad(768px) 、Nexus 5 (360px) 和 iPhoneX (375px) 都加载 1366px,而不是加载 800px。
我不太有信心正确理解尺寸指令,这是我的代码,默认 src 引用 2880px 版本只是为了帮助测试:
<img class="img-fluid"
srcset="img/dreamstime_800w_109635242.jpg 800w,
img/dreamstime_1366w_109635242.jpg 1366w,
img/dreamstime_2880w_109635242.jpg 2880w"
sizes="(max-width: 800px) 100vw,
(max-width: 1366px) 100vw,
2880px 100vw"
src="img/dreamstime_2880w_109635242.jpg"/>
Run Code Online (Sandbox Code Playgroud)
您的sizes属性告诉浏览器图像始终显示完整视口宽度,因此您只需将其替换为sizes="100vw".
因此,浏览器获取当前视口宽度,将其乘以屏幕密度,然后得到所需图像的宽度。然后,它从 .txt 文件中的列表中获取最接近的图像srcset。
您不能使用它来\xe2\x80\x9d向移动设备\xe2\x80\x9d提供800px版本,因为现在大多数移动设备的密度比桌面设备更大,并且您无法使用<img srcset\xe2\x80\xa6 sizes\xe2\x80\xa6>.
如果您确实想忽略屏幕密度(出于什么原因?)并且:
\n\n然后你必须使用<picture>这样的媒体查询:
html\n<picture>\n <source media="(max-width: 800px)" srcset="img/dreamstime_800w_109635242.jpg 800w">\n <source media="(max-width: 1366px)" srcset="img/dreamstime_1366w_109635242.jpg 1366w">\n <img src="img/dreamstime_2880w_109635242.jpg">\n</picture>\n
小智 4
这与视网膜显示器(以及它们的 DPI,我认为)有关。
据我所知,视网膜显示器将选择其显示器宽度两倍或三倍的第一张图像,具体取决于其各自的视网膜显示器(2x、3x 等)。
另一个简单的解决方案是清除浏览器缓存。如果最大和最糟糕的图像已被缓存,Chrome(例如)将始终加载该图像。
| 归档时间: |
|
| 查看次数: |
4738 次 |
| 最近记录: |