你不知道的CSS布局之 grid & flex

html-css030

你不知道的CSS布局之 grid & flex,第1张

[toc]

默认子元素按行排列

Flexbox 布局是一维布局方式,要么按行排列,要么按列排列。

align-items 控制交叉轴, justify-content 控制主轴,始终不变。

flex-basis是用来设置 main size 的。使用 flex-basis,可以同时管理行模式下的宽度和列模式下的高度。

此时 width 失效,但是可以用 min-width 限制

在列模式下,设置高度

flex 容器在有剩余空间的时候,子元素占据剩余空间的占比。适合一些浮动的布局。

超过边界自动换行

在以前面对这样的效果,最好的解决方案是能过HTML的结构来做一定的处理。比如:

<div class="banner">

    <div class="container"></div>

</div>

比如我们的布局效果是960px的水平居中效果:

.container {

    width: 960px

    marign-left: auto

    margin-right: auto

}

.banner .container {

    width: 100%

}

但这种方法虽然能解决我们布局中在某个区域中实现全屏效果。但有的时候,这种方法并不能解决问题。不过,值得庆幸的是,有另外的方案可以在限宽的容器中实现全屏效果。

.u-containProse {

    max-width: 40em

    margin-left: auto

    margin-right: auto

}

.u-release {

    margin-left: calc(-50vw + 50%)

    margin-right: calc(-50vw + 50%)

}

这是一个较新的方案,不过有一个缺点。虽然这个方法能在限定宽度容器中实现全屏的效果,但是在一些平台上会出现一个水平滚动条,这是让人无法接受的。除非你在body元素上设置overflow-x:hidden。