responsive-images-youre-just-changing-resolutions-use-srcset
翻译原文:
https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-srcset/
最近在看css3,找了篇国外的原文,尝试翻译一下,还有一点儿自己的测试,总算理解了,希望你们看完这篇文章也会理解。
如果你在弄响应式的图片(不同的HTML有不同的images)并且你只是用同一张图片在不同的页面间切换,你只需<img> 里面添加srcset 属性,就像这样:
<img src=" small.jpg " srcset=" medium.jpg 1000w, large.jpg 2000w " alt=" yah ">
这个srcset用起来可简单,比<picture> 的<source>里面添加准确的media属性方便多了,而且以后对于浏览器设置和改善更为方便
有了srcset属性,浏览器会自动帮你选择最佳的图片哦
在上面的例子里面,我们指定了图片以及相应的大小,浏览器就会选择最佳的图片了
M先生用数学说明浏览器是如何工作的。
假设你有一个屏宽320px, 1x(非retina)(貌似指的是像素密度)显示器。你手上的图片如下
small.jpg(500 px), medium.jps(1000px) 以及 large.jpg(2000px)
浏览器就:让我替你速度算一下
500 / 320 = 1.5625
1000 / 320 = 3.125
2000 / 320 = 6.25
Ok,我是1x的显示(display)(貌似指的是像素密度),1.5625 最近进1,虽然比我要的大了点,不过貌似是最好的选择了。
现在有另外一个人访问我的站点,用的是320px 但是是 retina(2x)的显示器,浏览器还是像上面那样计算,不过,
Ok, 我是2x显示(display)(貌似指的是像素密度),我不要1.5625了因为太小了(小于2),我要用3.125的那张图
看到有多好用了吧!浏览器自动选择哦!
---------------
说了一段srcset比<picture>方便的理由:
浏览器自动选择,如果用picture的话则没有灵活性
Also, size :
我们没有谈到 sizes属性,有时候不用这个属性也挺好的。默认的来说, sizes = "100vw"
意思是:
我认为当你选择图片的时候,我希望图片是满视图(viewport)显示
例子一:
<img width="587" height="320" src="http://www.cocos.com/wp-content/uploads/2016/08/Cocos-Creator-t.png" class="homepage-thumb wp-post-image" alt="内部分享 | 一位开发者眼中的Creator" title="内部分享 | 一位开发者眼中的Creator" srcset="http://www.cocos.com/wp-content/uploads/2016/08/Cocos-Creator-t.png 587w, http://www.cocos.com/wp-content/uploads/2016/08/Cocos-Creator-t-300x164.png 300w" sizes="(max-width: 587px) 100vw, 587px">

上面代码的意思是当浏览器屏幕宽度小于587px,图片就显示100%(vw是viewport)的宽度,如果屏幕宽度大于800,那么就587px.
1: 假如屏幕宽度是 600px(大于max-width 587px),那么我viewport就是587px,选择587px。
2: 假如屏幕宽度是250px(小于max-width 587px),那么vw就是250px,选择300/250 || 587/250 取接近1的那个(需要大于1)。
例子二:
<img style="width:auto;" srcset="http://www.w3schools.com/css/img_smallflower.jpg 214w, http://www.w3schools.com/css/img_flowers.jpg 460w" sizes="(max-width: 700px) 212px,460px">

图片是w3c上面的,你们可以在本地更改sizes的参数测试一下。
1: 当屏宽大于700px时候,img大小为460px,屏幕vw小于700px,img大小为212px。
2: 当默认为1x时候,图片宽度/ img宽度一定要大于1,所以如果img宽度为215px>214px,大于第一张jpg(214px),那么会一直显示第二张(460w)的图片。
3: 当默认为2x时候,要改成下面
<img style="width:auto;" srcset="http://www.w3schools.com/css/img_smallflower.jpg 214w, http://www.w3schools.com/css/img_flowers.jpg 460w" sizes="(max-width: 700px) 107px,230px">

关于图片后面1x 2x 3x 4x的意思:
下面是一个测试显示器像素密度的一个网址:
https://webkit.org/demos/srcset/
<img src="data:image-src.png" srcset="image-1x.png 1x, image-2x.png 2x, image-3x.png 3x, image-4x.png 4x">
用电脑就是1x的图
用苹果就是2x的图
用再高清点的就是3x的图
下面是为移动端设备设置viewport的tag,有了它就省了很多麻烦就对了。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>

