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


Posted in HTML / CSS onApril 08, 2016

   flexbox是一个新的盒子模型,当你给一个元素使用了flexbox模块,那么它的子元素就会指定的方向在水平或者纵向方向排列。这些子元素会按照一定的比例进行扩展或收缩来填补容器的可用空间。flexbox有许多很好用的地方,下面就着重讲述一下它的一些使用场景:
 
Example 1: flexbox等分布局
 
      如果你要实现以下所示的样式,你可能首先想到的是用float:
基础的CSS3弹性盒Flexbox布局使用实例 

CSS Code复制内容到剪贴板
  1.      <ul id="ranktop3">    
  2.     
  3.    <li>    
  4.     
  5.      <div class="ranktab">1</div>   
  6.     
  7.      <p>fdeg</p>    
  8.     
  9.      <p>霸气值:170</p>    
  10.     
  11.    </li>     
  12.     
  13.    <li>    
  14.     
  15.      <div class="ranktab">2</div>    
  16.     
  17.      <p>bling</p>    
  18.     
  19.      <p>霸气值:160</p>    
  20.     
  21.    </li>    
  22.     
  23.    <li>    
  24.     
  25.      <div class="ranktab">3</div>    
  26.     
  27.      <p>lea</p>   
  28.     
  29.      <p>霸气值:150</p>   
  30.     
  31.    </li>    
  32.     
  33. </ul>   
  34.   
  35. ul li {   
  36.     
  37.     width: 32.9%;   
  38.     
  39.     floatleft;   
  40.     
  41.     border-right1px solid #fa9900;   
  42.     
  43.     padding5px 0;   
  44.     
  45. }  

 
但当只有2个排名后,少了一个li节点后,就会展示如下:
基础的CSS3弹性盒Flexbox布局使用实例

删除两个li节点后如下:
基础的CSS3弹性盒Flexbox布局使用实例

但是用户以及设计师肯定不希望看到这样的界面。他们肯定希望界面是这样的:
减少一个li节点后:
基础的CSS3弹性盒Flexbox布局使用实例

删除两个li节点后如下:
基础的CSS3弹性盒Flexbox布局使用实例

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

CSS Code复制内容到剪贴板
  1. ul {   
  2.     
  3.     display:flex;//表示改直接子元素用flex布局,默认横向布局   
  4.     
  5. }   
  6.     
  7. ul li {   
  8.     
  9.      /*width: 32.9%;*/  
  10.     
  11.      /*float: left;*/  
  12.     
  13.      border-right1px solid #fa9900;   
  14.     
  15.      padding5px 0;   
  16.     
  17.      flex: 1;表示子元素之间平均分配   
  18.     
  19. }  

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

display: flex;display: -webkit-box;这两个属性的方法作用相同。
 
Example 2: flexbox不等分布局

CSS Code复制内容到剪贴板
  1. <div class="container">   
  2.     
  3.   <section class="initial">   
  4.     
  5.     <p>   
  6.     
  7.         空间足够的时候,我的宽度是200px,如果空间不足,   
  8.     
  9.             我会变窄到100px,但不会再窄了。   
  10.     
  11.     </p>   
  12.     
  13.   </section>   
  14.     
  15.   <section class="none">   
  16.     
  17.     <p>   
  18.     
  19.        无论窗口如何变化,我的宽度一直是200px。   
  20.     
  21.     </p>   
  22.     
  23.   </section>   
  24.     
  25.   <section class="flex1">   
  26.     
  27.     <p>   
  28.     
  29.       我会占满剩余宽度的1/3。   
  30.     
  31.     </p>   
  32.     
  33.   </section>   
  34.     
  35.   <section class="flex2">   
  36.     
  37.     <p>   
  38.     
  39.       我会占满剩余宽度的2/3。   
  40.     
  41.     </p>   
  42.     
  43.   </section>   
  44.     
  45. </div>   
  46.   
  47. .container {   
  48.     
  49.   display: -webkit-flex;   
  50.     
  51.   display: flex;   
  52.     
  53. }   
  54.     
  55. .initial {     
  56.     
  57. -webkit-flex: initial;    
  58.     
  59.           flex: initial;   
  60.     
  61.   width200px;   
  62.     
  63.   min-width100px;   
  64.     
  65. /*空间足够的时候,该div的宽度是200px,如果空间不足,该div会变窄到100px,但不会再窄了。*/  
  66.     
  67. }   
  68.     
  69. .none {   
  70.     
  71.   -webkit-flex: none;   
  72.     
  73.           flex: none;   
  74.     
  75.   width200px;   
  76.     
  77. /*无论窗口如何变化,我的宽度一直是200px。*/  
  78.     
  79. }   
  80.     
  81. .flex1 {   
  82.     
  83.   -webkit-flex: 1;   
  84.     
  85.           flex: 1;   
  86.     
  87.      /*改div会占满剩余宽度的1/3。*/  
  88.     
  89. }   
  90.     
  91. .flex2 {   
  92.     
  93.   -webkit-flex: 2;   
  94.     
  95.           flex: 2;   
  96.     
  97.   /*改div会占满剩余宽度的2/3。*/  
  98.     
  99. }   
  100.   

