什么是响应式Web设计?怎样进行?(3)

时间:2011-11-21 17:00:40 

弹性图片

响应式Web设计的思路中,一个重要的因素是怎样处理图片方面的问题。有很多同比缩放图片的技术,其中有不少是简单易行的。其中,由Richard Rutter最先尝试的一种做法比较流行,即使用CSS的max-width属性。这个方法在Ethan Marcotte的液态图片一文中也有提到。

img { max-width: 100%;}

只要没有其他涉及到图片宽度的样式代码覆盖掉这一行规则,页面上所有的图片就会以其原始宽度进行加载,除非其容器可视部分的宽度小于图片的原始宽度。上面的代码确保图片最大的宽度不会超过浏览器窗口或是其容器可视部分的宽度,所以当窗口或容器的可视部分开始变窄时,图片的最大宽度值也会相应的减小,图片本身永远不会容器边缘隐藏和覆盖。实际上,就像Jason Grigsby在他的CSS Media Query for Mobile is Fool\'s Gold一文中提到的,"液态图片背后的思路,就是无论何时,都确保在其原始宽度范围内,以最大的宽度同比完整的显示图片。我们不必在样式表中为图片设置宽度和高度,只需要让样式表在窗口尺寸发生变化时辅助浏览器对图片进行缩放。" 一种简而美的方法。

图片本身的分辨率及加载时间是另外一个需要考虑的问题。虽然通过上面的方法,可以很轻松的缩放图片,确保在移动设备的窗口中可以被完整浏览,但如果原始图片本身过大,便会显著降低图片文件的下载速度,对存储空间也会造成没有必要的消耗。

响应式图片

由Filament Group提出的"响应式图片"技术思想,有助于解决上面提到的问题:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。可以看下demo页面先。

这个技术的实现需要使用几个相关文件,我们可以在Github上获取。包括一个JavaScript文件(rwd-images.js),一个.htaccess文件,以及一些范例资源文件。具体使用方法可以参考Responsive Images的说明文档。大致的原理是,rwd-images.js会检测当前设备的屏幕分辨率,如果是大屏幕设备,则向页面head部分中添加BASE标记,并将后续的图片、脚本和样式表加载请求定向到一个虚拟路径"/rwd-router"。当这些请求到达服务器端,.htacces文件会决定这些请求所需要的是原始图片还是小尺寸的"响应式图片",并进行相应的反馈输出。对于小屏幕的移动设备,原始尺寸的大图片永远不会被用到。

这项技术支持多数的现代浏览器,包括IE8+、Safari、Chrome和Opera,以及这些浏览器的移动设备版本;在FireFox及一些旧浏览器中,则会优雅降级:我们仍可得到小图片的输出,但同时,原始大图也会被下载。

禁用iPhone中的图片自动缩放

在iPhone及iPod Touch中,页面会被自动的同比例缩小至最适合屏幕大小的尺寸,x轴不会产生滚动条,用户可以上下拖拽浏览全部页面,或在需要的时候放大页面的局部。这里会产生一个问题,即使我们运用响应式Web设计的思想,专门为iPhone的小屏输出小图片,它同样会随着整个页面一起被同比例缩小,如下图左侧所示。

我们可以使用苹果专有的一些meta标记来解决类似的问题。在页面的<head>部分添加以下代码(详情可以参考Think Vitamin的相关文章):

<meta name="viewport" content="width=device-width; initial-scale=1.0">

将initial-scale的值设定为"1",即可覆写默认的缩放方式,保持原始的尺寸及比例。更多关于viewport meta标记的用法,可以参考苹果官方的文档

标签:web设计,鼠标,用户
0
投稿

猜你喜欢

  • Task List 管理任务JavaScript源码

    2010-01-22 15:43:00
  • 关于Math.PI、前自增和后自增

    2009-05-25 12:38:00
  • 教你如何利用SQL Server保护数据

    2010-06-07 14:18:00
  • Windows XP操作系统下的MYSQL安装过程

    2008-11-24 12:52:00
  • SQLserver 数据库危险存储过程删除与恢复方法

    2011-09-30 11:33:54
  • Dojo Style Javascript 编程规范

    2007-10-25 17:24:00
  • 详解CSS3中的属性选择符

    2008-04-24 14:30:00
  • 用正则替换所有URL

    2009-03-13 13:51:00
  • 页面软键盘汉字输入

    2010-09-01 20:41:00
  • 6行的js上下滑动广告效果

    2008-11-27 12:26:00
  • Sql2005启用和关闭xp_cmdshell功能

    2008-09-29 15:37:00
  • PHP使用laravel邮件服务发送邮件

    2023-05-25 03:48:23
  • 用文本+ASP打造新闻发布系统

    2009-02-02 09:31:00
  • Microsoft JET Database Engine 错误 '80040e21' 所有记录中均未找到搜索关键字

    2009-08-30 13:07:00
  • 土豆网前端概况

    2008-01-24 12:06:00
  • FrontPage2002简明教程二:文字与图像的处理

    2008-09-17 11:13:00
  • 窥探jQuery——面向JavaScript程序员

    2008-06-17 14:35:00
  • 视觉设计的一致性与用户体验

    2010-01-06 13:38:00
  • sql语句返回主键SCOPE_IDENTITY()

    2011-09-30 11:28:45
  • 网页设计三剑客

    2010-08-31 17:05:00
  • asp之家 网络编程 m.aspxhome.com