【20190305】CSS-响应式图片:srcset+sizes,picture,svg
响应式图片可以根据不同的设备屏幕大小从而选择加载不同的图片,从而节省带宽。实现响应式图片有三种方法:srcset+sizes属性、picture标签、svg
1. srcset+sizes
srcset是img标签的一个属性,它可以提供一系列图片源,供浏览器在不同设备屏幕大小和像素密度下选择适合的图片。W3C规范中的描述:srcset属性允许作者根据不同分辨率或不同视窗尺寸提供多个不同分辨率图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。
使用语法如下:
<img src="selina.jpg" alt="alt"
srcset="100-s1.jpg 100w,300-s1.jpg 300w,600-s2.jpg 600w,800-s2.jpg 800w"
sizes="(max-width:500px) 300px,(max-width:1000px) 500px,100vw"/> <img src="selina.jpg" alt="alt"
srcset="100-s1.jpg 1x,600-s2.jpg 2x" />
其中sizes的媒体条件中的px可替换成rem、em等相对单位,或vw相对于视口的百分比大小。
srcset中提供了一系列图片源,每个资源之间用逗号隔开,资源由图片的url与显示条件构成。
- 以w结尾表示条件为像素,如第一条语句中表示100-s1的固定宽度为100像素,当设备视口宽度小于等于100px时选择100-s1图片,当设备视口宽度小于等于300px时选择300-s1图片。
- 以x结尾表示条件为像素密度,第二条语句表示当设备像素密度为1时选择100-s1图片,当设备像素密度为2时选择600-s2图片。
第一条语句中的sizes属性是为响应式图片设置的断点,它表示怎样根据视口宽度来选择图片,如果不设置sizes,那么它默认的是100vw,也就是永远根据100%视口宽度来选择图片源。sizes属性值一般由一系列媒体条件构成,媒体条件后跟一个该条件下的图片预估宽度,每个条件以逗号隔开,最后没有媒体条件的预估宽度表示默认值。
第一条语句中的sizes表示当设备视口宽度小于等于500px时,当前预估图片尺寸为300px,那么浏览器将会在图片源中查找符合条件的图片,并且查找的原则首先是图片固定宽度应该大于等于预估宽度,然后图片宽度是最接近预估宽度的。当媒体条件都不满足时,就采用默认值100vw,也就是将100%视口宽度作为预估宽度来选择图片。
另外由于浏览器验证媒体条件时如果第一个条件为真,那么就会停止验证,因此媒体条件的顺序也应该按照从小到大的规律排列,否则后面的小范围条件将会不起作用。
目前大多数浏览器都支持srcset属性,但是我自己测试的在chrome 72.0上的显示效果很奇怪,没搞懂怎么回事。
srcset:srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.w3cplus.com/responsive/responsive-images-part-1-using-srcset.html © w3cplus.com
srcset:srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.w3cplus.com/responsive/responsive-images-part-1-using-srcset.html © w3cplus.com
srcset:srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.w3cplus.com/responsive/responsive-images-part-1-using-srcset.html © w3cplus.com
srcset:srcset属性允许作者根据不同分辨率或不同的视窗尺寸提多个不同分辨图像。用户代理会根据之前获取的任何资源做选择,从而避免多个资源加载浪费带宽和相关性能问题。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.w3cplus.com/responsive/responsive-images-part-1-using-srcset.html © w3cplus.com
2. picture标签
picture元素是HTML5的新特性,它允许你放置多个source标签,指定不同的图像文件名,根据媒体条件(视口高度viewport height、宽度width、方向orientation)或像素密度来选择图片进行加载。
使用语法如下:
<picture>
<source media="max-width:800px" srcset="image800.jpg 800w,
image1406.jpg 1406w
" sizes="(min-width:530px) calc(100vw - 96px),
100vw"
> <img alt="aaa"
src="689.jpg" srcset="689.jpg 689w,
1378.jpg 1378w,
500.jpg 500w
1000.jpg 1000w" size="(min-width:1066px) 689px
calc(75vw - 137px)"
>
</picture>
当符合source标签中的media条件时,选择source中的图片源,否则使用img中的图片源。
picture元素内部的source与img的关系像是相片与相框的关系,相框带有一个底图,当你有很多不同尺寸的图片时,你试图找到第一个合适尺寸的照片放到相框里,如果没有,就不放照片而用相框本身的底图,picture就是告诉你这个相框只能在这些图片里找合适的。
另外还支持选择不同格式的图片:
<picture>
<source type="image/webpp" srcset="snow.webp">
<img src="snow.jpg" alt="a cat">
</picture>
如果浏览器支持webp格式,则加载snow.webp,否则加载jpg图片。
目前大多数浏览器也已支持picture,如果有特殊情况,可以使用picturefill工具来兼容各个浏览器。
3. svg
通过img标签插入svg矢量图也可以达到实现响应式图片的效果,但是这种方法不能用JavaScript来操作图像,而且只能使用内联css样式来控制图像,也不能使用css伪类。
或直接在HTML中插入svg代码,svg代码应该包含在<svg></svg>中。
最后可以通过iframe嵌入svg文档。
【20190305】CSS-响应式图片:srcset+sizes,picture,svg的更多相关文章
- 响应式图片srcset学习
响应式图片srcset全新释义sizes属性w描述符 先转再看
- CSS与HTML5响应式图片
随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...
- html中的响应式图片
html中的响应式图片 img sizes 指定屏幕尺寸 srcset 指定可以使用的图片和大小,多个使用逗号分隔,需要指定图片的真实宽度,个人觉得没有picture好用 <img sizes= ...
- css3响应式图片
响应式图片指用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费. 同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. 常用的实现方式: 1.用srcset和size ...
- CSS 与 HTML5 响应式图片
什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS3 响应式图片 对于很 ...
- 如何使用 HTML5 的picture元素处理响应式图片
来自: http://www.w3cplus.com/html5/quick-tip-how-to-use-html5-picture-for-responsive-images.html 图片在响应 ...
- picturefill + picture 标签 实现兼容性很棒的 响应式图片 自适应 屏幕大小
polyfill 它是一个能够补齐浏览器兼容性问题的一个东西,使用到的<picture></picture>标签 ,并不是所有浏览器都支持,为了实现更好的兼容效果,这里就使用到 ...
- 【读书笔记《Bootstrap 实战》】3.优化站点资源、完成响应式图片、让传送带支持手势
A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...
- web响应式图片设计实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- 【Bootstrap】3.优化站点资源、完成响应式图片、让传送带支持手势
A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...
随机推荐
- C# 数组结构
数组结构: Array :在内存上是连续分配的,而且元素类型是一致的: 特点:是读取快 可以坐标访问 但是增删慢,长度不能变 比如 int[] intArray=new int[20]; intArr ...
- sqlite3数据库教程
1.sqlite3安装(命令行): sudo apt-get install sqlite3 2.图形界面查看工具安装: sudo apt-get install sqlitebrowser 3.命令 ...
- 面试作业之浅析京东促销活动核心模型 - DDD
前言 京东作为中国最大的自营式B2C电商平台,提供一站式综合性购物,服务亿万家庭,涵盖3C.家电.消费品.服饰.家居家装.生鲜和新通路(B2B),满足了消费者的多元化需求.每天都会发布相关的促销活动, ...
- Windows环境安装运行:Angular.js
一.下载 Node.js https://nodejs.org/en/download/ 检测版本: cmd: node -v 二.安装typescript和typings 使用 Node.js 包管 ...
- MyBatis 处理关系运算符
MyBatis mapper文件是xml文件,使用关系运算符需要进行转义. 关系运算符 转义后字符 < < <= <= > > > >=
- Python内置函数(58)——slice
英文文档: class slice(stop) class slice(start, stop[, step]) Return a slice object representing the set ...
- 说一说MVC的CustomHandlerErrorAttribute(五)
九月第一篇,呵呵 前言:最近刚入职了一家公司,上司让我维护一个项目,我接手了看了一下项目,try catch 严重影响我的视觉,我直接通过vs插件将其try catch全部替换掉占位符,呵呵. 所以我 ...
- NMF学习练习:做电影推荐
NMF是很久以前学的,基本快忘没了,昨天YX提出来一个关于NMF(同音同字不同义)的问题,才又想起来. 自己的学习笔记写的比较乱,好在网上资料多,摘了一篇,补充上自己笔记的内容,留此助记. NMF概念 ...
- 面试小知识:MySQL索引相关
前言 本模板主要是一些面试相关的题目,对于每一道问题,我会提供简单的解答,答案的来源主要是基于自己看了各方资料之后的理解,如果有错的,欢迎指点出来. 1. 什么是最左前缀原则? 以下回答全部是基于My ...
- 从无到有-在create-react-app基础上接入react-router、redux-saga
搭建项目框架 新建项目 执行如下代码,用create-react-app来建立项目的基础框架,然后安装需要用到的依赖. $ npx create-react-app my-test-project $ ...