WebKit已经发布了一些官方新闻,终于落实srcset的属性。作为W3C的响应图像社区组的主席,我一直希望这一刻到来有一段时间了。所以,对所有参与方是个好消息,用户浏览网页时的体验是最重要的。

所有事项有关的到“有求必应图像”:它是复杂的,它可能很难跟上所有的噪音信号。下面是你需要知道什么。

它有什么作用呢?

正如最初提议,允许开发人员指定的图像属性,根据用户的显示屏上的像素密度来设置srcset属性组合:

<img src="low-res.jpg" srcset="high-res.jpg 2x">

这标记太吓人了,在纯英文:

“使用low-res.jpg,这IMG作为源低分辨率显示器上,任何浏览器不明白的srcset属性。使用high-res.jpg的作为源这个IMG了解的srcset属性的浏览器上的高分辨率显示。“

事情开始看起来很吓人,有一小会儿。部分由于高分辨率设备的平均网站现在几乎整个兆字节的图像。现在,开发人员可以针对用户对高分辨率显示器具有高分辨率的图像源。同时,较低的像素密度显示屏上的用户不会背负下载一个巨大的高清晰度图像的带宽成本,没有看到任何好处。

使用JavaScript我们能不能做到这一点?

表面上,srcset的是不是做什么特别的东西,它选择一个合适的源属性和交换内容IMG标签的SRC。交换的内容属性,是自远古以来,我们一直在做的JavaScript。90年代以来,无论如何。所以,这是什么让我们获得?

实际上,我们尝试这种方法上BostonGlobe.com,任何形式的“响应图像”的解决方案利用较早的网站之一。在几个主要的浏览器越来越具有侵略性的预取,请求一个图像的src很久以前我们有机会申请任何自定义脚本:我们将最终使我们每一个图像显示两个请求,打败整个目的。我记录了一些其他地方的这些努力,所以我会饶你血淋淋的细节在这里。

利用CSS我们能不能做到这一点?

“是”和“否”与背景图像,我们可以做到这一点很容易不够,像素密度有关媒体查询结合使用。srcset由WebKit的实现是非常相似,最近的图像设置功能,他们推出了CSS 图像设定允许你指定一个背景图像的来源和决议清单,哪一个是最合适的很熟悉的东西,让浏览器作出决定。我们没有什么非表象的内容图像沿着这些线路,然而,到现在为止。

使用CSS来管理内容的图像被打破,默认情况下,保持我们关注的问题分开。这是一个完美感的方法,可能使一个快速演示页面的范围内,但看台上迅速失控,在生产网站。我们的CMS生成背景图像的样式表的分数就没有野餐,从开发商的角度来看。然而,更糟糕的是,是,它会导致样式表和图像的请求,用户可能并不需要,除非做得非常,非常仔细。除此之外,它使得我们的图像,没有双关语意人迹罕至的用户浏览辅助技术的方式。

最接近我们已经找到了一个基于CSS的方法将基于在HTMLs数据属性值设置交换图像的来源,使用一些拟议的CSS技巧,其中大部分只是理论上的,可能永远不会发生。但是,它仍然没有占到双下载高分辨率和低分辨率图像资产相同的问题,我们遇到的JavaScript。即使像尼古拉斯应该成为我们的技术,我们仍然会面临同样的问题,许多基于脚本的解决方案:尝试解决浪费,冗余请求。

它是做什么的关于带宽?

无论屏幕密度,也有一些分辨率较低的图像源的情况下,可能是可取的:视网膜MacBook Pro的拴到3G,例如,或不稳定的会议WiFi网络,这两种情况下,我们都一直在大量的倍。

除了 ​​简单地为我们提供了一种内嵌速记分辨率媒体查询,对带宽的srcset账户,在一定意义上。它埋在神秘的规范发言,但真正令人兴奋的方面srcset之一是,它的定义为一组建议的浏览器。然后,浏览器可以使用环境的启发式或用户的喜好来决定,它要取一个较低的分辨率的图像,尽管高解析度显示:设想一个偏好高清晰度图像,只要求您的手机浏览器,允许同时连接到WiFi,或手动浏览器偏好,让您低分辨率的图像时,只要求你的连接是摇摇欲坠。

