mobicss - CSS框架 - 栅格系统 前端资源



http://getmobicss.com/docs/flexbox.html

https://github.com/mobi-css/mobi.css/releases

http://getmobicss.com/

Container and units

First of all, let's create a .flex-left container which contains several .units. In this case, .flex-left's width is divided equally between .units.

unit
unit
unit
unit
unit
unit
unit
unit
<div class="flex-left">
<div class="unit">unit</div>
<div class="unit">unit</div>
<div class="unit">unit</div></div><div class="flex-left">
<div class="unit">unit</div>
<div class="unit">unit</div>
<div class="unit">unit</div>
<div class="unit">unit</div>
<div class="unit">unit</div></div>

Secondly, let's see how to achieve a maximum 4# grid.

.unit-1
.unit-1-2
.unit-1-2
.unit-1-3
.unit-2-3
.unit-1-4
.unit-3-4
.unit-1-2
.unit-1-4
<div class="flex-left">
<div class="unit-1">.unit-1</div></div><div class="flex-left">
<div class="unit-1-2">.unit-1-2</div>
<div class="unit-1-2">.unit-1-2</div></div><div class="flex-left">
<div class="unit-1-3">.unit-1-3</div>
<div class="unit-2-3">.unit-2-3</div></div><div class="flex-left">
<div class="unit-1-4">.unit-1-4</div>
<div class="unit-3-4">.unit-3-4</div></div><div class="flex-left">
<div class="unit-1-2">.unit-1-2</div>
<div class="unit-1-4">.unit-1-4</div></div>

Finally, we can use .unit-0 as a custom size unit. Set a width to it, or let the content decide the width.

.unit
.unit-0 which has 200px width
.unit
.unit-0 which has no width set
.unit
.unit-1-4
<div class="flex-left">
<div class="unit">.unit</div>
<div class="unit-0" style="width:200px">.unit-0 which has 200px width</div>
<div class="unit">.unit</div></div><div class="flex-left">
<div class="unit-0">.unit-0 which has no width set</div>
<div class="unit">.unit</div>
<div class="unit-1-4">.unit-1-4</div></div>

Flexbox aligning

Forget margin:0 auto. We can align easily with flexbox!

.flex-left > div
.flex-center > div
.flex-right > div
.flex-top > div
.flex-middle > div
.flex-bottom > div
.flex-center.flex-middle > div
<div class="flex-left">
<div>.flex-left > div</div></div><div class="flex-center">
<div>.flex-center > div</div></div><div class="flex-right">
<div>.flex-right > div</div></div><div class="flex-top" style="height:60px;">
<div>.flex-top > div</div></div><div class="flex-middle" style="height:60px;">
<div>.flex-middle > div</div></div><div class="flex-bottom" style="height:60px;">
<div>.flex-bottom > div</div></div><div class="flex-center flex-middle" style="height:60px;">
<div>.flex-center.flex-middle > div</div></div>

Vertical flexbox

We can use .flex-vertical to easily achieve vertical flexbox layout.

.unit-0
.unit
.unit-1-4
<div class="flex-vertical" style="height:200px;">
<div class="unit-0">.unit-0</div>
<div class="unit">.unit</div>
<div class="unit-1-4">.unit-1-4</div></div>

Wrapable flexbox

By default the flex-wrap of flexbox container is set to nowrap, this is to prevent some unexpected wrap. We can set it to wrap using .flex-wrap:

.unit-0 with a lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot of text
.unit
.unit-1-4
.flex-wrap > .unit-0 with a lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot of text
.unit
.unit-1-4
<div class="flex-left">
<div class="unit-0">.unit-0 with a lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot of text</div>
<div class="unit">.unit</div>
<div class="unit-1-4">.unit-1-4</div></div><div class="flex-left flex-wrap">
<div class="unit-0">.flex-wrap > .unit-0 with a lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot lot of text</div>
<div class="unit">.unit</div>
<div class="unit-1-4">.unit-1-4</div></div>

Unit 1 on mobile

Sometimes we need to show .unit-1-3 on desktop, and .unit-1 on mobile. We can use .unit-1-on-mobile inside .flex-wrap to achieve this:

.flex-wrap > .unit-1-3.unit-1-on-mobile
.flex-wrap > .unit-2-3.unit-1-on-mobile
<div class="flex-left flex-wrap">
<div class="unit-1-3 unit-1-on-mobile">.flex-wrap > .unit-1-3.unit-1-on-mobile</div>
<div class="unit-2-3 unit-1-on-mobile">.flex-wrap > .unit-2-3.unit-1-on-mobile</div></div>

Units gap

In all of the above examples, the .unit* has no left and right paddings, it may not convenient sometimes. We can add .units-gap and .units-gap-big to the flexbox container to add gaps between .unit*s:

.units-gap > .unit-0
.units-gap > .unit
.units-gap > .unit-1-4
<div class="flex-left units-gap top-gap text-center">
<div class="unit-0 site-box">.units-gap > .unit-0</div>
<div class="unit site-box">.units-gap > .unit</div>
<div class="unit-1-4 site-box">.units-gap > .unit-1-4</div></div>
.units-gap-big > .unit-0
.units-gap-big > .unit
.units-gap-big > .unit-1-4
<div class="flex-left units-gap-big top-gap text-center">
<div class="unit-0 site-box">.units-gap-big > .unit-0</div>
<div class="unit site-box">.units-gap-big > .unit</div>
<div class="unit-1-4 site-box">.units-gap-big > .unit-1-4</div></div>


AAA

