!
也想出现在这里? 联系我们
广告位

响应式网页中如何插入响应式图片

现下流行的网页基本都是基于响应式布局设计(responsive web design)的,本文讲解在响应式布局的网页中如何正确的插入图片使其能自适应屏幕大小,同时还能获得最佳的加载性能与显示效果,这种方式叫做”响应式图片”(responsive image)。

响应式图片的解决方案有很多,HTML、JavaScript 和 CSS 都可以实现,本文介绍 HTML 与 CSS 两种方式,因为实现最简单而且浏览器原生支持。最简单的响应式图片实现方法为

  1. img {
  2. width: 100%;
  3. height: auto;
  4. }

但这种方式可能会造成图片显示的尺寸比它的原始图片大。假设它的父容器 width 为 300px,而图片原始宽度只有 200px 的时候,就会拉伸,造成图像模糊。

如果 max-width 属性设置为 100%, 图片永远不会大于其原始大小:

  1. img {
  2. max-width: 100%;
  3. height: auto;
  4. }

如果本文只介绍这样的方法,未免太肤浅。这种实现的方式虽简便,但不能达到最佳的加载性能和用户体验,原因有如下几点:

  • 因为当原始图片较大,虽然在移动设备上显示时尺寸会自动缩小,但性能不佳(会加载大尺寸原图)。
  • 桌面显示的面积较大,图像可以容纳更多细节。手机的屏幕较小,许多细节是看不清的,需要突出重点。
  • 桌面显示器一般是单倍像素密度,而手机的显示屏往往是多倍像素密度,即多个像素合成为一个像素,称为 Retina 屏幕。图片文件很可能在桌面端很清晰,放到手机上会有点模糊,因为像素扩充了。

最佳方式

针对以上问题,HTML 提供了一套完整解决方法,那就是的 srcset 属性,或者 HTML5 的 元素。看以下示例:

  1. <img srcset="demo-320w.jpg,
  2. demo-480w.jpg 1.5x,
  3. demo-640w.jpg 2x"
  4. src="demo-640w.jpg">

上面的代码中,srcset 属性给出了三个图片 URL,适应三种不同的像素密度。图片 URL 后面的像素密度描述符,格式是像素密度倍数 + 字母 x。1x 表示单倍像素密度,可以省略。浏览器根据当前设备的像素密度,选择需要加载的图片。如果 srcset 属性都不满足条件,那么就加载 src 属性指定的默认图片。

  1. <picture>
  2. <source media="(min-width: 768px)" srcset="">
  3. <source media="(min-width: 468px)" srcset="">
  4. <img src="demo-250x250.jpg">
  5. </picture>

上面这段代码用的是 HTML5 的 <picture>元素 ,如果设备屏幕宽度达到 768px 或以上,则显示 demo-768×90.jpg;如果屏幕宽度达到 468 或以上,则显示 demo-468×60.jpg;如果以上两个条件都不匹配,则显示 demo-250×250.jpg。此方法最适合图片展示广告。

下面再给一个示例,同时考虑屏幕尺寸和像素密度的适配。

  1. <picture>
  2. <source srcset=", 2x"
  3. media="(min-width: 990px)">
  4. <source srcset=", 2x"
  5. media="(min-width: 768px)">
  6. <img srcset=", 2x"
  7. alt="演示图片">
  8. </picture>

给TA打赏
共{{data.count}}人
人已打赏
前端学习

纯CSS制作中英文双语导航菜单

2024-7-31 11:33:02

前端学习

CSS3实现鼠标经过网站图片纵向Y轴旋转

2024-8-1 15:29:55

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索