随着互联网时代的发展,我们对网页布局有了新的要求,大气,美观,能够在不同的设备上呈现令人焕然一新的效果。此时,一个全新的概念—响应式布局应运而生。它的诞生为我们的移动端布局带来了很大的便利。因此学习响应式页面布局势在必行!
一、响应式页面布局的概念
响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览器而诞生的。
二、响应式布局的优势
响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用“大势所趋”来形容也不为过。随着越来越多的设计师采用这个技术,我们不仅看到很多的创新,还看到了一些成形的模式。
三、响应式布局网站案例(如下图所示):
![](https://pic1.zhimg.com/50/v2-d94912506df57bc7984b01217eb233f0_hd.jpg)
![](https://pic3.zhimg.com/50/v2-b7cbf3c54230d8ac9265eb2209098b88_hd.jpg)
![](https://pic3.zhimg.com/50/v2-b7cbf3c54230d8ac9265eb2209098b88_hd.jpg)
核心知识点
v 弹性盒模型
v 媒体查询
四、弹性盒模型
弹性盒布局模型是css3规范中提出的一种新的布局方式。
目的:提供一种更加高效的方式来对容器中的条目进行布局、对齐和分配空间
优势:这种布局模式已被主流浏览器所支持,可以在web应用开发中使用。
![](https://pic3.zhimg.com/50/v2-c55dadc247255fd1eecbc45aa17c5c3b_hd.jpg)
说明:
1.flex是display的一个属性值。
2.设置了display:flex属性的元素,称为Flex容器,他里面的所有子元素统称为容器成员,称为Flex项目。后面我们就使用Flex容器和 Flex项目来进行介绍。 Flex容器有两根坐标轴:主轴(main axis)和交叉轴(cross axis)。
Flex容器属性
![](https://pic1.zhimg.com/50/v2-c1c2ad5d7f37298ee26666600b621f2c_hd.jpg)
flex-direction: row | row-reverse | column | column-reverse;
![](https://pic2.zhimg.com/50/v2-a7d2f1c2733b39995661717c9dc4da38_hd.jpg)
flex-direction:row;
![](https://pic4.zhimg.com/50/v2-746ce321e123afe480d6505867754e3e_hd.jpg)
flex-direction:row-reverse;
![](https://pic2.zhimg.com/50/v2-7f07e54435c3bad36e8addc6158218b3_hd.jpg)
flex-direction:column;
![](https://pic4.zhimg.com/50/v2-f6c2255a6301fbf043d7881626803fb2_hd.jpg)
flex-direction:column-reverse;
![](https://pic1.zhimg.com/50/v2-91f55e09508ee197fc4f6f5abe84d7f4_hd.jpg)
justify-content 定义了Flex项目在主轴方向上的对齐方式
flex-start | flex-end | center | space-between | space-around;
![](https://pic1.zhimg.com/50/v2-b1366057124741581de70c9ea0d2a4bc_hd.jpg)
justify-content:flex-start;
![](https://pic3.zhimg.com/50/v2-66b135c93f6f7daeb4b884db0c7c03a7_hd.jpg)
justify-content:flex-end;
![](https://pic3.zhimg.com/50/v2-1a63151fd66f0c8ea44ab853bd61ea32_hd.jpg)
justify-content:flex-center;
![](https://pic3.zhimg.com/50/v2-4527cfd8c88ca70665595c7698f1fdfe_hd.jpg)
justify-content:space-between;
![](https://pic3.zhimg.com/50/v2-e6ac29b22cea7a7e3f4044d04f2e0502_hd.jpg)
justify-content:space-around;
![](https://pic3.zhimg.com/50/v2-87714d16424095ec14364c3d2b5964ae_hd.jpg)
align-items:flex-start | flex-end | center | baseline | stretch; 定义项目在交叉轴上的对齐方式(适用于父类容器【弹性盒子】元素上)
![](https://pic7.zhimg.com/50/v2-246ea523ff880290f136fb95b98e18c5_hd.jpg)
align-items:flex-start;
![](https://pic3.zhimg.com/50/v2-fad035a876187b59ab5993e064163c93_hd.jpg)
align-items:flex-end;
![](https://pic1.zhimg.com/50/v2-0cfb0efb522de5ed83bf72ac30f084be_hd.jpg)
align-items:center;
![](https://pic3.zhimg.com/50/v2-e119279ed89869076f9986d3c1fd0f07_hd.jpg)
align-items:baseline;
![](https://pic4.zhimg.com/50/v2-25cd909a7a249aaf1e5287f861477815_hd.jpg)
align-items:stretch;
![](https://pic2.zhimg.com/50/v2-33e9d552950135a7c94a3032cf2cd256_hd.jpg)
五、媒体查询
1.什么是媒体查询
使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
2.媒体查询的作用
可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果,是响应式布局实现的主要方式
3.媒体查询的语法
v 外联css语法:
<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
媒体类型:mediatype
关键字:and|not|only
媒体特征:media feature
实例:
<link rel="stylesheet" media="screen and (min-width:1024px)" href="red.css" />
v 内嵌样式的语法:
@media mediatype and|not|only (media feature) { ... }
媒体类型:mediatype
关键字:and|not|only
媒体特征:media feature
![](https://pic3.zhimg.com/50/v2-3253d56352d2ffa044221f732beca7a3_hd.jpg)
![](https://pic2.zhimg.com/50/v2-feb7c75fc679801c0bc243ee816b77cb_hd.jpg)
@ media screen and (max-width: 960px){body{
![](https://pic2.zhimg.com/50/v2-47d6b61d30606701f8f0cc8537137e37_hd.jpg)
@ media screen and (max-(min-width:960px) and (max-width:1200px){body{background:yellow;}
四、课堂案例
下面是一个响应式布局的简单案例
![](https://pic3.zhimg.com/50/v2-8b5427940c45571f0451ad13fb8364e8_hd.jpg)
![](https://pic4.zhimg.com/50/v2-0fd2b254acac8de6e2a999549c09e59b_hd.jpg)
导航部分:
1) 导航部分由logo,导航和登录三部分组成,这三部分放置在一个header的父容器中,给header设置display:flex;使之成为弹性盒模型,并设置主轴方向为row,子元素在父容器中的对齐方式为两端对齐。
![](https://pic1.zhimg.com/50/v2-e1c969d9042e1812f765d9d2d877bbed_hd.jpg)
![](https://pic1.zhimg.com/50/v2-c9241d0875190d7e51384c87dc346eb3_hd.jpg)
2) 当窗口小于等于640px时,将导航隐藏,添加媒体查询
![](https://pic6.zhimg.com/50/v2-fdada3c2c4816e1fc9d6e0b85c2bac37_hd.jpg)
![](https://pic1.zhimg.com/50/v2-c10385e597fc44b07aed39abd3e4ad9f_hd.jpg)
![](https://pic2.zhimg.com/50/v2-359109895809a465abd95926ac312bfc_hd.jpg)
图片列表部分
1) 所有的图片都放置在一个class名为picture的父容器中,给父容器添加display:flex;使之成为弹性盒模型,并设置子元素的对齐方式为居中对齐(justify-content:center;),并设置每一个子元素占据父元素的25%,溢出换行显示。
![](https://pic4.zhimg.com/50/v2-f245c23554e33593561e5ea8a2906fd9_hd.jpg)
![](https://pic3.zhimg.com/50/v2-58791d5f7783b4eaf11f3b2aff0ece22_hd.jpg)
2) 添加媒体查询, 当窗口小于640px时,每行放置两张图片,即每个子元素占据50%;
![](https://pic1.zhimg.com/50/v2-34f477bd7a2f13f09b98a70fa76335f1_hd.jpg)
![](https://pic4.zhimg.com/50/v2-71560b651b6571b0c1af10061ae04d2c_hd.jpg)
![](https://pic2.zhimg.com/50/v2-98fb6de83d5e1aa24501d5fce08b0df5_hd.jpg)
综上所述,掌握了弹性盒模型和媒体查询,我们就可以很轻松的只做出一个响应式的网站。
了解更多请访问:
http://www.ndfweb.cn/news-892.html