理想情况下,我们很乐意只发送这些图像的设备是专门为每个屏幕分辨率调整大小。我们的目的是节省带宽,使图像下载更快针对性的屏幕上。à 响应图像常见的使用案例。

这不是WebKit的的早期srcset实现的一部分,但它确实铺平道路,为他们的除了我们的标记,而无需任何改动。我们开发者,可以放心地使用srcset今天,这些优化可能出现“免费”在未来。

这是什么意思的图片元素?

这里的事情变得有趣。

由WebKit实施的版本srcset,匹配原建议使用srcset,敏感的图像社区集团一直致力的版本。我们可以认为这个srcset化身速记媒体查询有关决议的整体转换,一个关键的区别在哪里,浏览器可以选择覆盖适用源根据用户的喜好。

虽然此实现匹配原来srcset建议,,当前srcset规格试图扩充的语法,一些用例的图片元素满足,使用microsyntax的执行了一些,但远不及媒体查询的功能。

<img src="fallback.jpg" srcset="small.jpg 640w 1x, small-hd.jpg 640w 2x, large.jpg 1x, large-hd.jpg 2x" alt="…">

在我们看来并不理想,这样的标记图案。我们限制相当于最大宽度媒体查询,像素,一个的高深莫测microsyntax,为了复制媒体查询功能。幸运的是,既不是Web开发人员,也没有浏览器的代表都特别喜欢这种过度的语法希望,它永远不会看到光明的一天。

图片元素的存在是为了解决这些应用情况下,使用更灵活的和熟悉的语法。图片使用媒体源元素上的属性,类似的视频元素。这使我们能够针对图像源因素的组合:视区高度和/或宽度,以像素或EM Ş,可以使用最小或最大的值,就像在我们的CSS媒体查询。

<picture>
<source src="med.jpg" media="(min-width: 40em)" />
<source src="sm.jpg" />
<img src="fallback.jpg" alt="" />
</picture>

picture记住这的减少srcset语法规范写的,所以它可以用于图片的源元素以及IMG元素。

<picture>
<source srcset="med.jpg 1x, med-hd.jpg 2x" media="(min-width: 40em)" /><source srcset="sm.jpg 1x, sm-hd.jpg 2x" /><img src="fallback.jpg" alt="" />
</picture>

在讨论会上,两个标记模式给了我们一个令人难以置信的灵活性,根据它们的上下文,什么样的影像来源,我们向用户提供服务。

因此,这是好消息。www.rswebun.com

虽然srcset WebKit的实施并没有解决所有响应的图像用例,但它确实代表一个早该有的解决方案,希望许多第一次迈进了一大步。

让我们希望遵循WebKit的其他浏览器,因为它最初提出的率先实现此功能,图片在不同分辨率的浏览工具上自动响应交互。

