构建响应式页面所用的css样式以及方法

目前已经愈来愈多的站点以及wap站点使用响应式设计,由于大屏幕的移动设备愈来愈普及。而自适应布局已经没法胜任各类浏览需求。响应式设计的目的是尽量以最好的布局显示您的数据,以实现用户友好的 Web 页面。css

如今CSS3有了个更为实用的 media query。而移动终端的浏览器基本已经彻底支持了css3.他能够为你获取各类终端的数据。css3

先举个例子,你们看这个demo。(因为相应区域过大,就不截图了,请你们点击打开这个链接)web

http://www.caihong.cc/demo/media/浏览器

一个普通的自适应显示的三栏网页,当你用不一样的终端来查看这个页面的时候,他会根据几种终端来显示不一样的样式,在电脑上是三列,在pad上应该也是三列,在大屏手机上是三行,在屏幕小于320的手机上只显示主要内容,隐藏掉了次要元素。(这里关于响应式布局还有个比较好的消息,就是拖动浏览器也能够触发判断条件,测试的时候你不须要去找一堆手机,只要把本身的浏览器窗口缩小到必定尺寸就能够了,这个demo也能够用拖动浏览器大小的方式测试。)iphone

这就是一个最简单的 响应式布局 的页面。咱们就从这个例子里认识下media query属性吧。ide

1.        @media screen and (min-width: 320px) and (max-width : 479px)svn

就从这个条件语句开始介绍,media属性后面跟着的是一个 screen 的媒体类型(上面说过的十种媒体类型之一)。而后用 and 关键字来链接条件(其余关键字还有 not only,看字面你们能理解,就很少说。),而后括号里就是一个媒体查询语句,稍微懂点css的同窗都能看懂,这个条件语句意思是在大于320小于479的分辨率下所激活的样式表。布局

这个语句,就是响应式布局的基础应用了。在判断终端分辨率大小以后,赋予不一样的样式进去,就像咱们的例子里测试

1.        @media screen and (max-width : 320px){字体

2.        body{...}

3.        }

4.        @media screen and (min-width: 800px) and (max-width: 1024px){

5.        body{...}

6.        }

至于要判断多少种分辨率,彻底取决于你产品的需求,常见的分辨率有手机,平板(注意这些终端是存在 横屏 竖屏 区别的),桌面显示器。本身为本身所面对的终端定制样式。

通常大于960的显示器均可以用默认样式而没必要在媒体查询里判断了。有一种状况除外,就是高像素比的终端,好比 iphone4以上的retina屏,一个iphone5的小小的屏幕(iphone的屏幕是真小啊),他的分辨率居然达到了1136*640,如何让放大了两倍的屏幕显示依然清晰?

在面对这种分辨率精细的终端,咱们有另一个条件查询语句 device-pixel-ratio

好比例子里的

1.        @media only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)

就是判断终端的像素比是2的话,所渲染的样式。iphone4以上像素比是2,高分辨率Andriod设备像素比是1.5,例子里只有像素比为2的查询,1.5的或者其余比例方法同样,前面用的是几种浏览器的私有属性,最后一种是通用属性。

1.        @media only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)

等于

1.        @media only screen and (min-device-pixel-ratio: 2)


为了一些版本的兼容性,不得已写的长了


1.        body{

2.        font-size:24px;

3.        }

4.        .box2{

5.        background: url(d/20.png) #ccc;

6.        background-size:50%;

7.        }


在像素比为2的终端里这样写的目的,就是让他显示的更容易识别,通常来讲显示一张1px的背景图片,咱们要准备一张2px的,而后再background-size:50%这样。1.5像素比同例。

好比上面的demo,若是你用iphone4以上的苹果手机来看,中间的背景图片应该是显示“2.0像素比

这里也暴露了响应式一个很大的缺点:须要多作若干背景图(做为内容显示的图片暂时无视,弹性图片与弹性字体,下次单独写一篇介绍博文介绍)。

对于media query的兼容性,我想不是很重要,由于不多有终端自带IE9如下的浏览器。基本都是高级浏览器。若是特殊须要,能够下载一个兼容的JS文件

1.        <!--[if lt IE 9]>

2.        <script  src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">  </script>

3.        <![endif]-->

以条件注释的方式加在文件里。

相关文章
相关标签/搜索