Flex Layout 的目的是为了提供一种高效的方式去为一个容器里面元素布局,对齐,分配空间,即使他们的大小尺寸是未知的,或者是动态变化的
父容器有能力修改里面子元素的宽度和高度从而更好的分配空间。
更重要的是flexbox布局方向可以灵活变化,比较适合小范围的布局,grid比较适合大范围的布局
要想flex布局生效,需要父元素和里面的子元素配合相关属性使用,这种布局是基于flex方向(flex-flow directions),如下图:
里面item布局要么沿着main axis 方向,要么沿着cross axis方向(从对应的 start-->end)
以下属性应用于父元素(容器)
 
display: flex | inline-flex;      
定义容器为块还是内联
注意: css columns 对应用了flex的父元素无效     float,clear,vertical-align对子元素无效
flex-direction:row | row-reverse | column | column-reverse     
定义容器里面内容flex的方向
flex-wrap: nowrap | wrap | wrap-reverse             
这个定义了容器是单行,还是多行,以及cross axix的方向(也就是多行的话新行方向)
nowrap 默认值,单行(方向跟随direction属性)
wrap 多行
wrap-reverse 多行,方向相反
flex-flow: <‘flex-direction’> || <‘flex-wrap’>          
是flex-direction  和  flex-wrap属性的缩写(就像font),它们定义了容器的main and cross axis,默认是row nowrap
justify-content: flex-start | flex-end | center | space-between | space-around          
定义内容main axis的方向,它用来帮助分配多余的空间,当里面的内容都是固定大小或者里面的内容可缩放但是达到了最大极限
同时还可以控制行内对齐的方式
align-items: flex-start | flex-end | center | baseline | stretch
定义容器里面的内容在当前行 cross axis 对齐方式,类似justify-content
align-content: flex-start | flex-end | center | space-between | space-around | stretch
当cross轴有多余空间的时候,这个属性定义了对齐方式
以下属性定义在子元素上(容器里面的内容)
order: <integer>
定义子元素出现顺序,默认是按照子元素代码顺序排,可以人为修改
flex-grow: <number> (default 0)
定义非固定大小子元素应该占据的比例,相对于父元素大小而言,例如所有子元素都设为1,那么每个子元素会平均分配父元素的空间,不可以为负值
flex-shrink: <number> (default 1)
定义子元素缩放比例,不可为负值
flex-basis: <length> | auto (default auto)
定义子元素在多余空间分配之前的默认大小
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] (Default 0 1 auto)
前面三个属性的缩写,第二,第三个参数是可选的
align-self: auto | flex-start | flex-end | center | baseline | stretch
这个属性可以单独 设置/改变 一个子元素的align-items
http://css-tricks.com/snippets/css/a-guide-to-flexbox/
因为flexbox语法在过去几年有了不少改动,所以考虑兼容性应该 混合新旧语法,为了实现下面这张图效果
<div class="page-wrap">
 
  <section class="main-content">
      <h1>Main Content</h1>
      <p><strong>I'm first in the source order.</strong></p>
      <p>The key to victory is discipline, and that means a well made bed. You will practice until you can make your bed in your sleep. Fry, we have a crate to deliver. Hey, guess what you're accessories to.</p>
       <p>I'll get my kit! That's not soon enough! Oh, all right, I am. But if anything happens to me, tell them I died robbing some old man.</p>
  </section>
 
  <nav class="main-nav">
      <h2>Nav</h2>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Clients</a></li>
        <li><a href="#">Contact Us</a></li>
      </ul>
    </nav>
 
    <aside class="main-sidebar">
      <h2>Sidebar</h2>
      <p>I am a rather effortless column of equal height.</p>
    </aside>
   
