栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Html/CSS > CSS教程

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

CSS教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

CSS Code复制内容到剪贴板
  1.          
  2.     
  3.    
  4.     
  5.     
  6.      "ranktab">1   
  7.     
  8.      

    fdeg

        
  9.     
  10.      

    霸气值:170

        
  11.     
  12.    
  13.      
  14.     
  15.    
  16.     
  17.     
  18.      "ranktab">2    
  19.     
  20.      

    bling

        
  21.     
  22.      

    霸气值:160

        
  23.     
  24.    
  25.     
  26.     
  27.    
  28.     
  29.     
  30.      "ranktab">3    
  31.     
  32.      

    lea

      
  33.     
  34.      

    霸气值:150

      
  35.     
  36.    
  37.     
  38.     
  39.   
  40.   
  41. ul li {   
  42.     
  43.     width: 32.9%;   
  44.     
  45.     float: left;   
  46.     
  47.     border-right: 1px solid #fa9900;   
  48.     
  49.     padding: 5px 0;   
  50.     
  51. }  

 
但当只有2个排名后,少了一个li节点后,就会展示如下:
201648121514023.png (300×68)

删除两个li节点后如下:
201648121536879.png (295×76)

但是用户以及设计师肯定不希望看到这样的界面。他们肯定希望界面是这样的:
减少一个li节点后:
201648121619175.png (302×71)

删除两个li节点后如下:
201648121637365.png (299×69)

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

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

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

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

CSS Code复制内容到剪贴板
  1. "container">   
  2.     
  3.      
  4.     
  5.     

      

  6.     
  7.         空间足够的时候,我的宽度是200px,如果空间不足,   
  8.     
  9.             我会变窄到100px,但不会再窄了。   
  10.     
  11.     

      
  12.     
  13.      
  14.     
  15.      
  16.     
  17.     

      

  18.     
  19.        无论窗口如何变化,我的宽度一直是200px。   
  20.     
  21.     

      
  22.     
  23.      
  24.     
  25.      
  26.     
  27.     

      

  28.     
  29.       我会占满剩余宽度的1/3。   
  30.     
  31.     

      
  32.     
  33.      
  34.     
  35.      
  36.     
  37.     

      

  38.     
  39.       我会占满剩余宽度的2/3。   
  40.     
  41.     

      
  42.     
  43.      
  44.     
  45.   
  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.   width: 200px;   
  62.     
  63.   min-width: 100px;   
  64.     
  65.   
  66.     
  67. }   
  68.     
  69. .none {   
  70.     
  71.   -webkit-flex: none;   
  72.     
  73.           flex: none;   
  74.     
  75.   width: 200px;   
  76.     
  77.   
  78.     
  79. }   
  80.     
  81. .flex1 {   
  82.     
  83.   -webkit-flex: 1;   
  84.     
  85.           flex: 1;   
  86.     
  87.        
  88.     
  89. }   
  90.     
  91. .flex2 {   
  92.     
  93.   -webkit-flex: 2;   
  94.     
  95.           flex: 2;   
  96.     
  97.     
  98.     
  99. }   
  100.   

效果如下图所示:
201648121657567.png (816×132)

Example 3: flexbox基本页面布局

CSS Code复制内容到剪贴板
  1. "container">   
  2.       
  3. "container">   
  4.       
  5.         
        
    •           
    •   
    •          "http://www.alloyteam.com/">menu1   
    •           
    •   
    •        
      
  6.         
  7.    "content">   
  8.          
  9.          ...   
  10.         
  11.          
      
  12.        ...   
  13.          
  14.       
  15.     
  16.   
  17. .container {   
  18.     display: -webkit-flex;   
  19.     display: flex;   
  20. }   
  21. nav {   
  22.       width: 200px;   
  23. }   
  24. .content{   
  25.   -webkit-flex: 1;   
  26.             flex: 1;   
  27. }  

效果如下图所示:
201648121714566.png (707×239)

Example 4: flexbox的居中布局

CSS Code复制内容到剪贴板
  1. "vertical-container">   
  2.      
  3.     

      

  4.       CSS里总算是有了一种简单的垂直居中布局的方法了!   
  5.     

      
  6.      
  7.   
  8.   
  9. .vertical-container {   
  10.   display: -webkit-flex;   
  11.   display: flex;   
  12.   height: 300px;   
  13. }   
  14. .vertically-centered {   
  15.   margin: auto;   
  16. }  

201648121734925.png (822×323)

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

     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/215982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号