CSS3响应式布局

1,498 阅读4分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

CSS3响应式布局

随着互联网时代的发展,我们对网页布局有了新的要求,例如我们可能是通过手机或者电脑来看网页的,而手机和电脑的大小和分辨率都是不一样的,那么就要要求页面能够在不同的设备上呈现相同的效果。因此,一个全新的概念—响应式布局应运而生。
响应式网页设计是一种网页设计的技术做法,该设计可以使网站在不同的设备上浏览时对应不同分辨率都有适合的呈现,减少用户进行缩放,平移等操作。真正的响应式设计方法不仅仅是根据可视化区域的大小改变网页布局,而是要从整体上颠覆当前网页的设计方法,是针对任意设备的网页进行完美布局的一种显示机制,用一套代码解决几乎所有设备的页面展示问题。

设置视口

<meta name=”viewport” content=”width=device-width, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no”>
width:可视区宽度
device-width:设备宽度
minimum-scale:最小缩放比
maximum-scale:最大缩放比
user-scalable:是否允许用户缩放

viewport能根据设备的分辨率 dpi值来计算css像素真正展示的大小,适配各种不同分辨率的设备。

响应式网页开方法

1.流体网格:可伸缩的网格,布局上面元素大小不固定可伸缩
2.弹性图片:图片宽高不固定(可设置min-width:100%)
3.媒体查询:让网页在不同的终端上面展示效果相同
4.主要断点:设备宽度的临界点(根据不同的宽度展示不同的页面)

媒体查询

媒体查询是向不同的设备提供不同样式的一种方式,它为每种类型的用户提供了最佳的体验。
css2:media type media type(媒体类型)是css2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面。
css3:media query media query是css3对media type的增强,事实我们可以将media query看做是media type+css属性判断。
css属性判断可以只是某个CSS属性的名称,也可以是属性+值:

<link rel="stylesheet" media="screen and (animation)” herf=“…”
//如果设备支持CSS动画,那么就能执行这个外部样式表文件。
@media screen and (max-width:240px){ 	
    body{font-size:medium;} 
}//如果设备的浏览器的最大宽度是240px,则页面将使用中号字体。

PS:属性和值之间是用冒号连接的,而不是等号.
一、Media Query之引入方法

  1、外部引用

<link rel="stylesheet" type="text/css" href="../css/print.css" media="print" />

  2、@media引入

 @media screen{
     选择器{
         属性:属性值;
     }
 }

3、@import方式引入

  1. @import url("css/reset.css") screen;
  2. @import url("css/print.css") print;

Media Query之实例

1、最大宽度Max Width——当屏幕小于或等于600px时,将采用small.css样式来渲染Web页面

<link rel="stylesheet" media="screen and (max-width:600px)" href="small.css" type="text/css" />

2、最小宽度Min Width——当屏幕大于或等于900px时,将采用big.css样式来渲染Web页面

<link rel="stylesheet" media="screen and (min-width:900px)" href="big.css" type="text/css"  />

3、多个Media Queries——当屏幕在600px-900px之间时采用style.css样式来渲染web页面

<link rel="stylesheet" media="screen and (min-width:600px) and (max-width:900px)" href="style.css" type="text/css" />

4、设备屏幕的输出宽度Device Width——iphone.css样式适用于最大设备宽度为480px,比如说iPhone上的显示,这里的max-device-width所指的是设备的实际分辨率,也就是指可视面积分辨率

<link rel="stylesheet" media="screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />

  5、iPhone4

<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" />

6、iPad——在纵向(portrait)时采用portrait.css来渲染页面;在横向(landscape)时采用landscape.css来渲染页面

  1. <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css" type="text/css" />
  2. <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"  type="text/css" />

7、Android

1.  <!--240px的宽度-->
<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />
2.  <!--360px的宽度-->
<link rel="stylesheet" media="only screen and (min-device-width:241px) and (max-device-width:360px)" href="android360.css" type="text/css" />
3.<!--480px的宽度-->
<link rel="stylesheet" media="only screen and (min-device-width:361px) and (max-device-width:480px)" href="android480.css" type="text/css" />

8、not关键字——排除某种制定的媒体类型

<link rel="stylesheet" media="not print and (max-width: 1200px)" href="print.css" type="text/css" />

9、only关键字

only用来定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性(Media Queries)的设备,正常调用样式,此时就当only不存在;对于不支持媒体特性(Media Queries)但又支持媒体类型(Media Type)的设备,这样就会不读了样式,因为先读only而不是screen;另外不支持Media Qqueries的浏览器,不论是否支持only,样式都不会被采用。

<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />

10style.css样式被用在宽度小于或等于480px的手持设备上,或者被用于屏幕宽度大于或等于960px的设备上

<link rel="stylesheet" type="text/css" href="style.css" media="handheld and (max-width:480px), screen and (min-width:960px)" />

单位

rem:相当于html元素的font-size大小
em:相当于本身的font-size大小 font-size属性可以继承的
vh/vw:相当于视口而言,会把视口分成100份
vmax:区视口宽高中最大的一边分成100份
vmin:区视口宽高中最小的一边分成100份