全面解析bootstrap格子布局
一、源码文件
_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程序设计有所帮助。
bootstrap中container类和container-fluid类的区别
container的类描述:
.container{
padding-right:15px;
padding-left:15px;
margin-right:auto;
margin-left:auto
}
@media (min-width:768px){
.container{
width:750px
}
}
@media (min-width:992px){
.container{
width:970px
}
}
@media (min-width:1200px){
.container{
width:1170px
}
}
container_fluid的类描述:
.container-fluid {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
当屏幕宽度为1276px时,container类的显示效果为:
container_fluid类的显示效果为:
这时,container类的显示效果中包括margin和padding,而container_fluid类的显示效果中之包括padding。
当屏幕宽度小于768px时,container类的显示效果为:
container_fluid类的显示效果为:
如果浏览器宽度小于768px,则媒体查询部分不再生效,此时,container和container_fluid的显示效果是一样的,都只包括padding。
container 类用于固定宽度并支持响应式布局的容器。
.container-fluid 类用于 100% 宽度,占据全部唯空视口(viewport)的容器,自动实现响应式。怎么理解这两句话呢?
随着屏幕宽度的改变,container字样的位置是举渗会改变的,因为container类的宽度是750、970或1170。当屏幕宽度为950px时,container类的宽度时750(就是所谓的固定宽度),因此,此时的margin为100px,较1276px时靠有一些了(所谓的响应式布局)。
随着屏幕宽度的改变,container_fluid字样的位置不变,且布局也不变,此所谓“占据全部视口(viewport)的容器,自动实现响应式”正山脊。
bootstrap4栅格系统定义了几种屏幕大小
5种。
栅格系统是基于一个12列、有5种响应尺寸(对应不同的屏幕)的布局。
Bootstrap4栅格系统共有五个类:
1.col- 针对所有尺咐设备。
2.col-sm- 平板 - 屏幕宽度等于或大于 576px。
3.col-md- 桌面显亩态示器 - 屏幕宽度等于或大于 768px)
4.col-lg- 大桌面显示器 - 屏幕宽度等于或迅困源大于 992px)
5.col-xl- 超大桌面显示器 - 屏幕宽度等于或大于 1200px)
以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的前端知识。希望您喜欢!
版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。