效果如下图所示:
基础的CSS3弹性盒Flexbox布局使用实例

Example 3: flexbox基本页面布局

CSS Code复制内容到剪贴板
  1. <div class="container">   
  2.       <nav>   
  3. <div class="container">   
  4.       <nav>   
  5.         <ul>   
  6.           <li>   
  7.          <a href="http://www.alloyteam.com/">menu1</a>   
  8.           </li>   
  9.        </ul>   
  10.      </nav>   
  11.    <div class="content">   
  12.       <section >   
  13.          ...   
  14.      </section>   
  15.          <section>   
  16.        ...   
  17.       </section>   
  18.    </div>   
  19.  </div>   
  20.   
  21. .container {   
  22.     display: -webkit-flex;   
  23.     display: flex;   
  24. }   
  25. nav {   
  26.       width200px/*固定宽度*/  
  27. }   
  28. .content{   
  29.   -webkit-flex: 1; /*除去nav的固定宽度后,剩下的宽度都是属于content的*/  
  30.             flex: 1;   
  31. }  

效果如下图所示:
基础的CSS3弹性盒Flexbox布局使用实例

Example 4: flexbox的居中布局

CSS Code复制内容到剪贴板
  1. <div class="vertical-container">   
  2.   <section class="vertically-centered">   
  3.     <p>   
  4.       CSS里总算是有了一种简单的垂直居中布局的方法了!   
  5.     </p>   
  6.   </section>   
  7. </div>   
  8.   
  9. .vertical-container {   
  10.   display: -webkit-flex;   
  11.   display: flex;   
  12.   height300px;   
  13. }   
  14. .vertically-centered {   
  15.   marginauto;   
  16. }  

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

PS:解决兼容性问题

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

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

编译后:

CSS Code复制内容到剪贴板
  1. display: -webkit-box;   
  2. display: -webkit-flex;   
  3. display: -ms-flexbox;   
  4. display: flex;  

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

     

HTML / CSS 相关文章推荐
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
Css3圆角边框制作代码
Nov 18 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
CSS3的 fit-content实现水平居中
Sep 07 HTML / CSS
css3中仿放大镜效果的几种方式原理解析
Dec 03 HTML / CSS
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
May 28 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
深入探究HTML5的History API
Jul 09 HTML / CSS
HTML5 虚拟键盘出现挡住输入框的解决办法
Feb 14 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
Sep 11 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
Feb 25 HTML / CSS
css3应用示例:新增的选择器
Mar 16 HTML / CSS
CSS3的Flexbox布局的简明入门指南
Apr 08 #HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
Apr 05 #HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 #HTML / CSS
CSS3制作炫酷的自定义发光文字
Mar 28 #HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 #HTML / CSS
6种非常炫酷的CSS3按钮边框动画特效
Mar 16 #HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
Mar 16 #HTML / CSS
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
js返回顶部实例分享
2016/12/21 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
PHP两种查询函数array/row的区别
2013/06/03 面试题
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
室内拓展活动方案
2014/02/13 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python