响应式图片

devicePixelRatio推荐阅读:https://developers.google.com/web/fundamentals/design-and-ux/responsive/images?hl=zh-cn

Img 的 sizes 和 srcset

<img src="100.png" sizes="50%" srcset="100.png 100w, 200.png 200w, 400.png 400w">

sizes

  这个属性可以写一些css,例如“100px”,“50vm”,‘20rem","30vm",甚至是媒体查询 "(min-width: 600px) 25vw, (min-width: 500px) 50vw, 100vm"。

srcset

  顾名思义,就是一堆图片来源的预设。例如:“100.png 100w”, 表示预设 100.png 这张图片,并且告诉浏览器,这张图片的宽度是100。

  我们来看看mdn的描述:

 这个“x”,其实就是我们的像素密度(window.devicePixelRatio),一般windows的机子都是1,苹果的机子是2(得益于它们的Retina屏)。

选择策略

以上面的例子来说:<img src="100.png" sizes="50%" srcset="100.png 100w, 200.png 200w, 400.png 400w" />

1. img 的 sizes 是父元素的 50%(注意这个 sizes 和实际渲染的大小无关),假设父元素宽度是210px,我们计算到 sizes 是 105px。

2. 计算每一张候选图片的 “x" 值,100.png --> 100/105,200.png --> 200/105,400.png --> 400/105 

3. 假设我们是用不起 macbook 的穷人,我们的 devicePixelRatio 是 1,也就是说我们屏幕的 “x”值 就是 1

4. 发现比较接近 1 的有 2 个:100/105 < 1 < 200/105

5. 往上取最近的一个: 200.png --> 200/105 (因为如果选100的话,浏览器就认为把100px放到105px中显示,图片会失真,因此,浏览器会选一张不会失真的图片)

ps: 是不是觉得很难理解,没关系。因为这个很难用,所以 H5 它又推出了 Picture 标签。

 

Picture标签

Picture是H5的新标签,除了IE,其他浏览器都基本兼容了,不用考虑IE的童鞋,推荐使用Picture。

它抛弃了 sizes 属性,srcset 也不用 w 单位了,直接用媒体查询和像素密度来作为判断依据。

这样就清晰明了多了。

<picture>
  <source media="(min-width: 800px)" srcset="head.jpg, head-2x.jpg 2x">
  <source media="(min-width: 450px)" srcset="head-small.jpg, head-small-2x.jpg 2x">
  <img src="head-fb.jpg" srcset="head-fb-2x.jpg 2x">
</picture>

上面的例子中:

如果浏览器宽度至少为 800px,则将根据设备像素密度使用 head.jpg 或 head-2x.jpg

如果浏览器宽度在 450px 和 800px 之间,则将根据设备像素密度使用 head-small.jpg 或 head-small-2x.jpg

对于屏幕宽度小于 450px,且不支持 picture 元素向后兼容的情况,浏览器将渲染 img 元素,因此要始终包含该元素。

 

转载于:https://www.cnblogs.com/amiezhang/p/11484596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值