Bootstrap布局方式详解

 更新时间:2016年05月27日 14:57:12   作者:好记忆不如烂键盘  
这篇文章主要为大家详细介绍了Bootstrap布局方式,分析了Bootstrap网格系统的各种特性,感兴趣的小伙伴们可以参考一下

Bootstrap 3 是移动设备优先的,在这个意义上,Bootstrap 代码从小屏幕设备(比如移动设备、平板电脑)开始,然后扩展到大屏幕设备(比如笔记本电脑、台式电脑)上的组件和网格。

一、移动设备优先策略
内容:决定什么是最重要的。
2、布局
优先设计更小的宽度。
基础的 CSS 是移动设备优先,媒体查询是针对于平板电脑、台式电脑。
3、渐进增强
随着屏幕大小的增加而添加元素。

响应式网格系统随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。如下图:

二、Bootstrap 网格系统(Grid System)的工作原理
网格系统通过一系列包含内容的行和列来创建页面布局。下面列出了 Bootstrap 网格系统是如何工作的:

1、行必须放置在 .container class 内,以便获得适当的对齐(alignment)和内边距(padding)。
2、使用行来创建列的水平组。
3、内容应该放置在列内,且唯有列可以是行的直接子元素。
4、预定义的网格类,比如 .row 和 .col-xs-4,可用于快速创建网格布局。LESS 混合类可用于更多语义布局。
5、列通过内边距(padding)来创建列内容之间的间隙。该内边距是通过 .rows 上的外边距(margin)取负,表示第6、一列和最后一列的行偏移。
7、网格系统是通过指定您想要横跨的十二个可用的列来创建的。例如,要创建三个相等的列,则使用三个 .col-xs-4。

三、媒体查询
媒体查询是非常别致的"有条件的 CSS 规则"。它只适用于一些基于某些规定条件的 CSS。如果满足那些条件,则应用相应的样式。

Bootstrap 中的媒体查询允许您基于视口大小移动、显示并隐藏内容。下面的媒体查询在 LESS 文件中使用,用来创建 Bootstrap 网格系统中的关键的分界点阈值。

/* 超小设备(手机,小于 768px) */
/* Bootstrap 中默认情况下没有媒体查询 */
 
/* 小型设备(平板电脑,768px 起) */
@media (min-width: @screen-sm-min) { ... }
 
/* 中型设备(台式电脑,992px 起) */
@media (min-width: @screen-md-min) { ... }
 
/* 大型设备(大台式电脑,1200px 起) */
@media (min-width: @screen-lg-min) { ... }

我们有时候也会在媒体查询代码中包含 max-width,从而将 CSS 的影响限制在更小范围的屏幕大小之内。

@media (max-width: @screen-xs-max) { ... }
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
@media (min-width: @screen-lg-min) { ... }

媒体查询有两个部分,先是一个设备规范,然后是一个大小规则。在上面的案例中,设置了下列的规则:

让我们来看下面这行代码:
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
对于所有带有 min-width: @screen-sm-min 的设备,如果屏幕的宽度小于 @screen-sm-max,则会进行一些处理。

四、网格选项
下表总结了Bootstrap 网格系统如何跨多个设备工作:

五、基本的网格结构
下面是 Bootstrap 网格的基本结构:

<div class="container">
 <div class="row">
  <div class="col-*-*"></div>
  <div class="col-*-*"></div>  
 </div>
 <div class="row">...</div>
</div>
<div class="container">....

下面是个具体代码实例:

<div class="container">
  <h1>Hello, world!</h1>
  <div class="row">
   <!--超小设备手机(<768px) -->
   <div class="col-xs-1" style="background: #f00">1</div>
   <div class="col-xs-1" style="background: #b2b0b0">2</div>
   <div class="col-xs-1" style="background: #ff6a00">3</div>
   <div class="col-xs-1" style="background: #ffd800">4</div>
   <div class="col-xs-1" style="background: #4cff00">5</div>
   <div class="col-xs-1" style="background: #0ff">6</div>
   <div class="col-xs-1" style="background: #0094ff">7</div>
   <div class="col-xs-1" style="background: #b200ff">8</div>
   <div class="col-xs-1" style="background: #ff00dc">9</div>
   <div class="col-xs-1" style="background: #ff006e">10</div>
   <div class="col-xs-1" style="background: #ac5050">11</div>
   <div class="col-xs-1" style="background: #54bd4f">12</div>
  </div>
  <div class="row">
   <!--小型设备平板电脑(≥768px) -->
   <div class="col-sm-4" style="background: #b2b0b0">1</div>
   <div class="col-sm-4" style="background: #ffd800">1</div>
   <div class="col-sm-4" style="background: #ac5050">1</div>
  </div>
  <div class="row">
   <!--中型设备台式电脑(≥992px) -->
   <div class="col-md-4" style="background: #ac5050">1</div>
   <div class="col-md-8" style="background: #54bd4f">1</div>
  </div>
  <div class="row">
   <!--大型设备台式电脑(≥1200px) -->
   <div class="col-lg-8" style="background: #ac5050">1</div>
   <div class="col-lg-4" style="background: #54bd4f">1</div>
  </div>
 </div>

六、偏移列
偏移是一个用于更专业的布局的有用功能。它们可用来给列腾出更多的空间。例如,.col-xs=* 类不支持偏移,但是它们可以简单地通过使用一个空的单元格来实现该效果。

为了在大屏幕显示器上使用偏移,请使用 .col-md-offset-* 类。这些类会把一个列的左外边距(margin)增加 * 列,其中 * 范围是从 1到 11。

