注:这篇文章发布于September 27th, 2011,作者是 Jason Grigsby
在我上一篇的博文“什么是移动优先的响应式Web设计”中,我提到了一个用来判别一个响应式Web设计是否是“移动优先”的标准,即这个设计是否有处理IMG标签的策略。
最近在国外关于一个Web设计的网站Smashing Magazine上的一篇文章总结了一些响应式Web设计技术,其中包括几个处理IMG标签的新的方法。因此,现在非常适宜深入挖掘一下这个问题以及可能的一些解决方法了。
为什么IMG标签是响应式Web设计的关键
如果你想要你的站点尽可能快地加载,你会想要传送比实际需要更大的文件。很多响应式Web设计给移动设备提供的图像是适合于台式机的,然后再让移动设备去修改图像大小。
在我的研究中,我发现几乎传送到移动设备上的图像几乎需要减掉文件大小的80%才与实际需要相符。
那么在响应式设计中,IMG元素有什么问题呢?不像CSS图片可以通过媒体查询语句为不同分辨率的屏幕提供不同的源文件,IMGs只有一个单独的源属性。
什么是响应式的图像
响应式的图像是使用HTML的IMG标签传送的图片,这些图片可以根据不同的屏幕大小而改变图片来源。可以有很多技术方法来实现响应式的图像设计。
就我所知,Scott Jehl第一个使用了响应式的图像这个短语来描述图像来源问题的javascript解决方案。他最近将响应式的图像定义为一个通用的术语,因此,我希望他不会介意我拓展了他对这个短语的定义,以便来描述在响应式设计中用来解决提供合适大小图像的问题的技术。
响应式的图像问题面临的挑战
有一些挑战是响应式的图像技术所普遍面临的。当我们来看已经提出的各种解决方案的时候,我们需要将这些问题记在脑海中。
最低标准:直接下载移动设备适用图像,无需多余下载
Scott Jehl为响应式图像设计提出了一个最小标准:
- 直接就下载适用于移动设备的图像
- 升级到大的图像时无需下载两个图像
这两个都是必须要达到的目标。
第一次下载页面的问题
任何一个依赖于客户端脚本来决定应该提供哪一个图像源的解决方案都会遭遇第一次下载页面的问题。当用户第一次访问一个站点的时候,服务器端并不知道应该提供多大的图片。
来自于Bryan Rieger的 Muddling Through the Mobile Web 中的图像, 由 wscullin摄影, 受 Creative Commons保护.
如果加入了可以加载合适大小图片的javascript代码,那么第一次下载页面时相关信息就可以通过cookies以及类似技术从用户端获得。在理论上说,对于接下来的请求,服务器端都知道应该在IMG标签中包含什么样的图像大小了。
第一次加载速度是非常重要的。一个用户第一次体验到的速度价格会决定他们对一个产品或者公司的印象。Google、Yahoo以及其他的一些公司都说过很小的速度差异就会对用户使用产品造成很大区别。
竞争条件(Rendering Race Conditions)
依赖于使用javascript调整图像来源属性的技术需要确保调整发生在图像请求开始之前。
浏览器开发者做了很多工作在来下载尽可能多的资源,这通常来说这是个好事。但是在响应式设计中,javascript代码需要在任何图像请求开始之前就解析出需要多大的图像。
很多早期的工作都是通过使用动态库标签(dynamic base tags)来做的。这在javascript代码是包含在head标签中时是很有效的,但是当使用外部javascript文件时就难以避免要下载两次图像。
几乎每一种客户端技术都需要对不同浏览器处理以及下载资源的命令有非常深刻的理解。或者更实际一点说,任何一种方法都要经过广泛测试。
内容分发网络以及缓存
当你通过同一个url分发相同大小文件时,你会碰到一个由CDN以及其他网络边缘的缓存引起的问题。如果第一个人是在手机上请求一幅图像,那么接下来的请求者就会看到在手机上显示最优的图片,即使他们试用的是台式机。如果想要避免这一点,就需要在策略中考虑CDNs。
未来友好的响应式图像
如果我们相信“将来会有很多我们不曾想象多的互联设备出现”,我们就需要考虑一下解决方案在未来友好的。除了现在所做的实验之外,我们需要考虑一个可以长期使用的解决方案可能是什么样子的。
比如说,很多早期的响应式图像解决方案考虑了两种图像大小:一个用来提供给台式机,一个用来提供给手机。但是,这两种图像大小能满足正在到来的各种设备吗?
另外,现在的很多解决方案只是解决了这个问题的某一个方面。他们可能通过客户端的改变来改变图像来源,但是,这却给开发者留下了一个问题,即如何去处理图像大小的改变。对于共享库来说,限制范围可以解决这个问题。
但是在我们考虑未来系统要怎样才能成功时,我们需要考虑我们想要从服务器端和客户端想要获得什么。
下面是我认为一个能长期适用的技术需要考虑的一些事情:
- 支持绝对图像大小的改变——我们不能预期到屏幕大小是多少。我们需要系统能自动处理图像大小改变,并且能支持特定页面的绝对大小改变
- 手工设计可以覆盖自动的图像大小改变——不是每一个图像都可以不失去图像含义而改变大小的。有时候对图像进行裁剪比改变它的大小会有更好的效果。自动化的工具需要支持人工覆盖。
- 需要支持高分辨率显示——当面对iPhone4以及其他一些有高分辨率屏幕的时候我们应该采用什么方案呢?我们要给处于一个低端连接的高分辨率机器提供高像素的图像吗?这是一个开放性的问题。
但是不论我们现在选择如何进行处理,很明确的一点就是屏幕分辨率会不断增加的趋势不会改变。至少,我们已经看到在台式机上会出现更高分辨率。
这意味着我们现在对大图像的定义对将来的设备来说可能太小了。如果记住这一点,可能需要系统能接受最高分辩率的图像——即使现在的设备并没有这样的分辨率——那么当新的有高分辨率的设备出现的时候,现有的技术才会适用。
- 连接速度应该是标准中应该考虑到的——如果我们能知道网络连接的情况,我们就能更容易解决图像大小问题了。我们需要一种更简单的方式来获得这个信息。
- IMG标签可以被替换吗?——所有的响应式图像解决方案都在试图处理现在的图像标签只有单一来源的问题。对于重新看待这个标签,已经有各种建议,看我们是否能找到一个长期的替换方案。
在Part 2中,我们将会对现有的响应式图像设计方案进行更详细的解析,看看哪一个是最有可能的。
发表评论
-
响应式Web设计资源整理
2012-03-02 22:50 841这篇文章是对以往发表在Smashing Magazine上关于 ... -
投身移动开发必须知道的20件事
2012-03-01 23:42 758移动开发需要具体的设计考虑。这个所指的范围非常广,可以从“ ... -
聘用NodeJS开发者的六个建议
2012-03-01 23:41 851假设你正想聘用一名Node ... -
[摘要]Vision Mobile发布2012跨平台开发工具报告 PhoneGap最受欢迎
2012-03-01 23:41 908国外知名调查分析机构V ... -
Facebook发力Mobile Web 推出支付和测试工具
2012-02-28 23:49 822Facebook入场了,在MWC大 ... -
【数据】《移动优先》作者:为什么移动如此重要?
2012-02-28 23:48 943三 年前,前雅虎用户体验总监Luke Wrobl ... -
重新审视Mobile Web
2012-02-28 23:48 702作者简介:Byron是一个 ... -
WebAppTrend周刊:Google Chrome工程师推出Web App开发指南
2012-02-26 00:52 1223从本周起,WebAppTrend将精选一周内(2月20日~2月 ... -
Google Web App开发指南第四章:构建优秀的Web Apps
2012-02-24 23:13 1280构建漂亮的应用 一个web app 的视觉设计不仅 ... -
零基础学习Sencha Touch(资料和教程集合)
2012-02-23 00:41 1288译者注:本篇文章为开发者提供了零基础使用Sencha To ... -
Google Web Apps开发指南之项目样例(上)
2012-02-23 00:41 936如果缺少项目案例部 ... -
如何一步一步制作出高品质Infographic?
2012-02-20 21:23 980译者注:Infographic就 ... -
海豚浏览器CTO刘铁锋:Mobile Web App发展现状及展望
2012-02-18 00:10 881在计算机的发展过程中 ... -
海豚浏览器CTO刘铁锋:Mobile Web App发展现状及展望
2012-02-18 00:09 0在计算机的发展过程中 ... -
新手必读:PhoneGap入门六大问题
2012-02-18 00:08 1031很多PhoneGap新手总是需要一些基础问题的解答,Ado ... -
Google Web App开发指南第一章:什么是Web Apps?
2012-02-18 00:07 929很多人向我问起学习HTML5技术的权威入门资料,我总是毫不 ... -
Lanyrd是如何应用HTML5创建出优秀的移动Web应用的
2012-02-15 00:28 650当很多人都在等待观望 ... -
Appcelerator收购Cocoafish,旨在为Titanium平台提供即时移动云服务
2012-02-15 00:17 918译者注:Appcelerator是 ... -
Android官方文档之Web Apps最佳实践
2012-02-15 00:14 686为移动设备开发web页面或者web应用与为桌面浏览器开发web ... -
Android官方文档之Web Apps调试
2012-02-15 00:13 912概览 你可以使用控制台的Javascript方法调试你的w ...
相关推荐
系统实现上,软件设计是不可或缺的一部分,包括图像处理算法的编写和实时操作系统的选择。嵌入式系统往往采用实时操作系统(RTOS),如VxWorks、Linux或RTOS的变体,以保证处理速度和响应时间。同时,为了优化资源...
在探讨基于FPGA的超声诊断仪信号处理系统设计时,需要关注的关键技术和设计流程包括以下几个方面: 1. FPGA技术基础 FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可以通过编程来配置的集成电路...
1. 视频检测:利用摄像头捕捉道路交通情况,通过图像处理技术分析车辆数量、速度和方向。 2. 微波雷达探测:采用微波频率进行非接触式检测,可获取车辆位置、速度等信息。 3. 车载传感器:车辆安装的GPS、加速度计等...
这种技术结合了图形学、图像处理、模式识别、网络技术、并行处理技术、人工智能等多个领域的先进技术,并且与数学、物理、通信、美学、心理学和社会学等多个学科相互关联。 1.1 什么是虚拟现实 虚拟现实是一种全新...
- **交互算法**:处理用户的输入,更新虚拟环境的状态,确保实时性和响应性。 4. **应用领域** - **游戏娱乐**:VR为玩家提供了身临其境的游戏体验,增强游戏的沉浸感和趣味性。 - **教育训练**:在模拟环境中...
这是响应式设计的基本思路之一,即利用CSS的流体网格和弹性布局特性,使页面元素能够根据屏幕大小自动调整布局。 总之,“CSS仿淘宝首页导航条按钮布局效果的源代码”是一个典型示例,它集成了多种CSS技巧,包括...
- **序列数据管理**:Series的运用,让数据源的绑定和图表类型的选择变得简单直观,即使处理大规模数据集也能保持图表响应速度和准确性。 - **交互式特性**:支持Tooltip、超级链接和JavaScript动作的集成,极大地...
通过本章的学习,读者应该能够理解盒模型的基本组成部分及其工作原理,掌握如何通过补白和边界来精确控制元素的位置和间距,以及如何利用自适应布局来创建响应式的页面设计。这些知识点对于任何希望深入学习CSS布局...
- 03.ppt:可能涵盖了CSS的盒模型和响应式设计基础。 - 10.ppt、12.ppt、15.ppt、19.ppt、20.ppt、16.ppt:这些可能分别介绍了CSS的其他主题,比如动画、过渡效果、媒体查询、CSS3的新特性等。 通过学习这门课程,...
虚拟现实技术,简称VR,是一种高度集成计算机技术的创新应用,融合了图形学、图像处理、模式识别、网络技术、并行处理、人工智能等多个领域的技术精华。它旨在创造一个能够让人产生身临其境感觉的交互环境,打破了...
它强调层次感、动效和响应式设计,使应用更具现代感和用户体验。 六、无障碍服务 10. Accessibility:Android系统内置了无障碍服务,允许有特殊需求的用户通过辅助技术与应用交互。开发者应遵循无障碍指南,确保...
在个人网站的开发过程中,可能涉及到的其他技术还包括响应式设计,确保网站在不同设备上都能良好展示;SEO(Search Engine Optimization)优化,提升网站在搜索引擎中的排名;以及可能的后端技术,如使用Node.js或...
此外,你还将接触到事件驱动编程,了解如何响应用户的输入,以及如何处理游戏中的各种事件。 总的来说,"外星人入侵"是一个极好的Python Pygame入门项目,它涵盖了游戏开发的基础知识,如游戏循环、对象设计、碰撞...
- **视觉化工具**:使用Android Studio的Layout Editor进行拖放式界面设计,直观调整控件大小和位置。 #### 4. 解读程序流程 - **活动(Activity)生命周期**:理解Activity的创建、启动、暂停、停止、恢复和销毁...
这一功能极大地扩展了ArcGIS的遥感和图像处理能力,使得地理分析师和科学家能够在本地环境中无缝集成多种类型的数据源,进行复杂的空间分析和模式识别。 #### 压缩Geodatabase 随着geodatabase规模的不断增长,...
3. **CSS文件**:样式表将控制页面的视觉呈现,包括颜色、布局和响应式设计。开发者可以通过修改CSS来定制应用的外观,使其更具吸引力。 4. **其他资源文件**:可能包含图像、字体、音频等多媒体资源,用于增强用户...
CSS还支持响应式设计,使得日记应用能在不同设备上保持良好的显示效果。例如,可以使用媒体查询(`@media`)来针对手机和平板等小屏幕设备调整布局。 接下来,我们重点讨论JavaScript,这是一门强大的客户端脚本语言...