响应式图片 (responsive image)
更新 : 2019-02-21
除了写 srcset sizes 还有一种 x1, x2, x3, x4 的写法.
我们对比一下
假设
pc 希望是 1000w
mobile 希望是 300w
size 的写法是 if device == 300w use 300w, else if device == 1000w use 1000w (这里写的应该是 css media query, 但是我用 js 来表达就好)
游览就会通过匹配 device width 然后自动乘与用户的 retina 去寻找图片.
有时候我们并不需要 responsive 依据 device 的 width
但我们依然想要兼顾 retina
那么我们可以时候 x1, x2 的写法
只写 srcset 就可以了, 不需要写 sizes
srcset= 300w.jpg x1, 600w.jpg x2
无论 device 是 pc 还是 mobile 都只依据 retina 选图.
显然 sizes 还是比较强大的,而且 sizes 的 media query 也可以单独匹配 retina.
再来一个复杂的场景.
比如我们要做一个 image gallery 大图.
我们允许 admin upload 任意的图片.
user 则全屏展现图片.
举例
user device :
pc 1366 x 768 retina 1
pc 1366 x 768 retina 2
mobile 420 * 720 retina 1
mobile 420 * 720 retina 2
mobile 420 * 720 retina 3
mobile 420 * 720 retina 4
5 种 device
而 admin upload 得图片有 3 张
500x500
1500x1500
3000x3000
我们希望用户 device 小得情况下,不要给大图, 也希望用户 device 大得情况下,尽量展现大图.
这个时候得 srcset 我们需要依赖于 admin 图片得大小来写 (动态得,每张图得 srcset 都可能不同写法)
pc 1366 x 768 retina 1
pc 1366 x 768 retina 2
500x500
在 pc 得情况下, 500x500 希望完全展现
mobile 420 * 720 retina 1
手机 retina 1 得情况下, 我们要做小图
500 缩率图到 420.
然后 sizes = if (device width == 420 && retina == 1) use 420w;
我们只把需要压小得图写入 srcset. 其余得都用最大的图
写完小图后最后 sizes 加上
else if (retina == 1) 500w
else if (retina == 2) 500w
else if (retina == 3) 500w
else if (retina == 4) 500w
游览器有一个如果匹配不到就用最大图得概念,所以最后这个我们也可以改成
else 500w
就可以了. 总结就是写 if 所有需要缩率图得情况,然后最后加上 else 最大图.
更新 : 2019-01-01
如果我们不写 srcset 也不写任何 width, img 会依据图的大小来设置 width, retina 1 的情况下是完全 ok 的.
但是呢, 在有 retian 的情况就糟糕了, 因为它不会兼顾 device retina, 图片会变的很大很萌.
它不理会 mata width=device-width 的.
所以我们怎样都需要自己去设置 wdith , 或者使用 srcset. 不能放任不管哦.
从前世上只有一种 device.
屏幕大小都一样, 这时我们图片写 src 就可以了.
后来不同的屏幕大小出现了.
如果我们只是简单的用 css 来缩略大图去小图,这样的话虽然设计过关,但是却浪费了用户的宽带去下载较大的图,这种浪费不好。
后来就有了 <img sizes="mediaquery imageWidth" srcset="imagesrc imageWidth, imagesrc imageWidth" />
sizes + srcset
sizes 负责用 mediaquery 针对 device width 等来表示使用多少 width 的图片. 这和写 css responsive 是完全同一个概念
srcset 则负责写入所有可以使用的图片,并且写上所有图片的宽.
游览器匹配 sizes 的 mediaquery 后会找到你想要的 image width, 然后依据 device 的 retina 来乘于 image width, 这时在通过这个 width 去寻找真确的 image src
这样就不会造成浪费了.
响应式图片 (responsive image)的更多相关文章
- 【读书笔记《Bootstrap 实战》】3.优化站点资源、完成响应式图片、让传送带支持手势
A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...
- 【Bootstrap】3.优化站点资源、完成响应式图片、让传送带支持手势
A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...
- CSS 与 HTML5 响应式图片
什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS3 响应式图片 对于很 ...
- CSS与HTML5响应式图片
随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...
- 如何使用 HTML5 的picture元素处理响应式图片
来自: http://www.w3cplus.com/html5/quick-tip-how-to-use-html5-picture-for-responsive-images.html 图片在响应 ...
- web响应式图片设计实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- bootstrap中如何让响应式图片(img-responsive)水平居中
我们在用bootstrap排版内容的时候,有的时候在内容中需要图片水平居中对齐. 一般情况下,我们的图片都使用了 .img-responsive 类来实现响应式图片.如果需要实现响应式图片水平居中,那 ...
- 响应式图片srcset学习
响应式图片srcset全新释义sizes属性w描述符 先转再看
- 继续送假期干货——响应式图片工具smartImg
中午看<众妙之门>看到一个响应式图片处理工具(点此查看)的介绍,然后就心血来潮想着不妨自己写一个基于JQ的吧,于是就又有了这么一个干货给大家. smartImg 的全部文件可以从我的Git ...
随机推荐
- Springboot项目修改html后不需要重启---springboot项目的热部署
一.spring-boot-devtools 在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</gr ...
- 成绩统计程序(Java)
我的程序: package day20181018;/** * 成绩统计系统 * @author Administrator */import java.util.Scanner;//提供计算机直接扫 ...
- kali linux fuzz工具集简述
模糊测试是一种自动化软件测试技术,涉及提供无效,意外或随机数据作为计算机程序的输入. 然后监视程序是否存在异常,例如崩溃,内置代码断言失败或潜在的内存泄漏. 通常,模糊器用于测试采用结构化输入的程序. ...
- phpMyAdmin - Error
centos7.5 原因:权限问题 解决方法:授权 [root@web01 code]# groupadd -g666 www [root@web01 code]# useradd -u666 -g6 ...
- UVA11417 GCD
题目地址 题目链接 题解 先讨论任何没有限制的情况 \[ \large { \begin{aligned} &\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)\\ &a ...
- (zhuan) Prioritized Experience Replay
Prioritized Experience Replay JAN 26, 2016 Schaul, Quan, Antonoglou, Silver, 2016 This Blog from: ht ...
- Docker run 出现问题如何调试?
docker run -ti 3f5dd697cc83 /bin/bash #进入image的目录 ls -l #列出所有目录 dotnet run WestWin.Ads.Crawler.WebAp ...
- facebook api之Access Tokens
Access Tokens When someone connects with an app using Facebook Login and approves the reqest for per ...
- Excel 导出通用类
public class ExportToExcelHelper { public static void ExportExcel(DataTable dt) { try { //创建一个工作簿 IW ...
- Python 基础 Python是什么
1.Python 是一门高级的.面向对象的,解释性,脚本语言.