手机
当前位置:查字典教程网 >网页设计 > Div+Css教程 >基础的CSS3弹性盒Flexbox布局使用实例
基础的CSS3弹性盒Flexbox布局使用实例
摘要:flexbox是一个新的盒子模型,当你给一个元素使用了flexbox模块,那么它的子元素就会指定的方向在水平或者纵向方向排列。这些子元素会按...

flexbox是一个新的盒子模型,当你给一个元素使用了flexbox模块,那么它的子元素就会指定的方向在水平或者纵向方向排列。这些子元素会按照一定的比例进行扩展或收缩来填补容器的可用空间。flexbox有许多很好用的地方,下面就着重讲述一下它的一些使用场景:

Example 1: flexbox等分布局

如果你要实现以下所示的样式,你可能首先想到的是用float:

基础的CSS3弹性盒Flexbox布局使用实例1

CSS Code复制内容到剪贴板 <ulid="ranktop3"> <li> <divclass="ranktab">1</div> <p>fdeg</p> <p>霸气值:170</p> </li> <li> <divclass="ranktab">2</div> <p>bling</p> <p>霸气值:160</p> </li> <li> <divclass="ranktab">3</div> <p>lea</p> <p>霸气值:150</p> </li> </ul> ulli{ width:32.9%; float:left; border-right:1pxsolid#fa9900; padding:5px0; }

但当只有2个排名后,少了一个li节点后,就会展示如下:

基础的CSS3弹性盒Flexbox布局使用实例2

删除两个li节点后如下:

基础的CSS3弹性盒Flexbox布局使用实例3

但是用户以及设计师肯定不希望看到这样的界面。他们肯定希望界面是这样的:

减少一个li节点后:

基础的CSS3弹性盒Flexbox布局使用实例4

删除两个li节点后如下:

基础的CSS3弹性盒Flexbox布局使用实例5

那么这里用display:flex布局是最好不过的了,新的flexbox布局模式被用来重新定义CSS中的布局方式:

CSS Code复制内容到剪贴板 ul{ display:flex;//表示改直接子元素用flex布局,默认横向布局 } ulli{ /*width:32.9%;*/ /*float:left;*/ border-right:1pxsolid#fa9900; padding:5px0; flex:1;表示子元素之间平均分配 }

可见用flex布局非常完美,这就是flex布局的牛逼之处。很遗憾的是最近规范变动过多,导致各个浏览器对它的实现也有所不同。为了兼容更多的浏览器,也可以这样写:

display: flex;display: -webkit-box;这两个属性的方法作用相同。

Example 2: flexbox不等分布局

CSS Code复制内容到剪贴板 <divclass="container"> <sectionclass="initial"> <p> 空间足够的时候,我的宽度是200px,如果空间不足, 我会变窄到100px,但不会再窄了。 </p> </section> <sectionclass="none"> <p> 无论窗口如何变化,我的宽度一直是200px。 </p> </section> <sectionclass="flex1"> <p> 我会占满剩余宽度的1/3。 </p> </section> <sectionclass="flex2"> <p> 我会占满剩余宽度的2/3。 </p> </section> </div> .container{ display:-webkit-flex; display:flex; } .initial{ -webkit-flex:initial; flex:initial; width:200px; min-width:100px; /*空间足够的时候,该div的宽度是200px,如果空间不足,该div会变窄到100px,但不会再窄了。*/ } .none{ -webkit-flex:none; flex:none; width:200px; /*无论窗口如何变化,我的宽度一直是200px。*/ } .flex1{ -webkit-flex:1; flex:1; /*改div会占满剩余宽度的1/3。*/ } .flex2{ -webkit-flex:2; flex:2; /*改div会占满剩余宽度的2/3。*/ }

效果如下图所示:

基础的CSS3弹性盒Flexbox布局使用实例6

Example 3: flexbox基本页面布局

CSS Code复制内容到剪贴板 <divclass="container"> <nav> <divclass="container"> <nav> <ul> <li> <ahref="http://www.alloyteam.com/">menu1</a> </li> </ul> </nav> <divclass="content"> <section> ... </section> <section> ... </section> </div> </div> .container{ display:-webkit-flex; display:flex; } nav{ width:200px;/*固定宽度*/ } .content{ -webkit-flex:1;/*除去nav的固定宽度后,剩下的宽度都是属于content的*/ flex:1; }

效果如下图所示:

基础的CSS3弹性盒Flexbox布局使用实例7

Example 4: flexbox的居中布局

CSS Code复制内容到剪贴板 <divclass="vertical-container"> <sectionclass="vertically-centered"> <p> CSS里总算是有了一种简单的垂直居中布局的方法了! </p> </section> </div> .vertical-container{ display:-webkit-flex; display:flex; height:300px; } .vertically-centered{ margin:auto; }

基础的CSS3弹性盒Flexbox布局使用实例8

PS:解决兼容性问题

对于Flexbox 以前的几个版本可以使用Autoprefixer后处理程序来实现css3代码自动补全。比如:

CSS Code复制内容到剪贴板 display:flex;

编译后:

CSS Code复制内容到剪贴板 display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex;

如果你使用Sass,那么可以使用@mixin来解决flexbox版本兼容,直接@include进来就可以轻松解决三个版本的兼容问题;这样可以支持到IE10 +, 移动端浏览器和最新的FF, Safari, Chrome, IE11, Opera等。

github项目地址:sass-flex-mixin

【基础的CSS3弹性盒Flexbox布局使用实例】相关文章:

20个实用便捷的CSS3工具、库及实例

css美化Div边框的样式实例

css3弹性盒模型(Flexbox)详细介绍

CSS table 单行布局示例代码

练习层DIV的定位小实例

8个对学习CSS3非常实用的帮助手册

使用CSS布局定位属性轻松实现优美站点布局

CSS基础教程: CSS的属性缩写

常用网站经典布局实例

CSS基础教程:CSS属性结合起来使用

精品推荐
分类导航