1.2.23 响应式布局基础
1.2.23.1 响应式布局介绍
1.响应式布局是2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多终端 -- 而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的,其目的是为用户提供更加舒适的界面和更好的用户体验。
2.优缺点
优点:1)面对不同分辨率设备灵活性强
2)能够快捷解决多设备显示适应问题
缺点:1)兼容各种设备工作量大,效率低下
2)代码累赘,会出现隐藏无用的元素,加载时间长
例子:www.etao.com(现在在电脑网页端打开好像没有用响应式布局了)
1.2.23.2 响应式布局效果
1.CSS中的Media Query(媒介查询):
设备宽高:device-width,device-height
渲染窗口的宽和高:width,height
设备的手持方向:orientation
设备的分辨率:resolution
2.使用方法:
外联
内嵌样式
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="style.css" type="text/css" media="only screen and (max-width:640px)"> <!--外联样式--> <style> <!--内嵌样式--> <!--注意and之后和括号之间的空格不能省略--> @media screen and (min-width:640px){ body{ background-color: blueviolet; } } </style> </head> <body> </body> </html>
1.2.23.3 响应式布局操作
传统的js操作实现响应式布局
index.html
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <meta name="viewport" content="width = device-width,initial-scale=1"> <!--initial-scale=1的作用是指按原比例缩放--> <title>Title</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body> <div class="heading"></div> <div class="container"> <div class="left"></div> <div class="main"></div> <div class="right"></div> </div> <div class="footing"></div> </body> </html>
style.css
*{ margin:0px; padding:0px; } .heading, .container, .footing{ margin: 10px auto; } .heading{ height:100px; background-color: chocolate; } .left, .right, .main{ background-color: cornflowerblue; } .footing{ height:100px; background-color: aquamarine; } @media screen and (min-width: 960px){ .heading, .container, .footing{ width:960px; } .left, .main, .right{ float:left; height:500px; } .left, .right{ width:200px; } .main{ margin-left:5px; margin-right: 5px; width:550px; } .container{ height:500px; } } @media screen and (min-width:600px) and (max-width:960px){ .heading, .container, .footing{ width:600px; } .left, .main{ float:left; height:400px; } .right{ display:none; } .left{ width:160px; } .main{ margin-left:5px; width:435px; } .container{ height:400px; } } @media screen and (max-width:600px){ .heading, .container, .footing{ width:400px; } .left, .right{ width:400px; height:100px; } .main{ margin-top:10px; width:400px; height:200px; } .right{ margin-top:10px; } .container{ height:420px; } }
1.2.24 响应式布局之bootstrap
1.2.24.1 Bootstrap介绍
1.了解Bootstrap
简洁、直观、强悍的前端开发框架、让web开发更迅速、简单。
2.优点:
快速、简单、灵活的栅格系统、小而强大、响应式布局、跨平台等
bootstrap在线引入
<!DOCTYPE html> <html> <head> <title>Bootstrap 实例</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--BootStrap中文网提供的免费CDN加速服务--> <!--Bootstrap核心CSS文件--> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.1.3/css/bootstrap.min.css"> <!-- jQuery文件。务必在bootstrap.min.js 之前引入 --> <script src="http://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <!--Bootstrap核心JavaScript文件--> <script src="http://cdn.bootcss.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> </head> <body> </body> </html>
1.2.24.2 css、组件以及JS介绍
usingbootstrap.html
<!DOCTYPE html> <html> <head> <title>Bootstrap 实例</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--BootStrap中文网提供的免费CDN加速服务--> <!--Bootstrap核心CSS文件--> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css"> <!-- jQuery文件。务必在bootstrap.min.js 之前引入 --> <script src="http://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <!--Bootstrap核心JavaScript文件--> <script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> <link rel="stylesheet" href="ownstyle.css" type="text/css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> <div class="col-md-1">.col-md-1</div> </div> <div class="row"> <div class="col-md-8">.col-md-8</div> <div class="col-md-4">.col-md-4</div> </div> <div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> <div class="col-md-4">.col-md-4</div> </div> <div class="row"> <div class="col-md-6">.col-md-6</div> <div class="col-md-6">.col-md-6</div> </div> </div> </body> </html>
ownstyle.css
.row{ margin-bottom: 20px; } .row .row{ margin-top: 0px; margin-bottom: 10px; } [class*="col-"]{ padding-top: 15px; padding-bottom: 15px; background-color: #eee; background-color: rgba(86,61,124,.15); /*后面的.15是指透明度和0.15一个效果*/ /*这里本来老师讲写的两行内容,但是只有后一个有作用,冲突了才会这样处理*/ border:1px solid #dddddd; border:1px solid rgba(86,61,124,.2); }
老师用的是老版的所以直接在head中修改bootstrap的版本号就可以了。
1.2.24.3 响应式布局之使用Bootstrap
这里我发现了几个问题:
margin设定了之后是指距离元素的border距离,与其他元素的margin无关
bootstrap里有很多已经设定好的类名,我们可以在网站中检查元素来知道到底该用什么类。
一般用container来放置居中元素。