自适应网页设计意味着,不仅我们的布局能根据设备特性而变化,内容也可以。例如,高分辨率 (2x) 显示屏上高分辨率图形可保证清晰度。当浏览器宽度为 800px 时,一张 50% 宽度的图像或许很适合,但在一款很窄的手机上,则会占用太多屏幕空间,并且缩小图像来适应较小的屏幕时,耗费的带宽开销却是一样的。

你知道吗?加载网页时,平均 60% 以上的流量都来加载图片。HTML 中 img 元素很强大,它可下载、解码然后渲染内容,而现代浏览器支持众多图像格式。跨设备使用图像与桌面端并无太大区别,只需做一些微小调整,就能构建美好体验。

图像使用相对尺寸,在指定图像宽度时,请记得使用相对单位,以防止它们意外溢出视口。例如,width: 50%; 将图片宽度设置为包含元素宽度的 50%

因为 CSS 允许内容溢出其容器,因此可能需要使用 max-width: 100% 来保证图像及其他内容不会溢出。例如:

img, embed, object, video {max-width: 100%;
}

请务必借助 img 元素的 alt 属性提供有意义的描述;这些描述有助于提高您的网站的可访问性,因为它们能提供语境给屏幕阅读器及其他辅助性技术。

高 DPI 设备上使用 srcset 来增强 img,srcset 属性增强了 img 元素的行为,让您能够轻松地针对不同设备特性提供多种图片文件。类似于 CSS 原生的 image-set CSS 函数,srcset 也允许浏览器根据设备特性选择最佳图像,例如,在 2x 显示屏上使用 2x 图像,将来甚至允许在网络带宽有限时对 2x 设备使用 1x 图像。

<img srcset="elva-fairy-320w.jpg,elva-fairy-480w.jpg 1.5x,elva-fairy-640w.jpg 2x"
src="elva-fairy-640w.jpg" alt="Elva dressed as a fairy">

在不支持 srcset 的浏览器上,浏览器只需使用 src 属性指定的默认图像文件。正因如此,无论设备能力如何,一定要始终包含一个在任何设备上都能显示的 1x 图像。如果 srcset 受支持,则会在进行任何请求之前对逗号分隔的图像/条件列表进行解析,并且只会下载和显示最合适的图像。

尽管条件可以包含分辨率和宽度等各种参数,但目前只有分辨率能够得到很好的支持。

在自适应图像中用 picture 实现,若要根据设备特性更改图像,请使用 picture 元素。 picture 元素定义了一个声明性解决办法,可根据设备大小、设备分辨率、屏幕方向等不同特性来提供一个图像的多个版本。类似于 video 元素,它可以包含多个 source 元素,使得根据媒体查询或图片格式指定不同图片文件成为可能。

<picture><source media="(min-width: 800px)" srcset="head.jpg, head-2x.jpg 2x"><source media="(min-width: 450px)" srcset="head-small.jpg, head-small-2x.jpg 2x"><img src="head-fb.jpg" srcset="head-fb-2x.jpg 2x" alt="a head carved out of wood">
</picture>

上面的例子中,如果浏览器宽度至少为 800px,则将根据设备分辨率使用 head.jpg 或 head-2x.jpg。如果浏览器宽度在 450px 和 800px 之间,则将根据设备分辨率使用 head-small.jpg 或 head-small-2x.jpg。对于屏幕宽度小于 450px,且不支持 picture 元素向后兼容的情况,浏览器将渲染 img 元素,因此要始终包含该元素。

