移动时代,是任何 Web 设计与开发者都不能忽视的一个时代,总有一天,你设计的东西将被显示在两种屏幕上,桌面大屏幕和移动小屏幕,如何让同一个网站同时适应完全不同的两种尺寸的屏幕,这是一个很久以来都没有完美解决方案的问题,直到有了 CSS3。

CSS3 的 Media Queries

在 CSS2 时代,如果你曾经为你的网站设计过打印版 CSS,就会明白 CSS3 Media Queries 的作用,不过,CSS3 的 Media Queries 比 CSS2 的 Media Type 更实用,事实上,CSS2 的 Media Type 并不曾被多少设备所支持过。CSS3 的 Media Queries 可以帮你获取以下数据:

  • 浏览器窗口的宽和高
  • 设备的宽和高
  • 设备的手持方向,横向还是竖向
  • 分辨率

如果用户有一个支持 Media Queries 的设备,我们就可以为该设备编写专门的 CSS,让网站适应这个设备的小屏幕,英国的 Web 技术大会 dConstruct 便基于该技术推出他们的 2010 年大会网站,手机也可以轻松访问,以下是该网站的桌面版和手机版截图:

这个网站在不同尺寸的设备上按不同的布局显示,并且,手机版在 iPhone,Opera Mini, Android 等设备上有完全一致的表现。

使用 Media Queries 为手机创建单独的 CSS

我们举一个简单的两栏式结构的例子。

为了让这个布局更好地在手机上显示,我们为手机版设计一个一栏式布局,且缩小 header 部分的图片大小。

使用 Media Queries 最直接的方法是,在你的 CSS 代码中,加一段独立代码分支,如下:

接着,在这个分支中,为小屏幕编写独立的 CSS 定义,这些定义可以覆盖桌面版 CSS 中的相应定义(只要将这段分支代码放在后面),以下针对小屏幕的 CSS 将布局变成一栏式,且使用了小尺寸的 Header 图片:

最终,我们在小屏幕设备上得到了如下显示效果:

使用 Media Queries 链接单独的 CSS 文件

对于小型的改动,直接在 CSS 代码中插入移动设备代码分支是很方便的,但对于大型站点,可以使用 Media Queries 链接独立的式样表文件,以便在独立的式样表文件中完全自由地为小设备编写 CSS 代码,方法如下:

测试 Media Queries

要在不同设备上测试 Media Queries 并非易事,你要有各种设备,还要将代码上传到某个主机进行访问测试。这里有一个在线服务,ProtoFluid,该服务允许你提供你要测试的网站的 URL,或者你本机上的 URL,然后,模拟 iPhone 等移动设备显示你的设计,下图是上文中提到的 dConstruct 网站在 ProtoFluid 的 iPhone 模拟中显示的样子。你也可以填写你自己的窗口尺寸,来模拟特定的设备。

在 ProtoFluid 使用 Media Queries,你需要同时加上 max-width 和 max-device-width 属性,这意味着,Media Queires 不仅可以针对不同的移动设备,还可以针对桌面系统中某些人为的小窗口情形。

使用上面的代码,在桌面浏览器上,当你改变窗口尺寸到达 480 像素的时候,就会看到布局的改变。需要注意的是,上面的 max-width 部分仅仅为了测试,如果你不希望用户在桌面浏览器中因为改变了窗口大小而导致你的布局改变,可以去掉 max-width 部分,而只针对那些移动设备。

对现有网站的整改

上面的例子为了说明问题起见都很简单,现实中的站点不可能这样,下面的例子,作者将使用他自己的公司网站,说明如何使用 Media Queries 对现有网站进行移动化整改。

桌面布局

作者自己的网站是几年前设计的,那是还没有考虑 Media Queries 问题,这是一个三栏式布局。

增加新的式样表

为了适应移动设备,将使用 Media Queries 加载独立的式样表:

作者的做法是,将他站点中原来的 CSS 文件另存为 small-device.css ,在这个基础上针对移动设备进行整改。

压缩 Header 部分

第一步是让 Logo 部分能在小屏幕上显示,因为这个 Logo 是基于背景图片的,因此很好办,同时,提供一个小尺寸的背景图,以便和 Logo 搭配。

单列式布局

下一步主要的工作是将多栏式布局换成单栏式,桌面版使用 Float 实现多栏布局,要改成单栏,只需将 float 设置为 float:none,并将 width 设置为 width:auto,这样,就实现了单列式布局。

再紧凑一些

然后,将margin 和 padding 进行调整,使之更紧凑一些:

在 iPhone 中测试

在 iPhone 中实际测试的时候,发现网站在单列式布局中仍然向外延伸了,从 Safari developer website 找到解决办法,在网站头,添加一个 meta tag,将网站的视窗宽度设置成何设备一致。

更多资源

  • 后移动时代的 Web 设计
  • A List Apart – Responsive Web Design (ALA - 反应灵敏的 Web 设计)
  • Apple – Safari Web Content Guide (Apple - Safari Web 内容指引)
  • Sitepoint CSS Reference – Media Queries (SitePoint 的 CSS 参考手册 - Media Queries)
  • Targeting the iPhone 4 Retina Display with CSS3 Media Queries (使用 CSS3 Media Queries 实现面向 iPhone 4 高精细显示屏的设计)
  • Aral Balkan: How to make your web content look stunning on the iPhone 4’s new Retina Display(Aral Balkan:如何让你的 Web 内容在 iPhone 4 的高精细屏上更好地显示)
  • Stuff and Nonsense: Proportional leading with CSS3 Media Queries (使用 CSS3 Media Queries 实现按比例行间距)
  • Matthew James Taylor: iPad layout with landscape and portrait modes (iPad 的水平和垂直布局模式)

