博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
响应式图片(自适应图片)
阅读量:7200 次
发布时间:2019-06-29

本文共 1112 字,大约阅读时间需要 3 分钟。

在这篇文章中讨论的新特性 —
srcset/sizes/<picture> — 都已经被新版本的现代浏览器和移动浏览器所支 持(包括Edge,而不是IE)。

解决的问题

  1. 分辨率切换问题:小屏手机屏幕上显示网页,那么没有必要在网页上嵌入pc端的大图片,浪费带宽
  2. 艺术方向问题:当网站在狭窄的屏幕上观看时,显示一幅包含了重要细节的裁剪版图片,而不是显示pc端的大图,这样会显得图片缩小,重要地方不突出

分辨率切换问题

不同分辨率加载不同尺寸的图片

Elva dressed as a fairy

需要说明的几点如下:

  • srcset语法: "图片路径 物理像素, 图片路径 物理像素, ....."
  • size: "媒体查询 css像素"
  • src: 当浏览器不支持上面的属性的时候,默认加载这里

加载的流程如下:

  1. 查看设备宽度
  2. 检查sizes列表中哪个媒体条件是第一个为真
  3. 查看给予该媒体查询的槽大小
  4. 加载srcset列表中引用的最接近所选的槽大小的图像

在很多pc端上,1px=1w

不同的分辨率加载相同的尺寸

Elva dressed as a fairy     img {    width: 320px;}

一般情况下当我们给img设置固定的宽的时候,为了在不同的dpr设备上显示相同的大小,可以配合x来,例如1.5x代表dpr为1.5的设备

艺术问题

Chris standing up holding his daughter Elva

需要说明的几点:

  1. source当中的也可以使用srcsetsizes属性
  2. 必须提供一个img元素,以备浏览器不支持的时候使用

为什么不使用cssjavaScript来完成图片替换

因为你不能先加载好 <img> 元素后, 再用 JavaScript 检测视图的宽度,如果觉得大小不合适,就动态地加载小的图片替换已经加载好的图片,这样的话, 原始的图像已经被加载了, 然后你也加载了小的图像, 这样的做法对于响应式图像的理念来说,是很糟糕的。

另一种方式svg

位图由以像素为单位的宽和高表示,如果位图显示的尺寸大于原始尺寸,一张较小的位图看来会有颗粒感(然而矢量图不会这样)

但是它不适用于所有的图片,在某种程度上是这样的——它们无论是文件大小还是比例都合适,无论在哪里你都应该尽可能的使用它们。

虽然在简单图形、图案、界面元素等方面较好,但如果是有大量的细节的照片,创建矢量图像会变得非常复杂。加载会消耗更多的带宽。

使用现代图像格式

有很多令人激动的新图像格式(例如WebPJPEG-2000)可以在有高质量的同时有较低的文件大小。然而,浏览器对其的支持参差不齐。

为了兼容老旧浏览器,我们可以在<source>标签当中指定MIME类型,使用type属性,并在srcset当中指定相应格式的图片

regular pyramid built from four equilateral triangles

转载地址:http://uqzum.baihongyu.com/

你可能感兴趣的文章
测不准原理?记一次Guava队列问题的排查
查看>>
可以快速保存、访问和粘贴文本片段的Unity漂亮工具
查看>>
支付宝体验设计精髓. 导读
查看>>
阿里云文件存储助力悦跑圈上云之成功案例
查看>>
MySQL · 8.0.0新特性 · ROLE
查看>>
使用Python实现Hadoop MapReduce程序
查看>>
获取 iOS模拟器 里的安装包
查看>>
android p 模拟器开启刘海模式
查看>>
Oracle 11G在用EXP 导出时,空表不能导出解决
查看>>
为TWaver HTML5的Tree组件增加鼠标滑过效果
查看>>
怎样收集有用的QQ号码为我所用
查看>>
web开发小记2:js触发css过渡
查看>>
hive-极致优化(二)-解释计划类别
查看>>
ajax跨域
查看>>
webpack4配置详解之常用插件分享
查看>>
phalcon7 阅读理解
查看>>
消息中间件 RocketMQ源码解析:Message顺序发送与消费
查看>>
PHPCMS自带框架学习
查看>>
spark源码学习
查看>>
git pull/push 因提交文件内容过大而失败的解决方案
查看>>