1. 响应式布局开发原理

通过媒体查询针对不同宽度的设备进行适配 ,展示不同的样式结构。
响应式开发可以在不同的终端上用同一套界面来进行显示
且由于移动端设备的屏幕分辨率太多,响应式开发主要通过以下几个宽度来分类

设备划分 尺寸区间
超小屏幕(手机) < 768px
小屏设备(平板) >= 768px ~ < 992px
中等屏幕(桌面显示器) >= 992px ~ <1200px
宽屏设备(大桌面显示器) >= 1200px

1.1 响应式布局容器

响应式布局需要设置一个容器盒子(版心盒子)来配合子集元素进行变化
原理为通过媒体查询的方式,在不同的屏幕宽度下改变布局容器的样式,通过容器的改变来改变子级元素的排列方式和大小,从而实现在不同屏幕尺寸上展现不同的样式。
父级容器版心尺寸的划分

  • 超小屏幕:尺寸 < 768px 版心为width:100%
  • 小屏 :尺寸 > 768px 版心为750px
  • 中等屏幕 :尺寸 > 992px 版心为970px
  • 大屏幕 : 尺寸 > 1200px 版心为1170px
  • 标准如此,但是也可以根据自己的实际需求来定义划分
  • 规律:父容器的宽度总是比屏幕小一点,这是因为我们在处理的时候,让父容器居中,两边有些许空白,这样更好看,所以父容器,也可以叫做版心。





    2. bootstrap的介绍

    2.1 bootstrap简介

  • bootsrap属于Twitter,是目前在前端中最受欢迎的框架,基于HTMLCSSJavascript简洁灵活,让web开发更加快捷