</div>
.page-wrap {
  display: -webkit-box;           /* OLD - iOS 6-, Safari 3.1-6 */
  display: -moz-box;              /* OLD - Firefox 19- (doesn't work very well) */
  display: -ms-flexbox;           /* TWEENER - IE 10 */
  display: -webkit-flex;          /* NEW - Chrome */
  display: flex;                  /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-content {
  -webkit-box-ordinal-group: 2;   /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-ordinal-group: 2;      /* OLD - Firefox 19- */
  -ms-flex-order: 2;              /* TWEENER - IE 10 */
  -webkit-order: 2;               /* NEW - Chrome */
  order: 2;                       /* NEW, Spec - Opera 12.1, Firefox 20+ */
  width: 60%;                     /* No flex here, other cols take up remaining space */
  -moz-box-flex: 1;               /* Without this, Firefox 19- expands to widest paragraph, overrides width */
  background: white;
}
.main-nav {
  -webkit-box-ordinal-group: 1;   /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-ordinal-group: 1;      /* OLD - Firefox 19- */
  -ms-flex-order: 1;              /* TWEENER - IE 10 */
  -webkit-order: 1;               /* NEW - Chrome */
  order: 1;                       /* NEW, Spec - Opera 12.1, Firefox 20+ */
  -webkit-box-flex: 1;            /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-flex: 1;               /* OLD - Firefox 19- */
  width: 20%;                     /* For old syntax, otherwise collapses. */
  -webkit-flex: 1;                /* Chrome */
  -ms-flex: 1;                    /* IE 10 */
  flex: 1;                        /* NEW, Spec - Opera 12.1, Firefox 20+ */
  background: #ccc;
}
.main-sidebar {
  -webkit-box-ordinal-group: 3;   /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-ordinal-group: 3;      /* OLD - Firefox 19- */
  -ms-flex-order: 3;              /* TWEENER - IE 10 */
  -webkit-order: 3;               /* NEW - Chrome */
  order: 3;                       /* NEW, Spec - Opera 12.1, Firefox 20+ */
  -webkit-box-flex: 1;            /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-flex: 1;               /* Firefox 19- */
  width: 20%;                     /* For OLD syntax, otherwise collapses. */
  -ms-flex: 1;                    /* TWEENER - IE 10 */
  -webkit-flex: 1;                /* NEW - Chrome */
  flex: 1;                        /* NEW, Spec - Opera 12.1, Firefox 20+ */
  background: #ccc;
}
浏览器支持情况
Chrome any
Firefox any
Safari any
Opera 12.1+
IE 10+
iOS any
Android any
(注意)
09年之前旧的语法(触屏版淘宝目前用这一套)
.grid {
display:-webkit-box;
}
.column {
padding: 20px;
}
.fluid {
-webkit-box-flex: 1;
background: #ccc;
}
.fixed {
width: 400px;
background: red;
}
新修改的语法
.grid {
/*  As of August 2012, only supported in Chrome 21+ */
display: -webkit-flex;
  display: flex;
}
.column {
padding: 20px;
}
.fluid {
flex: 1;
background: #ccc;
}
.fixed {
width: 400px;
background: red;
}

转载于:https://www.cnblogs.com/chuangweili/p/5163133.html

flex 布局相关推荐

  1. Flex 布局详解 - 转自阮一峰老师

    Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何的盒子都可以使用它. 下面我们来看一下使用 Flex 布局的容器的属性 fle ...

  2. Flex布局教程(来源:阮一峰)

    网页布局(layout)是 CSS 的一个重点应用.Flex 布局将成为未来布局的首选方案.本文介绍它的语法,下一篇文章给出常见布局的 Flex 写法.网友 JailBreak 为本文的所有示例制作了 ...

  3. Flex 布局:语法篇

    2019独角兽企业重金招聘Python工程师标准>>> 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position 属性 + float 属性.它对于那些特殊 ...

  4. 通过游戏来学习CSS的Flex布局

    在复习Flex 布局的时候发现的了几个有趣的小游戏,在这里分享并记录几个有难度的答案 1. Flexbox Froggy 通过调整CSS样式来使各种青蛙回到对应的荷叶上,游戏默认难度为Beginner ...

  5. CSS布局之flex布局

    最近项目中涉及到手机端开发,那么flex布局是必不可少的,这里我来重新梳理一下 1. 介绍 flex布局也被成为伸缩盒布局,在flex布局模型中,flex容器的子元素可以在x轴或y轴上进行布局,并且子 ...

  6. flex布局和单行省略不兼容

    2019独角兽企业重金招聘Python工程师标准>>> flex布局和单行省略不兼容,存在着无法公用的特性,可以将flex修改为: display: box; display: -w ...

  7. flex布局的盒子模型

    flex盒子模型由容器(flex container)以及容器的直接子元素(flex item)组成. 以容器(flex container)定义,有主轴(main axis)以及交叉轴(cross ...

  8. 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置

    声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...

  9. CSS 7:网页布局(传统布局,flex布局,布局套路)

    传统布局 一栏.两栏.三栏布局 一栏布局 特点:页面内容居中,宽度固定 实现方式: 定宽 + 水平居中 width: 1000px; //或 max-width: 1000px; margin-lef ...

  10. 我所知道的flex布局 —— 上篇

    前言 你还在用display+position+float来进行css布局吗?有没有觉得用传统的这种布局方法来实现特殊布局特别麻烦困难,例如:垂直居中.今天来记录一下自己对flex布局的了解(虽然不算 ...

最新文章

  1. Kfold交叉验证心得
  2. 因式分解,算术基本定理,积性函数(POJ 1452 Happy2004)
  3. 【VC基础】 6、VC条件定价
  4. redis的五种数据结构及其使用场景
  5. spring处理循环依赖时序图_Maven依赖管理系统
  6. 在ASP.NET 3.5中使用新的ListView控件(5)
  7. BAT-使用BAT方法清理Delphi临时文件
  8. Docker 概念-1
  9. Python通过IMAP实现邮箱客户端
  10. 微信第一个支持小程序版本号与服务器不符,微信功能又又又更新!第一个就让人不淡定…...
  11. 罗技K375s重新配置和连接
  12. 微信小程序,引入WeUI组件库 扩展组件库
  13. 五款免费的磁盘空间使用情况报告软件
  14. jsp中去掉超链接下划线吗,在JSP中,若要在JSP正确使用标签: ,在jsp中声称的taglib指令为: 下划线处应该是() 答案:x...
  15. BZOJ4398: 福慧双修【二进制分组+最短路】
  16. 计算机培训结业典礼主持词,培训结业典礼主持词范例珍藏版(备份存档)
  17. STM32F4关键寄存器总结
  18. html5与cs6,【CS6新功能介绍】EPUB 和 HTML5
  19. 织梦CMS仿某中国作文网源码 范文论文网模板 带会员系统+支付接口+整站数据
  20. 面试JAVA常被问到的问题(持续更新中)

热门文章

  1. 使用Clang作为编译器 —— 使用 Clang 交叉编译
  2. python计算机二级简单操作题
  3. 单样本的t检验(t-test)是什么?
  4. Solidigm P44 Pro M.2 SSD评测:全套原厂方案,性能高效且稳定
  5. Python 四大主流 Web 编程框架
  6. scipy.sparse学习
  7. Proteus8 发生关键仿真错误
  8. SQL server服务显示远程过程调用失败的解决方法
  9. [算法]Morse Code(摩斯密码)
  10. K近邻思想解决字体反爬