在下面的实例中,我们有 <div class="col-md-6">..</div>,我们将使用 .col-md-offset-3 class 来居中这个 div。

<div class="container">
  <div class="row">
   <div class="col-xs-6 col-md-offset-3"
    style="background-color: #dedef8;">
    <p>
    测试偏移列---此处往右偏移了3列
    </p>
   </div>
  </div>
  <div class="row">
   <div class="col-xs-1" style="background: #f00">1</div>
   <div class="col-xs-1" style="background: #b2b0b0">2</div>
   <div class="col-xs-1" style="background: #ff6a00">3</div>
   <div class="col-xs-1" style="background: #ffd800">4</div>
   <div class="col-xs-1" style="background: #4cff00">5</div>
   <div class="col-xs-1" style="background: #0ff">6</div>
   <div class="col-xs-1" style="background: #0094ff">7</div>
   <div class="col-xs-1" style="background: #b200ff">8</div>
   <div class="col-xs-1" style="background: #ff00dc">9</div>
   <div class="col-xs-1" style="background: #ff006e">10</div>
   <div class="col-xs-1" style="background: #ac5050">11</div>
   <div class="col-xs-1" style="background: #54bd4f">12</div>
  </div>
 </div>

显示效果:

七、嵌套列
为了在内容中嵌套默认的网格,请添加一个新的 .row,并在一个已有的 .col-md-* 列内添加一组 .col-md-* 列。被嵌套的行应包含一组列,这组列个数不能超过12(其实,没有要求你必须占满12列)。

在下面的实例中,布局有两个列,第二列被分为两行四个盒子。

<div class="container">
  <div class="row">
   <div class="col-xs-4" style="background: #b2b0b0">第一列</div>
   <div class="col-xs-8" style="background: #dedef8">第二列--里面嵌套了四个DIV
    <div class="row">
     <div class="col-xs-6" style="background: #0094ff">我是内容一<br /><br /><br /></div>
     <div class="col-xs-6" style="background: #b200ff">我是内容二</div>
    </div>
    <div class="row">
     <div class="col-xs-6" style="background: #ff00dc">我是内容三<br /><br /><br /></div>
     <div class="col-xs-6" style="background: #ff006e">我是内容四</div>
    </div>
   </div>
  </div>
 </div>

显示效果:

八、列排序
Bootstrap 网格系统另一个完美的特性,就是您可以很容易地以一种顺序编写列,然后以另一种顺序显示列。

您可以很轻易地改变带有 .col-md-push-* 和 .col-md-pull-* 类的内置网格列的顺序,其中 * 范围是从 1 到 11。

在下面的实例中,我们有两列布局,左列很窄,作为侧边栏。我们将使用 .col-md-push-* 和 .col-md-pull-* 类来互换这两列的顺序。

<div class="container">
  <div class="row">
   <div class="col-xs-4 col-md-push-8" style="background: #ff00dc">左边</div>
   <div class="col-xs-8 col-md-pull-4" style="background: #ff006e">右边</div>
  </div>
 </div>

显示效果:

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

Bootstrap学习教程

Bootstrap实战教程

Bootstrap插件使用教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 分享十八个杀手级JavaScript单行代码

    分享十八个杀手级JavaScript单行代码

    这篇文章主要给大家分享了十八个杀手级JavaScript单行代码,这些单行代码可以帮助你提高工作效率并可以帮助调试代码,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • vscode工具函数idGenerator使用深度解析

    vscode工具函数idGenerator使用深度解析

    这篇文章主要为大家介绍了vscode工具函数idGenerator使用深度解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • uniapp中renderjs使用与传值问题

    uniapp中renderjs使用与传值问题

    renderjs是一个运行在视图层的js,它只支持app-vue和h5,下面这篇文章主要给大家介绍了关于uniapp中renderjs使用与传值问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • js 数组 find,some,filter,reduce区别详解

    js 数组 find,some,filter,reduce区别详解

    区分清楚Array中filter、find、some、reduce这几个方法的区别,根据它们的使用场景更好的应用在日常编码中。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • JavaScript检测鼠标移动方向的方法

    JavaScript检测鼠标移动方向的方法

    这篇文章主要介绍了JavaScript检测鼠标移动方向的方法,涉及javascript鼠标操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 微信小程序调用支付接口的完整流程记录

    微信小程序调用支付接口的完整流程记录

    我们在做小程序支付相关的开发时,总会遇到这些难题,下面这篇文章主要给大家介绍了关于微信小程序调用支付接口的完整流程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • 小程序如何实现中间带加号的tabbar

    小程序如何实现中间带加号的tabbar

    自定义tabBar可以让开发者更加灵活地设置tabBar样式,以满足更多个性化的场景,下面这篇文章主要给大家介绍了关于小程序如何实现中间带加号tabbar的相关资料,需要的朋友可以参考下
    2022-04-04
  • Javascript循环绑定事件的示例代码

    Javascript循环绑定事件的示例代码

    我们先看一个关于Javascript利用循环绑定事件的例子
    2008-10-10
  • 一篇文章教你写出干净的JavaScript代码

    一篇文章教你写出干净的JavaScript代码

    JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,下面这篇文章主要给大家介绍了如何通过一篇文章教你写出干净的JavaScript代码,需要的朋友可以参考下
    2021-09-09
  • 判断浏览器的javascript版本的代码

    判断浏览器的javascript版本的代码

    话说最近在研究某著名跟踪系统,在其给用户的实施代码中有一段判断浏览器Javascript版本的代码引起了我的注意,于是问了下google如何判断浏览器的javascript版本
    2010-09-09

最新评论