《响应式Web图形设计》一13.3 自适应图像解决方案

简介:

本节书摘来异步社区《响应式Web图形设计》一书中的第13章,第13.3节,作者: 【美】Christopher Schmitt 译者: 曾斌 责编: 赵轩,更多章节内容可以访问云栖社区“异步社区”公众号查看。

13.3 自适应图像解决方案

响应式Web图形设计
为了处理自适应图像的大小问题,下面给出一些可以采用的方法。

13.3.1 另寻他法

一个看起来不太像解决方法的方法是:永远不要使用光栅图像,而要依赖其他格式的图像。

既然问题的核心是光栅图像的文件大小,那么如果我们可以使用其他文件格式或者技术来进行视觉呈现,自然也就可以减轻甚至消除自适应图像的麻烦了。

可以使用的技术有以下两种。

  • SVG——矢量图像就是为了缩放图像而存在的(见图13.8)。凭借前所未有的强大的浏览器的支持,如果你想要一张色彩简单或者线条简洁的图像,以前你通常会保存为GIF格式,但现在可以选择保存为SVG了(SVG的更多信息请参见第6章)。

8_9

  • 图标字体(Icon fonts)——字体与SVG类似,都是矢量图形,因此缩放效果很好。使用图标字体(见图13.9,在第10章中讨论过)是处理图形缩放边缘问题的绝妙办法。
  1. 虽说我们显然不可能完全放弃光栅图像,但作为替代方法,终归可以作为选项之一。你或许没法丢弃你所有的光栅图标,但是将其中的一部分转化成为SVG或者图标字体,总是可以让你的网站更为“响应式”。

13.3.2 压缩Retina图像

在为网页创建图像的时候,最好根据它们在浏览器中呈现的尺寸进行输出。例如,我们可以使用Photoshop生成一张115×115像素的GIF图像来作为头像图像,如图13.10所示。如果生成一张1 150×1 150像素的图像,那等于是强迫用户下载一张巨大的图像,这没有什么好处。

1.秘诀
不过既然响应式Web设计是通过设置百分比宽度来缩放图像的,我们就可以使用一张超大的图像,然后尽可能地将其压缩。虽然压缩后的图像在100%大小的时候可能看起来不完美,如图13.11所示。但是没关系,我们通过缩小图像来填满栏中的剩余空间,这些看似粗糙的瑕疵便会被遮掩起来。


10_11

举个例子,我们可以找一张图像,先取其实际大小:2 276 px×1 400 px,然后将图像压缩至0%质量(100%压缩),结果图像大小变成了460 kb。再使用ImageOptim对这张图像进一步压缩(正如我们在第7章中介绍的)。如图13.12所示,这张图像被进一步减少了14 kb,最终尺寸为446 kb。

虽然这张超大图像的体积依然比一般屏幕上的中等大小或者大尺寸图像大一些(见表13.2),但对于绝大多数设备来说,该图像已经够用了,因此这种方法值得考虑,如图13.13所示。


12_13

在老版本IE浏览器中使用SVG

