浅谈CSS 栅格系统布局原理分析

2020-05-11 18:27:23易采站长站整理

.col-11 { flex: 0 0 91.666667%; }
.col-12 { flex: 0 0 100%; }

栅格系统可以决定每一个栅格的排版顺序,两种栅格系统实现方式不同,自然他们得排版方式也不同:


/*
* bootstrap@3.x版本 排版
*/
[class |= col] {
position: relative;
}
/* 向右移动指定的栅格数 */
.col-md-pull-1 { right: 8.33333333%; }
.col-md-pull-2 { right: 16.66666667%; }
.col-md-pull-3 { right: 25%; }
...
/* 向左移动指定的栅格数 */
.col-md-push-1 { left: 8.33333333%; }
.col-md-push-2 { left: 16.66666667%; }
.col-md-push-3 { left: 25%; }
...

/*
* bootstrap@4.0版本 排版
*/
.order-1 { order: 1; }
.order-2 { order: 2; }
.order-3 { order: 3; }
...

可以看到,@3.0版本采用的是相对定位进行左右移动栅格来进行排版,@4.0版本就很简洁,只用采用flex布局特有的order属性来进行排版。当然,这两个版本也有相同的排版方式,就是offset偏移:


/* bootstrap@3.x版本偏移 */
.col-md-offset-1 { margin-left: 8.33333333%; }
.col-md-offset-2 { margin-left: 16.66666667%; }
.col-md-offset-3 { margin-left: 25%; }
...

/* bootstrap@4.0版本偏移 */
.offset-1 { margin-left: 8.33333333%; }
.offset-2 { margin-left: 16.66666667%; }
.offset-3 { margin-left: 25%; }
...

两者都用margin-left进行偏移量设置。

二、Pure

pure的栅格系统又是另外一种方式实现,它支持最大24等分的栅格:


<div class="pure-g">
<div class="pure-u-1-3">1/3</div>
<div class="pure-u-1-3">1/3</div>
<div class="pure-u-1-3">1/3</div>
</div>
<div class="pure-g">
<div class="pure-u-1-8">1/8</div>
<div class="pure-u-1-8">1/8</div>
<div class="pure-u-1-8">1/8</div>
...
</div>
<div class="pure-g">
<div class="pure-u-1-24">1/24</div>
<div class="pure-u-1-24">1/24</div>
<div class="pure-u-1-24">1/24</div>
...
</div>

pure它的栅格系统采用的是伸缩与行内结合的方式:


.pure-g {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-flow: row wrap;
}
[class|=pure-u] {
display: inline-block;
*display: inline; /*iE < 8*/
zoom: 1;
}
.pure-u-1-24 { width: 4.1667%; }