zoukankan      html  css  js  c++  java
  • Bootstrap栅格系统

    移动设备优先

    • Bootstrap 3将对移动设备的友好支持直接融合进了框架的内核中,Bootstrap是移动设备优先的。
    • 为了确保适当的绘制和触屏缩放,需要在head中添加viewport元数据标签。设置 meta 属性为 user-scalable=no 可以禁用视口缩放。
    •  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">  

    布局容器

    • Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器。.container 类用于固定宽度;.container-fluid 类(流式布局容器)用于 100% 宽度。两个类不能互相嵌套。
    • 随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列,用于通过一系列的行(row)与列(column)的组合来创建页面布局,网页中的内容就可以放在创建好的栅格系统中。
    • “行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中。
    • lg--large,表示大的;md--middle,表示中等的;sm--small,表示小的;xs--extra small,表示特小的。
    <div class="container">
                <div class="row">
                    <div class="col-lg-1 col-md-3 con ">col-lg-1    </div>
                    <div class="col-lg-1 col-md-3 con">col-lg-1    </div>
                </div>
    </div>        
    • 内容应当放置于“列(column)”内,并且,只有“列(column)”可以作为行(row)”的直接子元素。通过为“列(column)”设置 padding 属性,从而创建列与列之间的间隔(gutter)。
    • 如果一“行(row)”中包含了的“列(column)”大于 12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列。

    媒体查询

    /* 超小屏幕(手机,小于 768px) */
    /* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的(还记得 Bootstrap 是移动设备优先的吗?) */
    
    /* 小屏幕(平板,大于等于 768px) */
    @media (min- @screen-sm-min) { ... }
    
    /* 中等屏幕(桌面显示器,大于等于 992px) */
    @media (min- @screen-md-min) { ... }
    
    /* 大屏幕(大桌面显示器,大于等于 1200px) */
    @media (min- @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) { ... }
     

    水平排列

    <div class="row">
      <div class="col-md-1 con">.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从而设置css属性,如.con
    • col-md-1中的屏幕的列,1/12列。将屏幕分为12列
    • 如果不希望所有列在小屏幕上都堆叠在一起,可以使用针对超小屏幕和中等屏幕定义的类.col-xs-* 和 .col-md-*
    • 为了使用内置的栅格系统将内容再次嵌套,可以通过添加一个新的 .row 元素和一系列 .col-sm-* 元素到已经存在的 .col-sm-* 元素内。

    响应式列重置

    • 在某些阈值时,某些列可能会出现比别的列高的情况。为了克服这一问题,建议联合使用 .clearfix 和 响应式工具类。(用于在分界点清除响应)
    • 除了列在分界点清除响应, 您可能需要 重置偏移, 后推或前拉某个列。在特定的断点处重置偏移,推动和拉动。

    列偏移

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

    嵌套列

    • 为了使用内置的栅格系统将内容再次嵌套,可以通过添加一个新的 .row 元素和一系列 .col-sm-* 元素到已经存在的 .col-sm-* 元素内。被嵌套的行(row)所包含的列(column)的个数不能超过12(不一定占满12列)。

    列排序

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

    Less mixin 和变量

    • 通过变量来定义列数、槽(gutter)宽、媒体查询阈值(用于确定合适让列浮动)。我们使用这些变量生成预定义的栅格类,如上所示,还有如下所示的定制 mixin。
    @grid-columns:              12;
    @grid-gutter-         30px;
    @grid-float-breakpoint:     768px;
    • mixin

      mixin 用来和栅格变量一同使用,为每个列(column)生成语义化的 CSS 代码。

    • 官方源码
    // Creates a wrapper for a series of columns
    .make-row(@gutter: @grid-gutter-width) {
      // Then clear the floated columns
      .clearfix();
    
      @media (min- @screen-sm-min) {
        margin-left:  (@gutter / -2);
        margin-right: (@gutter / -2);
      }
    
      // Negative margin nested rows out to align the content of columns
      .row {
        margin-left:  (@gutter / -2);
        margin-right: (@gutter / -2);
      }
    }
    
    // Generate the extra small columns
    .make-xs-column(@columns; @gutter: @grid-gutter-width) {
      position: relative;
      // Prevent columns from collapsing when empty
      min-height: 1px;
      // Inner gutter via padding
      padding-left:  (@gutter / 2);
      padding-right: (@gutter / 2);
    
      // Calculate width based on number of columns available
      @media (min- @grid-float-breakpoint) {
        float: left;
         percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the small columns
    .make-sm-column(@columns; @gutter: @grid-gutter-width) {
      position: relative;
      // Prevent columns from collapsing when empty
      min-height: 1px;
      // Inner gutter via padding
      padding-left:  (@gutter / 2);
      padding-right: (@gutter / 2);
    
      // Calculate width based on number of columns available
      @media (min- @screen-sm-min) {
        float: left;
         percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the small column offsets
    .make-sm-column-offset(@columns) {
      @media (min- @screen-sm-min) {
        margin-left: percentage((@columns / @grid-columns));
      }
    }
    .make-sm-column-push(@columns) {
      @media (min- @screen-sm-min) {
        left: percentage((@columns / @grid-columns));
      }
    }
    .make-sm-column-pull(@columns) {
      @media (min- @screen-sm-min) {
        right: percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the medium columns
    .make-md-column(@columns; @gutter: @grid-gutter-width) {
      position: relative;
      // Prevent columns from collapsing when empty
      min-height: 1px;
      // Inner gutter via padding
      padding-left:  (@gutter / 2);
      padding-right: (@gutter / 2);
    
      // Calculate width based on number of columns available
      @media (min- @screen-md-min) {
        float: left;
         percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the medium column offsets
    .make-md-column-offset(@columns) {
      @media (min- @screen-md-min) {
        margin-left: percentage((@columns / @grid-columns));
      }
    }
    .make-md-column-push(@columns) {
      @media (min- @screen-md-min) {
        left: percentage((@columns / @grid-columns));
      }
    }
    .make-md-column-pull(@columns) {
      @media (min- @screen-md-min) {
        right: percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the large columns
    .make-lg-column(@columns; @gutter: @grid-gutter-width) {
      position: relative;
      // Prevent columns from collapsing when empty
      min-height: 1px;
      // Inner gutter via padding
      padding-left:  (@gutter / 2);
      padding-right: (@gutter / 2);
    
      // Calculate width based on number of columns available
      @media (min- @screen-lg-min) {
        float: left;
         percentage((@columns / @grid-columns));
      }
    }
    
    // Generate the large column offsets
    .make-lg-column-offset(@columns) {
      @media (min- @screen-lg-min) {
        margin-left: percentage((@columns / @grid-columns));
      }
    }
    .make-lg-column-push(@columns) {
      @media (min- @screen-lg-min) {
        left: percentage((@columns / @grid-columns));
      }
    }
    .make-lg-column-pull(@columns) {
      @media (min- @screen-lg-min) {
        right: percentage((@columns / @grid-columns));
      }
    }
    •  可以通过修改这些值,定制自己想要的布局
    • 实例:利用默认设置生成两列布局(列之间有间隔)的案例。
    .wrapper {
      .make-row();
    }
    .content-main {
      .make-lg-column(8);
    }
    .content-secondary {
      .make-lg-column(3);
      .make-lg-column-offset(1);
    }

    <div class="wrapper">
      <div class="content-main">...</div>
      <div class="content-secondary">...</div>
    </div>

  • 相关阅读:
    AODV路由协议的路由缓存队列详解
    NS各种常用资料(转)
    Zigbee之旅(二):第一个CC2430程序——LED灯闪烁实验(转)
    计算机核心期刊一览【转】
    NS2中能量模型的添加
    Zigbee之旅(一):开天辟地(转)
    NS2能量模型
    Zigbee之旅(三):几个重要的CC2430基础实验——外部中断(转)
    如何画MDI主窗体的背景
    Speed up the display of Delphi list components
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/11846091.html
Copyright © 2011-2022 走看看