写点什么

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

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

关注

评论

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

架构实战营模块一学习总结

Evan

架构实战营

普华基础软件加入龙蜥并成为理事单位,共创开源操作系统新生态

OpenAnolis小助手

龙蜥社区

30个类手写Spring核心原理之环境准备(1)

Tom弹架构

Java spring 源码

缓存数据的淘汰之路(上)

卢卡多多

28天写作 签约计划第二季 12月日更

构建信创基础软硬件共同体,DataPipeline与中科曙光完成产品兼容互认证

DataPipeline数见科技

大数据 中间件 服务器 数据融合

2021年11月国产数据库大事记

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

缓存数据的淘汰之路(下)

卢卡多多

缓存 28天写作 签约计划第二季 12月日更

2021年11月云主机性能评测报告

博睿数据

云主机 博睿数据 数据链DNA

Python代码阅读(第69篇):首字母大小写变换

Felix

Python Code 字符串 阅读代码 Python初学者

2600亿!全球最大中文单体模型鹏城-百度·文心发布

百度大脑

人工智能

缓存数据的淘汰之路(中)

卢卡多多

缓存 28天写作 签约计划第二季 12月日更

架构实战营模块一作业

Evan

架构实战营

Gartner预测全球人工智能软件市场将在2022年达到620亿美元规模

BeeWorks

自定义View:如何实现点击图标旋转的动画效果

Changing Lin

12月日更

斟茶兵——远程进程管理

白粥

进程管理 运维开发 系统维护 离职交接 日常工作

Veritas:2022年数据安全及合规领域行业预测

BeeWorks

PackML从会到不会——状态、管理标签(5)

陈的错题集

标准化 PackML

FPGA大发展!现在或许是从事FPGA行业的最好时代

科技新消息

想给用户天涯若比邻的体验?业务全球化面临的三重挑战

声网

网络

云ERP系统究竟是什么?

低代码小观

流程管理 ERP 业务流程管理 业务流程自动化

java序列化实现原理和深度分析

Java个体户

Java

Cypress 基础 - 元素的定位

汪子熙

CSS html Cypress 28天写作 12月日更

百万级 QPS 业务新宠,金山办公携手 Apache APISIX 打造网关实践新体验

API7.ai 技术团队

云原生 API网关 wps API Gateway Apache APISIX

探索圈外的世界 | GTLC 全球技术领导力峰会·厦门站圆满收官

TGO鲲鹏会

区块链 方法论 技术管理 GTLC

EMQ 映云科技走进高校,与浙大城市学院联合促进物联网人才培养

EMQ映云科技

物联网 mqtt

博睿数据携手火山引擎,共建新云新未来

博睿数据

一周信创舆情观察(11.29~12.5)

统小信uos

基于云的技术架构设计实践-第5篇

hackstoic

数据分析 云原生 数据可视化 业务分析 签约计划第二季

使用 HTML、CSS 和 JavaScript 制作的随机密码生成器

海拥(haiyong.site)

JavaScript 密码 28天写作 签约计划第二季 12月日更

ONES X 蓝城兄弟|有机的研发管理改进是最健康的颠覆

万事ONES

项目管理 ONES 项目管理工具

你以为Vue3封装一个弹框组件很简单?

CRMEB

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