bootstrap中文网

  • Bootstrap:是用于开发响应式布局,移动设备优先的web项目。
  • 框架:顾名思义就是一套架构,它有一套比较完整的网页功能解决方案,而且控制权在框架本身,有预制样式 库、组件和插件。使用者要按照框架所规定的某种规范进行开发。
  • 组件:很多样式的下拉菜单,导航栏,按钮等等组件。(这些带样式的,界面常用的效果,称之为组件
  • 插件:js代码写出来的效果(会自动轮播的轮播图等),称之为插件

    2.2 bootstrap优点

  • 拥有标准化的HTML+CSS编码规范
  • 提供简洁、直观、高效的组件
  • 拥有自己的生态圈,不断更新迭代
  • 使开发更加简单,从而提高开发效率

2.3 版本简介

2.x.x:停止维护,兼容性好,代码不够简洁,功能不够完善。
3.x.x:目前使用最多,稳定,但是放弃了IE6-IE7。对 IE8 支持但是界面效果不好,偏向用于开发响应式布局、移动设备优先的WEB 项目。
4.x.x:最新版,目前还不是很流行

2.4 bootstrap基本使用

通过官方网站下载Bootstrap,注意bootstrap分为开发环境和生产环境两种,下载完解压,创建bootstrap文件夹,将解压后的文件放入文件夹内,文件夹应在项目里。(因为下载的Bootstrap文件有和项目相同的文件夹名字,需要额外放入一个文件夹内)
响应式布局和bootstrap - 图1
将bootstrap中的三个文件夹(右侧),复制到自己创建的bootstrap文件夹(左侧)中。
在项目中创建HTML骨架,通过link引入相关的样式文件


在使用时通过官网查询样式进行使用,在创建的标签中插入需要的样式类

2.5 bootstrap布局容器

Bootstrap 需要为页面内容和栅格系统包裹一个容器,Bootstrap预先定义好了两个容器样式类

.container

  • .container 类用于固定宽度并支持响应式布局的容器。
  • .container 类,已经通过媒体查询处理了屏幕范围:
  • 大屏 ( >=1200px) 宽度定为 1170px
  • 中屏 ( >=992px) 宽度定为 970px
  • 小屏 ( >=768px) 宽度定为 750px
  • 超小屏 (100%)

    .container-fluid

  • 用于流式布局的容器,宽度为百分百,占据全部视口(viewport)的容器

  • 适合于单独移动端开发

    两者区别

  1. container-fluid的width是100%,而container的width是用媒体查询获得的动态尺寸。两者样式肯定是不一样的。并且由于padding的原因两者不可用嵌套,他们就是提供两种视觉风格。
  2. container-fluid和container 全部都是响应式的布局。只是container有1个98px的margin 存在 Container-fluid 没有。

2.6 bootstrap栅格系统

1. 介绍

  • Bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。
  • 栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。
  • Bootstrap里边的container的宽度是固定的,但是不同屏幕下,container的宽度不同,Bootstrap是将container进行12等份划分。
  • 那么屏幕变化,container变化,12等份的每一份变化,我们的界面元素的大小依据每一等份来设置,那么也就实现了屏幕适配。
  • 栅格系统:其实就是网格布局,有行有列。栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中

    2. 使用

    Bootstrap针对不同的屏幕大小,设置了对应的类样式的前缀:
超小屏幕(手机)< 768px 小屏设备(平板)>=768px 中等屏幕(桌面显示器)>=992px 宽屏设备(大桌面显示器)>=1200px
.container 最大宽度 自动(100%) 750px 970px 1170px
类前缀 .col-xs- .col-sm- .col-md- .col-lg-
列(column)数 12 12 12 12
  • 按照不同屏幕划分为1~12 等份 (一般都是划分为2等份)
  • 我们实现列的平均划分 需要给列添加 类前缀
  • 这样bootstrap才知道你是在哪个屏幕下,划分成几等份
  • xs:extra small—超小; sm:small—小; md:medium—中等; lg:large—大;
  • 列(column)大于 12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列
  • 每一列默认有左右15像素的 padding

3. 同时指定不同屏幕的类名

  • 在屏幕不断变化的情况下,我们的界面布局可能会发生比较大的改变,比如大屏幕一行显示4列,小屏幕一行显示3列,这种效果应该如何处理呢?
  • 可以同时为一列指定多个设备的类名,以便划分不同份数 例如 class=”col-md-4 col-sm-6”

4. 栅格嵌套-列嵌套

  • 栅格系统内置的栅格系统将内容再次嵌套
  • 简单理解就是一个列内再分成若干份小列
  • 我们可以通过添加一个新的 .row 元素和一系列 .col-sm- 元素到已经存在的 .col-sm-元素内
  • 也就是将一个row+col添加到一个col中

嵌套语法

  1. <!-- 列嵌套 -->
  2. <div class="col-sm-4">
  3. <div class="row">
  4. <div class="col-sm-6">小列</div>
  5. <div class="col-sm-6">小列</div>
  6. </div>
  7. </div>

5. 列偏移

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

列偏移效果如下
08.jpg

列偏移语法

  1. <!-- 列偏移 -->
  2. <div class="row">
  3. <div class="col-lg-4">1</div>
  4. <!-- 占4份,并且向右偏移4份 -->
  5. <div class="col-lg-4 col-lg-offset-4">2</div>
  6. </div>

效果09.jpg

6. 列排序
  • 有时候,我们希望左侧盒子与右侧盒子的顺序进行颠倒,那么这时候就需要用到列排序了
  • 但是它这个排序不是添加序号,而是使用push和pull,推和拉来改变
  • 通过使用 .col-md-push- 和 .col-md-pull- 类就可以很容易的改变列(column)的顺序

列排序效果10.jpg
列排序语法

  1. <!-- 列排序 -->
  2. <div class="row">
  3. <!-- 将左侧4份盒子,向右推8份的距离-->
  4. <div class="col-lg-4 col-lg-push-8">左侧</div>
  5. <!-- 将右侧8份盒子,向左拉4份的距离-->
  6. <div class="col-lg-8 col-lg-pull-4">右侧</div>
  7. </div>
  8. <!-- 怎么理解推和拉的方向?
  9. 假设,人站在界面左侧:
  10. 想将元素向右移动,那就是推,推过去。
  11. 想将元素向左移动,那就是拉,拉过来。
  12. -->

7. 响应式工具

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

语法
2.jpg