写点什么

Chrome 38 通过<picture>元素支持 Art Direction

  • 2014-10-22
  • 本文字数:1310 字

    阅读完需:约 4 分钟

Google 在最近发布的 Chrome 38 中,增加了对元素的支持,让开发者能够针对不同类型的媒体查询(media queries)请求,指定多种不同的图像来源。

对于同样的图片,与传统的 PNG 或 JPG 图像格式相比,采用 Google 带来的 WebP 图像格式,下载流量最多将能够减少 25-34%。不过,尽管该图像格式能够降低网络传输数据量,从而使 Web 页面的上传速度将得以小幅提升,但为了满足 Web响应式设计的需求,还需要引入其他解决方案。

例如,根据 DPR``(设备 -``像素 -``比率),<img>``元素的 srcset``属性可以用来渲染若干固定尺寸图像中的一幅,如下图所示:

复制代码
<img src="/images/100-example.jpg"     
srcset="/images/150-example.jpg 1.5x, /images/200-example.jpg 2x"     
alt="" width="100" height="150">

而另一个方案是基于视区(viewport)大小,呈现经过缩放的图像:

复制代码
<img sizes="100vw" srcset="example-200.jpg 200w, example-600.jpg 600w,
example-1200.jpg 1200w” src="example-200.jpg">

Responsive Images Community Group (RICG)公布的信息来看,Chrome 34+、Safari 和 Firefox 33+(带有状态 flag)都支持 srcset 属性。微软则正在考虑为 IE 实现该特性。而 Opera 21+ 由于使用了 Chrome 的 Blink 引擎,所以同样支持该特性。WHATWG 小组详细列出了srcset 属性及其用法(点击查看详情)

有时候,用户代理需要呈现完整图片,或是呈现部分图片并排除不相干的部分,而这取决于设备的物理大小、屏幕分辨率、朝向(垂直或水平)及其他方面的因素。我们可以从如下示例图片(由 responsiveimages.org 提供)来了解这个被称为 Art Direction 的方法。

尽管也可以使用 JavaScript 来实现这一功能,但是实际上我们并不提倡这种做法,因为某些用户代理会在加载和运行任何脚本之前就下载页面图片;另一些则会在运行脚本、下载图片之前,让页面呈现出空白图片占位。因此,推荐的解决方案是使用<a href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element">picture</a>元素,它让开发者能够指定多重图像来源,并将它们与媒体查询结合。

下面的示例展示了为多种 DPR 提供不同图片来源的方法:

复制代码
<picture>   <source media="(max-width: 500px)"
srcset="banner-phone.jpeg, banner-phone-HD.jpeg 2x">   <
img src="banner.jpeg" srcset="banner-HD.jpeg 2x"
alt="The Breakfast Combo"> </picture>

当浏览器无法识别元素时,将使用元素作为回滚方案。 HTML 规范包含了其他示例,展示如何使用多重图像来源,用于图像的裁切或不同的图像格式。

Google 最近还在其稳定版分支(stable channel)中公布了一份可以用在 Chrome 38 中进行测试运行的 Art Direction 的示例。运行该示例的时候,用户要想观测到效果,需要调整浏览器窗口的大小,强迫浏览器呈现不同的图片。

目前,只有Chrome 38+ 和Opera 25+ 能够完整地支持元素。Firefox 33+ 也支持这一元素,但需要人工启用。而对IE 或Safari 来说,具体的情况目前尚不清楚。对于尚不支持这一特性的浏览器,想要创建响应式图片的开发者可以使用 Picturefill Polyfill 作为替代方案。

查看英文原文: Chrome 38 Supports Art Direction through the picture Element

2014-10-22 03:151891
用户头像

发布了 256 篇内容, 共 86.8 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

什么是零代码?零代码开发可以带来的好处

代码制造者

可视化 零代码 编程效率

一位区块链产品经理讲述“区块链”的通知 重点方向包括区块链安全

CECBC

物联网 区块链技术 联盟链

作业1

chenzt

VIPKID 在线教育场景下的实时计算技术落地和实践

Apache Flink

flink

大厂的人才衡量标准

池建强

人才标准

LeetCode题解:189. 旋转数组,3次翻转,JavaScript,详细注释

Lee Chen

大前端 LeetCode

周子衡 | 数字资产、数字支付及跨境活动——以美元数字化为例

CECBC

加密货币 数字资产

百度安全研究院:区块链智能合约介绍

百度安全

比特币 区块链 智能合约 以太坊

消息队列面试热点一锅端

yes

kafka 面试 RocketMQ 消息队列

1.8w字 | 初中级前端 JavaScript 自测清单 - 2

Geek_z9ygea

Java 大前端

架构师训练营第9周

大丁💸💵💴💶🚀🐟

秒杀系统的挑战和应对方案

2流程序员

Java 垃圾回收

dongge

我是如何写读书笔记的

dd多了个多

读书笔记

JVM 垃圾回收原理

周冬辉

第九周作业

andy

极客大学

第九周总结

andy

前端面试 vue 部分 (2)——Vue是如何实现双向绑定的

dd多了个多

面试 Vue 大前端 Web

总结

chenzt

起伏激荡的以太网,抱上这条大腿才能乘风破浪

脑极体

湾区金科沙龙,华青融天技术总监吴伟平详解旁路式应用性能监控

DT极客

汇丰坠落:世间已无「日不落」

钛禾产业观察

汇丰 财经

Kafka集群缩容实战

我是个bug

大数据 kafka 运维 Big Data

垃圾回收

Mr.Monkey

读书时,如何提炼文章架构形成思维导图

dd多了个多

读书笔记 读书感悟

读书,区分一二三四手知识

dd多了个多

读书笔记

前端面试vue部分(1)——谈谈你对MVVM的理解

dd多了个多

面试 Vue 大前端 Web

《深度工作》学习笔记(4)

石云升

学习 读书笔记 习惯 专注 深度工作

应用开发基础知识-文件系统

superman

文件系统

架构训练营第九周作业

张锐

架构师训练营第九章作业

叮叮董董

Chrome 38通过<picture>元素支持Art Direction_JavaScript_Abel Avram_InfoQ精选文章