.flex-bottom,
.flex-center,
.flex-left,
.flex-middle,
.flex-right,
.flex-top,
.flex-vertical {
    -ms-flex-flow: row nowrap;
    -webkit-box-direction: normal;
    -webkit-box-orient: horizontal;
    -webkit-flex-flow: row nowrap;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    flex-flow: row nowrap;
}
.flex-bottom,
.flex-center,
.flex-left,
.flex-middle,
.flex-right,
.flex-top,
.flex-vertical.flex-bottom,
.flex-vertical.flex-center,
.flex-vertical.flex-left,
.flex-vertical.flex-middle,
.flex-vertical.flex-right,
.flex-vertical.flex-top {
    -ms-flex-align: stretch;
    -ms-flex-pack: start;
    -webkit-align-items: stretch;
    -webkit-box-align: stretch;
    -webkit-box-pack: start;
    -webkit-justify-content: flex-start;
    align-items: stretch;
    justify-content: flex-start;
}
.flex-center,
.flex-vertical.flex-middle {
    -ms-flex-pack: center;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    justify-content: center;
}
.flex-right,
.flex-vertical.flex-bottom {
    -ms-flex-pack: end;
    -webkit-box-pack: end;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
}
.flex-top,
.flex-vertical.flex-left {
    -ms-flex-align: start;
    -webkit-align-items: flex-start;
    -webkit-box-align: start;
    align-items: flex-start;
}
.flex-middle,
.flex-vertical.flex-center {
    -ms-flex-align: center;
    -webkit-align-items: center;
    -webkit-box-align: center;
    align-items: center;
}
.flex-bottom,
.flex-vertical.flex-right {
    -ms-flex-align: end;
    -webkit-align-items: flex-end;
    -webkit-box-align: end;
    align-items: flex-end;
}
.units-gap {
    margin-left: -7.5px;
    margin-right: -7.5px;
}
.units-gap > .unit,
.units-gap > .unit-0,
.units-gap > .unit-1,
.units-gap > .unit-1-2,
.units-gap > .unit-1-3,
.units-gap > .unit-1-4,
.units-gap > .unit-1-on-mobile,
.units-gap > .unit-2-3,
.units-gap > .unit-3-4 {
    padding-left: 7.5px;
    padding-right: 7.5px;
}
.units-gap-big {
    margin-left: -15px;
    margin-right: -15px;
}
.units-gap-big > .unit,
.units-gap-big > .unit-0,
.units-gap-big > .unit-1,
.units-gap-big > .unit-1-2,
.units-gap-big > .unit-1-3,
.units-gap-big > .unit-1-4,
.units-gap-big > .unit-1-on-mobile,
.units-gap-big > .unit-2-3,
.units-gap-big > .unit-3-4 {
    padding-left: 15px;
    padding-right: 15px;
}
.unit {
    -ms-flex-positive: 1;
    -ms-flex-preferred-size: 0;
    -webkit-box-flex: 1;
    -webkit-flex-basis: 0;
    -webkit-flex-grow: 1;
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%;
}
.unit-1,
.unit-1-2,
.unit-1-3,
.unit-1-4,
.unit-1-on-mobile,
.unit-2-3,
.unit-3-4 {
    -ms-flex-negative: 0;
    -webkit-flex-shrink: 0;
    flex-shrink: 0;
}
.unit-1 {
    -ms-flex-preferred-size: 100%;
    -webkit-flex-basis: 100%;
    flex-basis: 100%;
    max-width: 100%;
}
.unit-1-2 {
    -ms-flex-preferred-size: 50%;
    -webkit-flex-basis: 50%;
    flex-basis: 50%;
    max-width: 50%;
}
.unit-1-3 {
    -ms-flex-preferred-size: 33.33%;
    -webkit-flex-basis: 33.33%;
    flex-basis: 33.33%;
    max-width: 33.33%;
}
.unit-2-3 {
    -ms-flex-preferred-size: 66.67%;
    -webkit-flex-basis: 66.67%;
    flex-basis: 66.67%;
    max-width: 66.67%;
}
.unit-1-4 {
    -ms-flex-preferred-size: 25%;
    -webkit-flex-basis: 25%;
    flex-basis: 25%;
    max-width: 25%;
}
.unit-3-4 {
    -ms-flex-preferred-size: 75%;
    -webkit-flex-basis: 75%;
    flex-basis: 75%;
    max-width: 75%;
}
.flex-vertical {
    -ms-flex-direction: column;
    -webkit-box-direction: normal;
    -webkit-box-orient: vertical;
    -webkit-flex-direction: column;
    flex-direction: column;
}
.flex-vertical > .unit,
.flex-vertical > .unit-0,
.flex-vertical > .unit-1,
.flex-vertical > .unit-1-2,
.flex-vertical > .unit-1-3,
.flex-vertical > .unit-1-4,
.flex-vertical > .unit-1-on-mobile,
.flex-vertical > .unit-2-3,
.flex-vertical > .unit-3-4 {
    max-width: none;
}
.flex-vertical > .unit-1 {
    max-height: 100%;
}
.flex-vertical > .unit-1-2 {
    max-height: 50%;
}
.flex-vertical > .unit-1-3 {
    max-height: 33.33%;
}
.flex-vertical > .unit-2-3 {
    max-height: 66.67%;
}
.flex-vertical > .unit-1-4 {
    max-height: 25%;
}
.flex-vertical > .unit-3-4 {
    max-height: 75%;
}
.flex-wrap {
    -ms-flex-wrap: wrap;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
}
@media (max-width: 767px) {
    .unit-1-on-mobile {
        -ms-flex-preferred-size: 100%;
        -webkit-flex-basis: 100%;
        flex-basis: 100%;
        max-width: 100%;
    }
    .flex-vertical > .unit-1-on-mobile {
        max-height: 100%;
    }
}


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回