时间:2021-05-25
一、源码文件
_grid.scss:格子系统类文件
Mixins/_grid.scss:支持格子系统实现的mixin集合
Mixins/_grid-framework.scss:格子系统实现的核心mixin
二、支持的功能
1. 实现按百分比布局
2. 实现格子的定位
3. 实现格子的嵌套
4. 如果只使用格子系统,可以只编码bootstrap-grid.scss文件
三、实现原理
1、 按百分比布局,主要思考的问题如何在不同的设备上平均分配的宽度,bootstrap只是用了简单的百分比,在任何尺寸设备下都是使用相同的百分比。
2、 格子的定位:解决了格子向左移动、向右移动、以格子向右偏移几个单元格的能力
3、 格子的嵌套:实现了格子内容再嵌套格子布局系统。
四、源码分析
1、_grid.scss:格子系统生成的主类,引用了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的样式的生成:
i. Push:向右推几个格子,用的是left
ii. Pull:向左推几个格子,用的是right
iii. Offset:利用的是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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
刚开始用Bootstrap的格子系统写布局的时候遇到了这样一个问题:我的页面中有这样一个布局我希望当屏幕的宽度小于他们俩宽度之和的时候,右边的部分会掉下来,他们
Bootstrap是最受欢迎的HTML、CSS和JS框架,用于开发响应式布局、移动设备优先的WEB项目。——Bootstrap官网Bootstrap来自Twit
如何使用bootstrap日历datetimepicker插件?一、引入文件1、css样式2、js文件二、布局代码1、布局代码:三、js调用代码:$(funct
Bootstrap是最受欢迎的HTML、CSS和JS框架,用于开发响应式布局、移动设备优先的WEB项目。因为Bootstrap需要jquery的支持,所以在使用
一:Bootstrap简介 Boostrap是一个非常受欢迎的前端开发框架,该框架极大的提高前端团队的开发效率。Bootstrap对常见的CSS布局组件和Ja