响应式图片(srcset属性和picture元素)相关推荐

  1. 响应式图片srcset未生效

    <imgsrcset="1.png 1920w, elva-fairy-480w.jpg 480w, elva-fairy-800w.jpg 800w"sizes=" ...

  2. web响应式图片设计实现

    随着移动开发热潮的兴起,已经有越来越多的公司将移动端的开发列为核心,其中不论是webapp还是手机页面都是如此,在开发的过程中就涉及到了一个web响应式图片的问题,这里我们就来探讨一下响应式图片的实现 ...

  3. 响应式图片的实现(含picture标签、srcset属性、sizes属性的使用方法,设备像素比详解)

    什么是响应式图片? 响应式图片即针对不同的设备分辨率和尺寸,显示对应的最佳分辨率的图片. 具体表现为: 高分辨率的屏幕,显示高分辨率图像(确保高清屏上,图片依然足够清晰) 低分辨率的屏幕,显示低分辨率 ...

  4. html中图片响应式怎么写,如何使用 HTML5 的picture元素处理响应式图片

    图片在响应式网页设计中是出了名的最具挑战性的方面之一.今天我们就来看看如何使用元素来处理响应式图片. 让我们先了解一下问题 固定宽度,像素完美的网站设计已经离我们远去了.在宽屏显示器,互联网电视,多尺 ...

  5. 响应式图片img中的srcset和sizes

    响应式图片img中的srcset和sizes 参考链接 如果是在小屏手机屏幕上显示网页,那么没有必要在网页上嵌入很大的图片.这被称之为分辨率切换问题(resolution switching prob ...

  6. 【转】CSS 与 HTML5 响应式图片

    关于响应式的,近来国内外也不断提到,还是目前比较流行的技术话题,这篇文章来至淘宝UED的,讲得是响应式图片,写得很不错. 随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图 ...

  7. CSS 与 HTML5 响应式图片

    随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...

  8. 分享一个非常有用的HTML5+CSS3响应式图片案例

    随着Retina屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变这种 ...

  9. 【HTML5】响应式图片

    jq width() .height()获取的是图片加载到页面上的图片显示尺寸(图片标签width.height属性值或max-width后的值)而非图片真实尺寸:所以虽然在小屏设备上看到的图片小但是 ...

最新文章

  1. Rich Caruana:压缩深度神经网络模型让你兼得可解释性与准确性!
  2. 【深度学习】CNN神经网络应用(用于亚洲大黄蜂分类)
  3. python装饰器函数-python3 函数:函数装饰器
  4. 静态路由默认路由的配置
  5. openjdk8 项目结构_OpenJDK织机和结构化并发
  6. java与sql2005连接数据库_Java链接数据库SQl Server2005
  7. 关于解决Codeblocks中文乱码问题
  8. cassss服务未启动_systemd时代的服务管理
  9. 3DShader之投影网格(Projected Grid)
  10. mysql explain desc_MySQL中EXPLAIN结果的参数详解
  11. 关于MSHTML、IHTMLDocument、Ihtmldocument2-5的区别及 document.execCommand方法详解
  12. 《软件测试》[(美)Ron Patton]第三章阅读总结
  13. 利用googlemap查询经纬度
  14. 如何通过python下载视频文件
  15. 解决最新小马激活工具导致主页劫持问题
  16. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 C:计算几何
  17. 自然语言处理(1)——绪论与概述
  18. python入门(三)--文件处理
  19. 统信桌面操作系统V20专业版(1022)发布
  20. 如何安装谷歌服务框架?(Google三件套下载教程)

热门文章

  1. 苹果秋季发布会于9月16日召开;华为搜索业务将在国内亮相;Android 11正式版发布 | 极客头条
  2. 搞 Python 的程序员,不懂这一点,耽误自己成长!现在看还来得及
  3. Facebook 与 Twitter 再曝漏洞!用户数据再次被共享?
  4. 开源风云 20 年!
  5. 邬贺铨/余晓晖/田溯宁…千家从业者,数十位行业大咖共同烹制了一场怎样的AIoT“盛宴”?
  6. Java 13 发布进入倒计时!
  7. 华为自研操作系统已注册;大疆回应信息泄露;2019 新款 iPhone 曝光 | 极客头条...
  8. 你相信逛 B 站也能学编程吗?
  9. 少吃点真的能改变“命运”?
  10. 零基础如何用 15 行 Python 代码搞定网易云热门歌单?