WebKit的已实施srcset图像响应属性的更多相关文章

  1. Art-Directing SVG图像viewBox属性

    Art-Directing SVG图像viewBox属性 作者:彦子 日期:2015-06-02 点击:992 svg 译者注:根据Google Dev文档的解释,Art Direction在这篇文章 ...

  2. 详细解读XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度

    本文主要参考:MDN 分析并操作 responseXML属性 如果你使用 XMLHttpRequest 来获得一个远程的 XML 文档的内容,responseXML 属性将会是一个由 XML 文档解析 ...

  3. CSS 背景图像 background属性简写

    background属性简写 background属性可以像margin padding属性一样,有简写方法,它的简写顺序是: background-color background-image ba ...

  4. CSS背景图像位置属性background-position百分比详解

    百分比值同关键字很接近,但其操作方式不一样.用百分比值来居中一幅背景图像,也很简单: body { background-image;url(beijing.gif); background-repe ...

  5. java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)

    之前一直以为 this关键字 是指调用者对象,但是这次才真正理解,this代表当前对象,但是指向调用者对象,其实就是多态的用法,如下所示:B 继承了 A,在B 中调用A类的方法,在A 中用this 访 ...

  6. css样式(二)(伪类 | 伪元素 | 导航 | 图像拼合 | 属性选择器 )

    一.rgb值: RGBA 颜色 RGBA 颜色值得到以下浏览器的支持:IE9+.Firefox +.Chrome.Safari 以及 Opera +. RGBA 颜色值是 RGB 颜色值的扩展,带有一 ...

  7. JavaScript对象的创建之外部属性定义方式(基于已有对象扩充其属性和方法)

    var person = new Object(); person.name = "luogk"; person.age = 33; person.say = function() ...

  8. 遍历ArcMap已加载数据的属性

    import arcpy f = open("D:\workspace\coords.txt","w") with arcpy.da.SearchCursor( ...

  9. sql server对已创建的表增加属性(自动增序)

    新建此表时把ID设为INT类型,然后设Identity为yes,种子为1递增就可以了.如果这张表已经建了,你在最后加一个字段叫ID,然后和上面一样操作,然后保存即可自增.(一定要设置完在保存) alt ...

随机推荐

  1. Web漏洞挖掘之网络信息探测

    我们在搜集目标系统信息的时候主要需要搜集的是:目标服务器系统信息(IP,服务器所用系统等):目标网站子域名:目标网站(服务器)的开放端口:目标域名信息.目标网站内容管理系统(CMS)等. 一.子域名搜 ...

  2. HDU 3374 String Problem(最大最小表示+KMP)题解

    题意:给你一个字符串,这个字符串可以这样操作:把第一个字符放到最后一个形成一个新的字符串,记原式Rank为1,每操作一步Rank+1,问你这样操作得出的最小字典序的字符串的Rank和这样的字符串有几个 ...

  3. 支线任务2-Basic Calculator

    问题描述: 题目要求我们实现一个简单的加减计算器,计算一个表达式的值,表达式除了数字之外还可能会含有括号,加减符号以及空格. 思路: 其实看到这个题自然就会想到利用后缀式求表达式值的算法作业题,况且这 ...

  4. BZOJ 3123 【SDOI2013】 森林

    题目链接:森林 这道题想法很显然.既然只有加边而没有删边,那么每次启发式合并就可以了.查询路径\(k\)小似乎需要主席树,那么把主席树和倍增表一起暴力重构就好了. 然后发现这样的空间复杂度是\(O(n ...

  5. codevs 2216 行星序列 线段树+延迟标记(BZOJ 1798)

    2216 行星序列  时间限制: 2 s  空间限制: 256000 KB     题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始, ...

  6. 为什么需要消息队列MQ?

    主要原因:是在高并发情况下,由于来不及同步处理,请求往往会发生堵塞,比如诸多的insert.update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积很多,从而触发大量的to ...

  7. UVA-1614 Hell on the Markets(贪心+推理) (有待补充)

    题目大意:一个整数序列a,1≤a[i]≤i.问能否通过在一些元素前加上负号,使得整个序列和为0. 题目分析:贪心.贪心策略:每次都先选最大的元素加负号(或保留,不加负号). 贪心依据:对于1≤a[i] ...

  8. git源代码管理工具

    git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...

  9. JavaScript学习总结(二十三)——JavaScript 内存泄漏教程

    参考教程:http://www.ruanyifeng.com/blog/2017/04/memory-leak.html 一.什么是内存泄漏? 程序的运行需要内存.只要程序提出要求,操作系统或者运行时 ...

  10. SPOJ COMPANYS Two Famous Companies 最小生成树,二分,思路 难度:2

    http://www.spoj.com/problems/COMPANYS/en/ 题目要求恰好有k条0类边的最小生成树 每次给0类边的权值加或减某个值delta,直到最小生成树上恰好有k条边为0,此 ...