项目二十一 Web开发之响应式布局

项目二十一 Web开发之响应式布局

项目要求

项目展示

响应式导航如图21.1所示,用Bootstrap3.0制作的网页PC端、PAD端、移动端分别如图21.2、21.3、21.4所示。

图21.1 响应式导航

图21.2 Bootstrap3.0制作的网页PC端

图21.3 Bootstrap3.0制作的网页PAD端

图21.4 Bootstrap3.0制作的网页移动端

教学内容

1. 响应式Web设计

响应式Web设计适合于多种屏幕尺寸大小,页面会随着屏幕大小的改变适时调整布局。案例如图21.5、21.6所示。

图21.5 科创页面的手机端和平板端

图21.6 科创页面的计算机端

2. 响应式开发原理

使用媒体查询 @ media针对不同宽度的设备进行布局和样式设置,从而适配不同设备的目的。设备划分为:① 小于768 px为手机;② 768 px - 992 px为平板;③ 992 px - 1200 px 为计算机端中等屏幕;④ 1200px以上为计算机端大屏幕。

3. 用媒体查询实现结构变化案例

(1)超小屏幕下屏幕小于768px,宽度为100%。

(2)小屏幕下屏幕大于等于768px,宽度为750px。

响应式开发原理

(3)中等屏幕下屏幕大于等于992px,宽度为950px。

(4)大屏幕下屏幕大于等于1200px,宽度为1170px。

4. Bootstrap响应式框架

框架:就是一套架构,它有一套比较完整的网页功能解决方案,而且控制权在框架本身,有预制的样式库、组件和插件。使用者要按照框架所规定的某种规范进行开发。

(1)Bootstrap简介。

Bootstrap 来自Twitter(推特),是目前最受欢迎的前端框架。Bootstrap是基于HTML、CSS和JavaScript的,其简洁灵活,使得Web开发更加快捷。

[中文网](http://www.bootcss.com/)

[官网](http://getbootstrap.com/)

(2)Bootstrap优点。

① 提供了一套简洁、直观、强悍的组件。

②标准化的html+css编码规范。

③有自己的生态圈,不断地更新迭代。

④让开发更简单,提高了开发效率。

(3)Bootstrap常用版本介绍。

3.*.*版本:目前使用最多、稳定,但是放弃了IE6-IE7。对IE8支持,但界面效果不好,偏向用于开发响应式布局、移动设备优先的Web项目。

4.*.*版本:源码采用Sass编写,选用弹性盒模型,新增网格层适配移动端,引入ES6新特性。

(4)Bootstrap框架的引入。

bootstrap引入1

bootstrap引入2

第一步:创建基本文件夹bootstrap,用来放bootstrap资源,如图21.7所示。

第二步:下载bootstrap文件放入项目。

第三步:将基本模板复制在html里,如图21.8所示。

第四步:引入资源文件。

图21.7 第一步创建基本文件夹

图21.8 Bootstrap响应式框架html 骨架结构

(5)Bootstrap布局容器。

布局容器

Bootstrap 需要为页面内容和栅格系统包裹一个.container 或者.container-fluid 容器,如图21.9所示。

图21.9 布局容器.container(上).container-fluid(下)

(6)Bootstrap 栅格系统。

Bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。

栅格系统(又叫作网格布局),用于通过一系列的行(row)与列(column)的组合来创建页面布局,将内容放入这些创建好的布局中即可。

按照不同屏幕划分为1~12等份。

行(row)可以去除父容器作用15px的边距。

xs-extra small:超小;

sm-small:小;

md-medium:中等;

lg-large:大;

列(column)大于12,多余的“列(column)”所在的标签将被作为一个整体另起一行排列,每一列默认有左右15像素的padding,可以同时为一列指定多个设备的类名,以便划分不同份数。

例如,class="col-md-4 col-sm-6"

栅格系统就是默认将父元素分成12等分。如果想设置子元素的宽度,可根据占据的份数来决定子元素的宽度。例如:子元素占据3等份,那么就相当于设置子元素width:25%,子元素占据4等份,那么就相当于设置子元素width:33.333%。

栅格系统是分为行和列,要先写行,创建一div添加类名为row即可,下面以div为列,可以通过类名设置每列的宽度。

栅格系统

如:col-xs-栅格的数量(设置超小屏幕的宽度)。

col-sm-栅格的数量(设置小屏幕的宽度)。

col-md-栅格的数量(设置中等屏幕的宽度)。

col-lg-栅格的数量(设置大屏幕的宽度)。

如果列的栅格数量加一起没有超过12,则可能出现空白并在一行显示,如果列的栅格数量加一起超过12,则在开始超过12的那个换行显示。

如:〈div class="container"〉

列的类名可以写多个,就是可以同时设置col-xs-、col-sm-、col-md-、col-lg-这样在不同屏幕下就会有不同的结构样式。

如:〈div class="container"〉

(7)栅格系统的列嵌套。

栅格系统内置的栅格系统将内容再次嵌套。简单理解就是一个列内再分成若干份小列。

可以通过添加一个新的.row元素和一系列.col-sm-*元素到已经存在的.col-sm-*元素内。

如:〈div class="col-sm-4"〉

列嵌套

效果如图21.10所示。

图21.10 列嵌套

(8)列偏移-offset-。

使用.col-md-offset-类可以将列向右侧偏移。这些类实际是通过使用选择器为当前元素增加了左侧的边距(margin)。

列偏移

效果如图21.11所示。

图21.11 列偏移

(9)列排序。

通过使用.col-md-push-*和.col-md-pull-*类就可以很容易改变列(column)的顺序。

列排序

效果如图21.12所示。

(10)响应式工具的显示与隐藏。

显示和隐藏

为了加快对移动设备友好页面的开发工作,利用媒体查询功能,并使用这些工具类可以方便地针对不同设备展示或隐藏页面内容,如图21.13所示。

图21.12 列排序前(上)和排序后(下)

图21.13 响应式工具的显示和隐藏

项目训练