flex弹性盒模型

flex弹性布局为容器,容器的”子元素”为项目;容器拥有主轴和交叉轴,采用flex布局后,内部盒子的宽高可以自动适应。

一、flex模块化

模块描述
容器具有display:flex属性元素
项目flex容器的”子元素”
主轴项目排列的轴线
交叉轴与主轴垂直的轴线

二、flex属性

属性
flex-flow主轴方向与换行方式
justify-content项目在主轴上的对齐方式
align-items项目在交叉轴上的对齐方式
align-content项目在对行容器中的对齐方式

三、容器

3.1 flex-flow

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>弹性项目在主轴的排列方式</title>
  7. <style>
  8. *{
  9. box-sizing: border-box;
  10. }
  11. .container{
  12. /* 转为flex弹性布局元素 */
  13. display: flex;
  14. border: 1px solid #333;
  15. margin: 1em;
  16. padding: 1em;
  17. }
  18. .container .item{
  19. background-color: lightgreen;
  20. height: 5em;
  21. width: 5em;
  22. border: 1px solid #333;
  23. text-align: center;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div class="container">
  29. <div class="item">item1</div>
  30. <div class="item">item2</div>
  31. <div class="item">item3</div>
  32. <div class="item">item4</div>
  33. <div class="item">item5</div>
  34. <div class="item">item6</div>
  35. <div class="item">item7</div>
  36. <div class="item">item8</div>
  37. </div>
  38. </body>
  39. </html>
  • 当flex为单行容器

    1. /* 单行容器 */
    2. .container{
    3. flex-flow: row nowrap;
    4. }

  • 当flex为多行容器

    1. /* 多行容器;一行显示不下,即可换行显示 */
    2. .container{
    3. flex-flow: row wrap;
    4. }

    弹性盒子

  • 当flex容器为垂直,并且不换行

    1. .container{
    2. flex-flow: column nowrap;
    3. }

    弹性布局

  • 当flex容器为垂直,并且换行

    1. .container{
    2. height: 15em;
    3. flex-flow: column wrap;
    4. }

    弹性布局

3.2 弹性项目对齐方式

注意:设置项目在单行容器上轴的对齐前提:主轴必须存在剩余空间

  • 主轴单行容器的对齐方式
属性描述
justify-contentflex-start左对齐(默认值)
justify-contentflex-end右对齐
justify-contentcenter居中
justify-contentspace-between两端对齐
justify-contentspace-around分散对齐
justify-contentspace-evenly平均对齐

项目布局

  • 交叉轴上的对齐方式
属性描述
align-itemsflex-start交叉轴的起点对齐
align-itemsflex-end交叉轴的终点对齐
align-itemscenter交叉轴的中点对齐
align-itemsstretch如果项目未设置高度或设为auto,将占满整个容器的高度(默认值)

四、项目

属性描述
flex项目的缩放比例与基准宽度
align-self单个项目在交叉轴上的对齐方式
order项目在主轴上排序顺序

4.1 flex

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto;

属性描述
flexflex-grow放大因子
flexflex-shrink收缩因子
flexflex-basis项目在主轴上的基准宽度
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>弹性项目在主轴的排列方式</title>
  7. <style>
  8. *{
  9. box-sizing: border-box;
  10. }
  11. .container{
  12. /* 转为flex弹性布局元素 */
  13. display: flex;
  14. border: 1px solid #333;
  15. height: 15em;
  16. margin: 1em;
  17. padding: 1em;
  18. }
  19. .container .item{
  20. background-color: yellow;
  21. width: 5em;
  22. margin-bottom: 1em;
  23. border: 1px solid #333;
  24. text-align: center;
  25. }
  26. /* 交叉轴的对齐方案 */
  27. .container{
  28. align-items: stretch;
  29. align-items: center;
  30. align-items: flex-end;
  31. align-items: flex-start;
  32. }
  33. /* 项目属性 flex */
  34. .container .item{
  35. flex: 0 1 auto;
  36. flex: inherit;
  37. /* 允许放大和收缩 */
  38. flex: 1 1 auto;
  39. flex: auto;
  40. /* 禁止放大和收缩 */
  41. flex: 0 0 auto;
  42. flex: none;
  43. /* 如果只有一个数值,省掉后面两个参数,表示放大基因 */
  44. flex: 1;
  45. flex: 2;
  46. flex: 3;
  47. /* flex通常不会用来设置所有项目的默认选项,通常用来设置某一个项目的特征 */
  48. }
  49. /* 写一个案例,要求第2个和第3个项目的宽度是第1个和第四个2倍 */
  50. .container .item:nth-child(2),.container .item:nth-child(3){
  51. flex: 2;
  52. }
  53. .container .item:nth-child(1),.container .item:nth-child(4){
  54. flex: 1;
  55. }
  56. </style>
  57. </head>
  58. <body>
  59. <div class="container">
  60. <div class="item">item1</div>
  61. <div class="item">item2</div>
  62. <div class="item">item3</div>
  63. <div class="item">item4</div>
  64. </body>
  65. </html>

4.2 align-self

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性;

align-self

4.2 order
order属性定义项目的排列顺序,数值越小,排列越靠前,默认为0;
排序

更多相关文章

  1. 2017 github 上android 源码(适合工作中开发)
  2. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  3. Android平台上优秀的开源项目
  4. Android官方入门文档[1]创建一个Android项目
  5. GitHub 优秀的 Android(安卓)开源项目
  6. Ionic 运行报错No resource identifier found for attribute 'ap
  7. [APP] Android(安卓)开发笔记 006-使用短信验证SDK进行短信验证
  8. 【Android(安卓)应用开发】GitHub 优秀的 Android(安卓)开源项目
  9. android实践项目一实现简单的验证码和spinner下拉选项效果

随机推荐

  1. jQuery插件制作备忘
  2. Jquery插件Thickbox的使用总结及自定义设
  3. 如何在更新面板刷新之后运行一些javascri
  4. 新手怎么学习jQuery快成
  5. 优秀js开源框架-jQuery使用手册(6)
  6. jquery常用代码片段
  7. JQuery的一些基本功能代码(CH1&2)
  8. 【jQuery】调用delay()方法延时执行动画
  9. 将JavaScript数组转换成逗号分隔列表的简
  10. 想要改进我的jQuery代码,做我想要的,太丑了