CSS3的srcset size属性1x 2x 3x相关推荐

  1. 【iOS】iOS开发之使用Mac自动操作制作@1x@2x@3x图片(切图)

    iOS开发中,会要求导入@1x.@2x和@3x: 使用@1x格式:iPhone3GS 使用@2x格式:iPhone 4,4S,5,5S,5C,SE,6,6S,7,8,XR 使用@3x格式:iPhone ...

  2. iOS中图片@1x @2x @3x的意思

    在xcode的images.xcassets中丢入图片后,这些图片会被默认划分为三种尺寸. 假设图片名为bdlogo.png 则这张图片会被自动填充到1x的位置 假设图片名为bdlogo@2x.png ...

  3. [iOS @2x @3x pt px 分辨率]

    @2x @3x 什么时候用? 先看各个机型数据图,以这个为标准. 对照的pt / px分辨 就是 尺寸(point)/分辨率(像素点) 我们先看何为pt px pt就是point,是印刷行业常用单位, ...

  4. 移动APP切图术语解读:什么是@1x @2x和@3x【转自25学堂】

    现在很多APP设计师小白都会稀里糊涂的在解读这些缩放1倍,扩大2倍或者说扩大1.5倍 等等之类的言论. 大家谈论的却是也没有错.如果你搭配上@1x @2x和@3x的话,你的理解就有问题啦! 首先我们看 ...

  5. CSS3之size属性

    width: 说明:           设置元素的宽度 作用:           width属性不包括填充,边框,或页边距 常用值:           (auto):默认值,浏览器会计算出实际的 ...

  6. iOS @2x @3x图的区别和理解

    苹果官方网页介绍: Icons and Images - Apple Developer iOS用于在屏幕上放置内容的坐标系统是基于点的度量,点映射到屏幕上的像素.标准分辨率显示器的像素密度为1:1( ...

  7. element select 自动展开_原生js 让select下拉框自动展开 可用size 属性来代替展开动作...

    找遍全网都没一个比较好的例子!!! 什么获得焦点事件,或者添加一个点击事件都不能使下拉框自动展开 最后用标签的siz属性 定义和用法 size 属性规定下拉列表中可见选项的数目. 如果 size 属性 ...

  8. css3中的box-sizing属性

    盒子宽度.高度计算公式: css元素宽度 = width + padding + border css元素高度 = height + padding + border css3之前,当我们需要呈现一个 ...

  9. 总结:实例化SqlParameter时,如果是字符型,一定要指定size属性,还有制定具体的类型...

    源地址 在csdn上逛看到了这篇帖子,值得学习,就需要记录下来,转载给大家看! 以前在实例化SqlParameter时,通常都是用下面的语句,没有设置size属性: new SqlParameter( ...

最新文章

  1. 找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南
  2. 在64位的linux中运行32位的应用程序
  3. IOS之Swift的CoreData入门使用案例
  4. Unity SRP自定义渲染管线 -- 4.Spotlight Shadows
  5. 如何寻找无序数组中的第K大元素?
  6. 罗永浩直播带货被吐槽不是全网最低价 本人亲自回应了
  7. 如何退出python程序_python怎么退出程序
  8. [ Coding七十二绝技 ] 如何利用Java异常快速分析源码
  9. x5cloud云平台---------------网络彩讯
  10. Ubuntu部署KVM服务器
  11. 51单片机学习笔记【九】——红外通信实验
  12. WELCOME TO `ICE WORLD`
  13. DNA测序技术发展史:一代、二代、三代测序技术简要原理及比较
  14. 微信H5音乐自动播放
  15. 打开计算机的方法有哪些,dmg文件怎么打开 常见打开方法有哪些
  16. 如何把root登陆的shell改为csh?
  17. android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器
  18. css-浮动布局与样式规则
  19. 个人简历的1000+篇文章总结
  20. 2021年中国皮革行业现状分析:销售收入同比增长8.4%[图]

热门文章

  1. ios android 游戏延迟,《英雄联盟手游》iOS延迟上线原因解析 ios为什么推迟上线...
  2. 计算机平面设计考试试题及答案,计算机平面设计试题(带答案)
  3. 适合ipad的python编程软件-涨知识!iPad还可以运行Python代码
  4. Navicat 15 设置深色主题
  5. Vue 高频面试题总结05 内附答案
  6. 在平面设计中,怎样利用背景让主体明显
  7. 该设备无法启动另类解决方案
  8. 如何成为躺着赚钱的科学家
  9. 如何做一个微信公众号文章批量导出的下载器
  10. retrievefile java_java - FTPClient.retrieveFile返回false,但仍然下载了文件 - 堆栈内存溢出...