在旧浏览器上支持 Media Queries

如果你面向的访问者是 iPhone, Opera Mini 等移动设备,这没有问题,对于那些不支持 Media Queries 的浏览器(像 IE6/7/8),以下文章或许对你有帮助。

  • Media Queries section on When Can I Use, showing which browsers have support (Media Queries 的浏览器支持情况)
  • Media Queries jQuery plugin (only deals with max/min width) (Media Queries jQuery 插件)
  • css3-mediaqueries-js – a library that aims to add media query support to non-supporting browsers(在不支持 Media Queries 的浏览器中实现对 Media Queries 的支持)

更多示例

Jon Hicks 在 Hicksdesign 基于 Media Queries 实现了非常好的浏览体验,不仅针对移动设备,还面向那些拥有小屏幕的桌面系统。另外,还可以看看 Simon Collison’s website 以及 Ed Merritt’s portfolio 这些网站中对这种技术的运用。

本文作者

Rachel Andrew

Rachel Andrew 是一名 Web 前端设计师与后端开发者,是一家英国 Web 开发顾问公司 edgeofmyseat.com 的主管,她还是一款小型 CMS 系统 Perch 的设计者。她写过多本 Web 开发与设计相关的书,包括由 SitePoint 出版的 CSS Anthology: 101 Essential Tips, Tricks and Hacks,她的个人博客是 rachelandrew.co.uk。

本文国际来源:Smashing Magazine How To Use CSS3 Media Queries To Create a Mobile Version of Your Website

中文翻译来源:锐商企业CMS 网站内容管理系统 官方网站

转载于:https://www.cnblogs.com/yanglan/archive/2011/04/12/2014044.html

CSS3 Media Queries:移动 Web 的完美开端相关推荐

  1. CSS3 Media Query:移动 Web 的完美开端

    CSS3 Media Query:移动 Web 的完美开端 Introduction 移动时代,是任何 Web 设计与开发者都不能忽视的一个时代,总有一天,你设计的东西将被显示在两种屏幕上,桌面大屏幕 ...

  2. CSS3 Media Queries 详细介绍与使用方法,Responsive Web Design 必备技术, 响应式设计

    上一篇我们介绍了Responsive Web Design之后,这次要来详细介绍CSS3 Media Queries了. 在上一篇中,我们提到Responsive Web Desig n的实作方式有大 ...

  3. 响应式web设计之CSS3 Media Queries

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...

  4. CSS:媒体查询 CSS3 Media Queries

    定义和使用 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式. @media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的. ...

  5. css3 media queries

    CSS3 Media Queries模板 作者:大漠 日期:2012-04-04 点击:3183  最早在<CSS3 Media Queries>一文中初探了CSS3的媒体类型和媒体特性 ...

  6. CSS3 Media Queries 实现网页自适应

    文章转载自:爱思资源网http://www.aseoe.com/show-10-261-1.html 导语 接下来会展示如何运用 HTML5 和 CSS3 来设计一个自适应网页.当今银屏分辨率从 32 ...

  7. CSS3 Media Queries在iPhone4和iPad上的运用

    CSS3 Media Queries的介绍在W3CPlus上的介绍已有好几篇文章了,但自己碰到的问题与解决的文章还是相对的较少.前几天在<修复iPhone上submit按钮bug>上介绍了 ...

  8. CSS3 Media Queries详细介绍和使用实例

    Media Queries直译过来就是"媒体查询",在我们平时的Web页面中head部分常看到这样的一段代码: 复制代码 代码如下: <link href="css ...

  9. CSS之Responsive设计和CSS3 Media Queries的结合

    随着高科技的发展,现在我们浏览网页不在局限于PC机上了,用户可使用上网的设备是越来越多的品种:手机.小笔记本.iPad.Playbook,以及PC机,而且PC机的显展大小各不一致.这样一来不同的屏幕分 ...

最新文章

  1. 年收入百万美元AI科学家的烦恼与思考
  2. Xamarin.Forms获取设备屏幕大小
  3. iOS 隐藏下级页面的tabbar的统一处理
  4. 【laravel54】查看版本号3种方式
  5. JZOJ 4437. 【HNOI2016模拟4.10】线性代数与逻辑
  6. python 中的[::-1]
  7. python右键没有idle编辑了_python右键Edit with IDLE
  8. python的数值类型_Python的数值类型
  9. java的六大_java程序员必备的六大工具!
  10. C++基础01-C++对c的增强
  11. 64位BASM学习随笔(一)
  12. 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
  13. idea中导包的快捷键
  14. hash函数(哈希表)
  15. Windows10安装JDK配置环境变量
  16. 华为初面+综合面试(Java技术面
  17. MTK6577+Android之音频(audio)移植
  18. 由于找不到MSVCR110.dll,无法继续执行代码........启动的解决方法
  19. Java并发指南12:深度解读 java 线程池设计思想及源码实现
  20. MYSQL_DQL语言的学习(1)

热门文章

  1. 用JEP 343打包工具,构建自包含、可安装的Java应用程序
  2. 【CentOS】设置服务开机自动启动
  3. 对SQLSERVER进行性能监控
  4. 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...
  5. 关于深度学习的小知识点
  6. 20160531-20160607springmvc入门
  7. 第六章:密码破解系统修复
  8. 澳洲留学征文活动获奖情况公布
  9. linux常见问题解答汇总
  10. C#线程、前后台线程