老版本的IE浏览器本身不支持SVG。为了解决这个问题,可以使用jQuery插件(网址是

http://github.com/teleject/svg-swap)将所需图像转成光栅图像,或者使用Modernizr(网址是http://modernizr.com)来检测浏览器对SVG图像是否支持。

b2

2.注意事项
这种方法并不适用于所有图像。避免使用这种方法处理色彩对比强烈或者有大范围渐变的图像,如图13.14所示。


14

如果图像有大范围的渐变,压缩会引起条带色彩或者色调分离。对比强烈的图像在进行JPEG压缩时的效果不够好。为了缩小体积而丢失色彩数据后,JPEG很难保持色彩的平滑过渡。

最好是在色调、整体亮度相近的图像上使用这些方法。图像的直方图(见图13.15)应呈现平滑的“山脉”形状,而非尖锐的突起(见图13.16)。


15_16

相关文章
|
8天前
|
编解码 前端开发 JavaScript
构建高效响应式Web界面:现代前端框架的比较
【4月更文挑战第9天】在移动设备和多样屏幕尺寸盛行的时代,构建能够适应不同视口的响应式Web界面变得至关重要。本文深入探讨了几种流行的前端框架——Bootstrap、Foundation和Tailwind CSS,分析它们在创建响应式设计中的优势与局限。通过对比这些框架的栅格系统、组件库和定制化能力,开发者可以更好地理解如何选择合适的工具来优化前端开发流程,并最终实现高性能、跨平台兼容的用户界面。
|
1月前
|
前端开发 开发者 UED
构建响应式Web界面:Flexbox的力量
【2月更文挑战第25天】 在现代网页设计中,创建能够适应不同屏幕尺寸的布局是至关重要的。Flexbox,一种CSS布局模式,提供了强大的工具来轻松地设计和调整灵活的响应式界面。本文将深入探讨Flexbox的核心概念,并通过实例展示如何使用它来构建美观、灵活且易于维护的响应式Web界面。
|
28天前
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
14 0
|
14天前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox与Grid布局的深度对比
【4月更文挑战第4天】 在现代前端开发中,构建灵活且响应式的用户界面是至关重要的。随着移动设备浏览量的增加,能够适应不同屏幕尺寸和分辨率的布局技术变得必不可少。Flexbox和Grid是CSS提供的两种强大的布局机制,它们各自以独特的方式解决了响应式设计的挑战。本文将深入探讨Flexbox和Grid的核心概念、使用场景和性能考量,为开发者提供在面对不同布局需求时做出明智选择的依据。
|
29天前
|
前端开发 开发者 UED
构建响应式Web界面:Flexbox与Grid布局的深度解析
【2月更文挑战第28天】 在现代前端开发中,打造灵活且适应不同屏幕尺寸的用户界面是至关重要的。随着移动设备的普及,响应式设计已经成为网页制作不可或缺的一部分。本文将深入探讨两种强大的CSS布局模块——Flexbox和Grid,它们如何简化布局创建过程,并赋予设计师更大的灵活性去构建动态和流畅的响应式界面。通过对这两种技术的比较、使用场景分析以及代码示例,读者将能够更好地理解何时以及如何使用这些工具来提升前端项目的质量和效率。
14 0
|
1月前
|
开发框架 Dart 前端开发
构建响应式Web界面:Flutter的跨界前端技术
【2月更文挑战第23天】随着移动互联网的飞速发展,响应式Web设计成为现代前端开发的重要趋势。在众多框架中,Google推出的Flutter以其高效的渲染性能、跨平台能力及丰富的组件生态,为前端开发者带来了新的选择。本文将深入探讨如何利用Flutter进行高效、美观的响应式界面构建,同时剖析其与传统前端技术的差异和优势。
|
1月前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox的力量
【2月更文挑战第22天】 在当今多变的互联网景观中,创建一个能够适应不同屏幕尺寸和设备类型的响应式Web界面已成为前端开发者的核心任务。本文将深入探讨Flexbox——一个强大的CSS布局模式,它为构建灵活且易于管理的响应式设计提供了坚实的基础。通过详细解读Flexbox的关键特性及其在实际项目中的应用,我们将揭示如何有效地使用这一工具来提升用户界面的质量和性能。
|
1月前
|
Web App开发 编解码 前端开发
构建响应式Web界面:现代前端开发的实用指南
【2月更文挑战第22天】 随着移动互联网的兴起,响应式网页设计已成为前端开发者必须掌握的核心技能之一。本文将深入探讨如何通过灵活运用HTML5、CSS3和JavaScript等技术,构建出能够适应不同屏幕尺寸和设备的Web界面。文章不仅涉及理论概念,还包含具体实践案例,旨在帮助读者理解并应用响应式设计的核心原则,从而提升网站的用户体验和访问效率。
|
1月前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox布局的力量
【2月更文挑战第19天】 在构建现代Web应用的界面时,响应式设计成为了一项不可或缺的要求。随着设备种类的多样化,如何高效地创建能够适应不同屏幕尺寸和分辨率的布局,成为前端开发者面临的一大挑战。本文将深入探讨Flexbox布局模式,一种CSS3引入的强大工具,它为创建灵活且易于管理的响应式界面提供了可能。我们将通过概念解析、关键属性讲解以及实战案例,帮助读者掌握Flexbox的核心机制,并在实际项目中运用自如。
29 8
|
1月前
|
缓存 前端开发 开发者
构建响应式Web界面:现代前端开发的实用指南
【2月更文挑战第19天】 在多设备浏览的时代,为不同屏幕尺寸和分辨率优化网站变得至关重要。本文将深入探讨响应式Web设计的核心概念、关键技术和实现策略,旨在引导前端开发者通过灵活布局、媒体查询和现代化工具,打造出能够适应各种终端的界面。我们将从基础理论出发,逐步过渡到实战技巧,最后讨论当前趋势与未来展望,以帮助读者构建出高效、美观且用户友好的响应式Web界面。