源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

全面解析bootstrap格子布局

  • 时间:2021-10-30 22:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:全面解析bootstrap格子布局
[b]一、源码文件[/b] [b]_grid.scss:[/b]格子系统类文件 [b]Mixins/_grid.scss:[/b]支持格子系统实现的mixin集合 [b]Mixins/_grid-framework.scss:[/b]格子系统实现的核心mixin [b]二、支持的功能[/b] 1. 实现按百分比布局 2. 实现格子的定位 3. 实现格子的嵌套 4. 如果只使用格子系统,可以只编码bootstrap-grid.scss文件 [b]三、实现原理[/b] [b]1、 按百分比布局[/b],主要思考的问题如何在不同的设备上平均分配的宽度,bootstrap只是用了简单的百分比,在任何尺寸设备下都是使用相同的百分比。 [b]2、 格子的定位:[/b]解决了格子向左移动、向右移动、以格子向右偏移几个单元格的能力 [b]3、 格子的嵌套:[/b]实现了格子内容再嵌套格子布局系统。 [b]四、源码分析[/b] [b]1、_grid.scss:[/b]格子系统生成的主类,引用了mixins/_grid.scss、mixins/_grid-framework.scss、variables.scss类中的变量及相关方法。 首先:定义两个容器类      a) container:格子容器,根据不同设备定义不同的宽度,不会充满全屏;      b) continaer-fluid:格子容器,在任何支持下都会充满全屏 container和container-fluid都使用了make-container(mixins/_grid.scss),make-container只实现了居中、左右内边距、清除浮动等控制;其中container根据不同设备定义了容器的宽度 然后:定义row(行): 调用了make-row(mixins/_grids.scss)实现清除浮动、左右外边距的定义,在4.0中,如果开启了flex布局的支持,就设定容器的display为flex和flex-wrap为wrap,并去掉清浮动。 再则:直接调用make-grid-columns(mixins/_grid-framework.scss)实现单元格的建立     a) make-grid-columns:单元格生成的入口方法,传递所能支持的格子总数、外边距宽度、所支持的几种尺寸     b) make-grid-columns引用了mixins/_grid.scss中的许多方法:     a) 用到了map的map-key函数,用于遍历一个map的key集合; 用到了@extend函数,用于继承,实现所有col左浮动,以及所有col都相对定位。
@for $i from 1 through $columns {
   .col-#{$breakpoint}-#{$i} {
    @extend %grid-column; //extend是继承,将此合并为一个样式集合
    //.col-xs-1,col-xs-2{ positiona:relative; .... }
   }
  }
a) Make-col-span函数,实现col宽度的计算 b) 调用mixins/_grid.scss中的make-col-modifier方法,实现push、pull、offset的样式的生成: [b]i. Push:[/b]向右推几个格子,用的是left [b]ii. Pull:[/b]向左推几个格子,用的是right [b]iii. Offset:[/b]利用的是margin-left实现,向右推向个百分比。
@mixin make-col-offset($size, $columns: $grid-columns) {
 margin-left: percentage($size / $columns);
}

@mixin make-col-push($size, $columns: $grid-columns) {
 left: if($size > 0, percentage($size / $columns), auto);
}

@mixin make-col-pull($size, $columns: $grid-columns) {
 right: if($size > 0, percentage($size / $columns), auto);
}

@mixin make-col-modifier($type, $size, $columns) {
 // Work around the lack of dynamic mixin @include support 
 @if $type == push {
  @include make-col-push($size, $columns);
 } @else if $type == pull {
  @include make-col-pull($size, $columns);
 } @else if $type == offset {
  @include make-col-offset($size, $columns);
 }
}
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部