写点什么

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:151748
用户头像

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

关注

评论

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

钢网有多个种类,各自的用法都了解吗?

华秋PCB

PCB PCB设计 PCB生产

你需要知道的webpack高频面试题

Geek_02d948

webpack

天翼云实时云渲染,助力打造世界VR产业大会云上之城

天翼云开发者社区

智慧公路筑基者!天翼云打造全栈能力新底座

天翼云开发者社区

探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等

C++后台开发

多线程 后端开发 并行 linux开发 C++开发

基金交易场景下,如何利用 Apache APISIX 来稳固 API 安全

API7.ai 技术团队

安全 金融行业 api 网关 APISIX

网络地址转换(NAT)(二)

我叫于豆豆吖.

网络 11月月更

奖金+生态双丰收 首届昇腾AI创新大赛圆满收官

极客天地

B站疯传 Java面试题,24小时删

程序知音

Java java面试 java架构 后端技术 Java面试八股文

如何在大促中做好系统高可用

阿里巴巴云原生

阿里云 微服务 高可用 云原生网关

共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话

PingCAP

开源

为什么变压器经常烧毁?怎么预防解决?

元器件秋姐

元器件采购 华秋商城 变压器 变压器安全

华为新机到手升级HarmonyOS 3,畅享多设备高效互联协同

极客天地

企业开发首选安全框架!阿里顶配版Spring Security OAuth2.0认证授权核心技术全解真香

Java永远的神

Java 源码 springboot springsecurity 安全框架

技术贴 | Rocksdb 中 Memtable 源码解析

KaiwuDB

数据库

数字先锋| 教育资源乘云而来!46万城乡学子共享名师课堂

天翼云开发者社区

快速满足个性化业务需求的低代码平台

力软低代码开发平台

网络地址转换(NAT)(三)

我叫于豆豆吖.

11月月更

融云 K 歌解决方案,应用丰富互动模式的「万能卡」

融云 RongCloud

互动平台

启科量子 QuSprout 正式开源

启科量子开发者官方号

开源 量子计算 量子编程

Jmix 1.4 功能概览

世开 Coding

企业级低代码 Jmix 企业级应用程序开发

天翼云打造自研云操作系统TeleCloudOS4.0 推动算力蓬勃发展

天翼云开发者社区

架构实战训练营模块 5 作业

atcgnu

函数计算|如何使用层解决依赖包问题?

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

eBPF 实践 -- 网络可观测

观测云

【简历优化】如何写好项目的亮点难点?项目经历怎么写最好?

王中阳Go

高效工作 学习方法 面试 简历模板 11月月更

【高并发全彩版小册】阿里内部大佬用7部分讲懂!百亿级高并发系统

程序知音

Java 高并发 java架构 后端技术 高并发架构

让迁移不再开盲盒,让云也能省钱丨Hackathon 项目背后的故事第一期回顾

PingCAP

hackathon

【从零开始学爬虫】采集同花顺基金评论数据

前嗅大数据

数据采集 爬虫软件 爬虫教程 数据采集教程 爬虫案例

软件测试面试真题 | TCP为什么要进行三次握手和四次挥手呢?

测试人

三次握手 软件测试 自动化测试 测试开发 TCP四次挥手

手写一个webpack插件

Geek_02d948

webpack

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