全面解析bootstrap格子布局

发布网友 发布时间:2022-04-23 08:52

我来回答

2个回答

懂视网 时间:2022-04-20 01:07

我们知道,在使用Bootstrap栅格的时候,我们可以对网页方便的进行模块分割。Bootstrap 包含了一个响应式的、移动设备优先的、不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到12列。

它包含了用于简单的布局选项的预定义类,也包含了用于生成更多语义布局的功能强大的混合类。如果要2等分,使用col-md-6即可;要3等分,使用col-md-4即可;但如果我们要5等分或者8等分怎么办呢?下面的示例是bootstrap五等分布局:

<!DOCTYPE html>
<html>
 
 <head>
 <meta charset="UTF-8">
 <!--视口的设置,让网页能等比例的缩放到对应设备中-->
 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 <!--告诉ie浏览器用最新内核去渲染网页-->
 <meta http-equiv="X-UA-Compatible" content="ie=edge" />
 <title>Document</title>
 <link rel="stylesheet" href="https://cdn.staticfile.org/-bootstrap/3.3.7/css/bootstrap.min.css">
 
 <style type="text/css">
  .col-xs-1-5,
  .col-sm-1-5,
  .col-md-1-5,
  .col-lg-1-5 {
  position: relative;
  min-height: 1px;
  padding-right: 10px;
  padding-left: 10px;
  }
  
  .col-xs-1-5 {
  width: 20%;
  float: left;
  }
  
  @media (min-width: 768px) {
  .col-sm-1-5 {
   width: 20%;
   float: left;
  }
  }
  
  @media (min-width: 992px) {
  .col-md-1-5 {
   width: 20%;
   float: left;
  }
  }
  
  @media (min-width: 1200px) {
  .col-lg-1-5 {
   width: 20%;
   float: left;
  }
  }
 </style>
 
 <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
 <script src="https://cdn.staticfile.org/-bootstrap/3.3.7/js/bootstrap.min.js"></script>
 
 <body>
 
  <div>
  <div>
   <div>
   <div class="items text-center">
    <img src="../img/my.jpg" />
 
    <div>
    <div id="">姓名:<span>王婷</span></div>
    </div>
 
    <div>
    <div id="">性别:<span>女</span></div>
    </div>
 
    <div>
    <div id="">部门:<span>宣传部</span></div>
    </div>
   </div>
   </div>
   <div>
   <div class="items text-center">
    <img src="../img/my.jpg" />
 
    <div>
    <div id="">姓名:<span>王婷</span></div>
    </div>
 
    <div>
    <div id="">性别:<span>女</span></div>
    </div>
 
    <div>
    <div id="">部门:<span>宣传部</span></div>
    </div>
   </div>
   </div>
   <div>
   <div class="items text-center">
    <img src="../img/my.jpg" />
 
    <div>
    <div id="">姓名:<span>王婷</span></div>
    </div>
 
    <div>
    <div id="">性别:<span>女</span></div>
    </div>
 
    <div>
    <div id="">部门:<span>宣传部</span></div>
    </div>
   </div>
   </div>
   <div>
   <div class="items text-center">
    <img src="../img/my.jpg" />
 
    <div>
    <div id="">姓名:<span>王婷</span></div>
    </div>
 
    <div>
    <div id="">性别:<span>女</span></div>
    </div>
 
    <div>
    <div id="">部门:<span>宣传部</span></div>
    </div>
   </div>
   </div>
 
   <div>
   <div class="items text-center">
    <img src="../img/my.jpg" />
 
    <div>
    <div id="">姓名:<span>王婷</span></div>
    </div>
 
    <div>
    <div id="">性别:<span>女</span></div>
    </div>
 
    <div>
    <div id="">部门:<span>宣传部</span></div>
    </div>
   </div>
   </div>
  </div>
  </div>
 </body>
 
</html>

推荐:bootstrap入门教程

热心网友 时间:2022-04-19 22:15

一、源码文件
_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程序设计有所帮助。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com