博客列表 >flex 属性 和属性值的应用

flex 属性 和属性值的应用

心
原创
2020年12月27日 15:32:49559浏览

flex的声明

  1. 声明弹性盒子 display:flex ;
  2. :not(‘选择器’) 从匹配的元素中去掉某一个元素

  3. calc(‘数值’ - ‘数值’);

flex 基本术语

  1. 容器: 具有‘display:flex’ 属性元素

  2. 项目: flex 容器的‘子元素’

  3. 主轴: 项目排列的轴线

  4. 交叉轴: 与主轴垂直的轴线

容器属性

序号 属性 描述
1 ‘flex-flow’ 主轴方向与换行方式
2 ‘justify-content’ 项目在主轴上的对齐方式
3 ‘align-items’ 项目在交叉轴上的对齐方式
4 ‘align-content’ 项目在对行容器中的对齐方式

项目属性

序号 属性 秒睡
1 “flex” 项目的缩放比例与基准高度
2 “align-self” 单个项目在交叉轴的对齐方式
3 “order” 项目在主轴上的排序

弹性容器与弹性项目

  1. 任何元素都可以通过添加display:flex属性,转为弹性盒子

  2. 转为flex元素后,它的内部“子元素”就支持flex布局了

  3. 使用了display: flex属性的元素称为:flex容器

  4. flex 容器中的‘子元素’ 称之为: 弹性项目

  5. 工作中会存在大量的flex容器嵌套布局

实列

  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. width: 40em;
  15. height: 30em;
  16. border: 1px solid #000;
  17. display: flex;
  18. }
  19. .container>.itme {
  20. width: 5em;
  21. height: 2em;
  22. border: 1px solid #000;
  23. }
  24. .container>.itme:last-child {
  25. display: flex;
  26. }
  27. .container>.itme:last-child div {
  28. background-color: antiquewhite;
  29. border: 1px solid #000;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container">
  35. <div class="itme">1</div>
  36. <div class="itme">2</div>
  37. <div class="itme">3</div>
  38. <div class="itme">
  39. <div>1</div>
  40. <div>2</div>
  41. <div>3</div>
  42. </div>
  43. </div>
  44. </body>
  45. </html>

示列

flex 嵌套使用


轴的概念

  1. 默认主轴: 项目排列的方向
  2. 与主轴垂直的叫交叉轴,项目换行的方向
    轴的概念

弹性项目在主轴上的排列方式

  1. 单行容器

  2. 主轴方向加换行 应使用 flex-flow: row nowrap; 第一个参数是主轴方向,第二个是换不换行

序号 属性 描述
1 flex-direction row 默认排列方式
2 flex-wrap nowrap 默认是不换行
3 flex-flow row nowrap 第一个参数是主轴方向 第二个是不换行
4 flex-flow column nowrap 列方向排列且不换行
  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. width: 40em;
  15. height: 30em;
  16. border: 1px solid #000;
  17. display: flex;
  18. margin: 2em;
  19. padding: 1em;
  20. }
  21. .container>.itme {
  22. width: 5em;
  23. border: 1px solid #000;
  24. }
  25. .container>.itme:last-child {
  26. display: flex;
  27. }
  28. .container>.itme:last-child div {
  29. background-color: antiquewhite;
  30. border: 1px solid #000;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div class="container">
  36. <div class="itme">1</div>
  37. <div class="itme">2</div>
  38. <div class="itme">3</div>
  39. <div class="itme">4</div>
  40. <div class="itme">5</div>
  41. <div class="itme">6</div>
  42. <div class="itme">7</div>
  43. <div class="itme">8</div>
  44. </div>
  45. </body>
  46. </html>

默认行排列 且不换行

单行容器 默认排列


多行容器: 一行显示不下 允许换行显示

序号 属性 描述
1 flex-flow row wrap 第一个参数是行方向 第二个是换行
2 flex-flow column wrap 列方向排列且换行
  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. /* width: 50em; */
  15. height: 15em;
  16. border: 1px solid #000;
  17. display: flex;
  18. margin: 2em;
  19. padding: 1em;
  20. flex-flow: column wrap;
  21. }
  22. .container>.itme {
  23. width: 5em;
  24. height: 5em;
  25. border: 1px solid #000;
  26. /*列方向排列 且换行显示*/
  27. flex-flow: column wrap;
  28. }
  29. .container>.itme:last-child {
  30. display: flex;
  31. }
  32. .container>.itme:last-child div {
  33. background-color: antiquewhite;
  34. border: 1px solid #000;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <div class="container">
  40. <div class="itme">1</div>
  41. <div class="itme">2</div>
  42. <div class="itme">3</div>
  43. <div class="itme">4</div>
  44. <div class="itme">5</div>
  45. <div class="itme">6</div>
  46. <div class="itme">7</div>
  47. <div class="itme">8</div>
  48. </div>
  49. </body>
  50. </html>

列方向排列 且换行显示

列方向显示 且换行


弹性项目在单行容器中的对齐方式

  1. 设置项目在单行容器上轴上对齐前提: 主轴上存在剩余空间
    剩余空间

空间分配二种方案:

  1. 将所有项目视为一个整体,在项目组二边进行分配

  2. 将项目视为一个个独立的个体,在项目之间进行分配

  3. 交叉轴上的对齐方式

序号 属性 描述
1 justify-content flex-start 1. 默认左边对齐
2 justify-content flex-end 1. 右边对齐
3 justify-content center 1. 居中对齐
4 justify-content space-between 2. 两端对齐 中间自分配
5 jutify-content space-around 每个项目的两边平均分配 分散对齐
6 justify-content space-evenly 平均对齐
7 align-items stretch 拉伸
8 align-items flex-start 顶部对齐
9 align-items flex-end 底部对齐
10 align-items center 居中对齐
  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. /* width: 50em; */
  15. /*height: 15em;*/
  16. border: 1px solid #000;
  17. display: flex;
  18. margin: 2em;
  19. padding: 1em;
  20. }
  21. .container>.itme {
  22. width: 5em;
  23. height: 5em;
  24. border: 1px solid #000;
  25. }
  26. /*将所有项目视为一个整体,在项目组二边进行分配*/
  27. .container{
  28. /*左边对齐*/
  29. justify-content:flex-start;
  30. /*右边对齐*/
  31. justify-content:flex-end;
  32. /*居中对齐*/
  33. justify-content:center;
  34. /* 将项目视为一个个独立的个体,在项目之间进行分配*/
  35. /*两端对齐 中间平均分配*/
  36. justify-content:space-between;
  37. /*分散对齐*/
  38. justify-content:space-around;
  39. /*平均对齐*/
  40. justify-content:space-evenly;
  41. }
  42. /*交叉轴上的对齐方案*/
  43. .container{
  44. /*拉伸*/
  45. align-items:stretchl;
  46. /*顶部对齐*/
  47. align-items:flex-start;
  48. /*底部对齐*/
  49. align-items:flex-end;
  50. /*居中*/
  51. align-itemscenter;
  52. }
  53. </style>
  54. </head>
  55. <body>
  56. <div class="container">
  57. <div class="itme">1</div>
  58. <div class="itme">2</div>
  59. <div class="itme">3</div>
  60. <div class="itme">4</div>
  61. </div>
  62. </body>
  63. </html>
  1. 单行容器中左对齐 justify-content: flex-start; 默认的
    单行容器中左对齐

  2. 单行容器中右对齐 justify-content: flex-end;
    当行容器中右对齐

  3. 当行容器中居中显示 justify-content:center;
    单行容器中的居中

  4. 独立个体在项目中分配 两端对齐 justify-contetn:space-between
    两端对齐

  5. 独立个体在项目中两边平均分配 分散对齐 justify-content:space-around;
    独立个体分散对齐

  6. 独立个体在项目中两边平均分配 平均对齐 justify-content:space-evenly;
    平均对齐

  7. 交叉上的对齐方式 向上对齐 align-items:flex-start;
    交叉轴上的 向上对齐

  8. 交叉上的对齐方式 向下对齐 align-items:flex-end;
    交叉轴上的底部对齐

  9. 交叉上的对齐方式 居中对齐 align-items:center;
    交叉轴上的居中对齐

弹性项目在多行容器的对齐方式

序号 属性 描述
1 align-content stretch 默认
2 align-content flex-start 向上
3 align-content flex-end 向下
4 align-content center 居中
5 align-content space-between 两端对齐
6 align-content space-around 分散对齐
7 align-content space-evenly 平均对齐
  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. height: 15em;
  15. border: 1px solid #000;
  16. display: flex;
  17. margin: 2em;
  18. padding: 1em;
  19. }
  20. .container>.itme {
  21. width: 5em;
  22. /* height: 5em; */
  23. border: 1px solid #000;
  24. }
  25. .container{
  26. flex-flow:row wrap;
  27. /*默认方式*/
  28. align-content:stretch;
  29. /*向上的对齐方式*/
  30. align-content:flex-start;
  31. /*向下的对齐方式*/
  32. align-content:flex-end;
  33. /*居中*/
  34. align-content:center;
  35. /*两端对齐*/
  36. align-content:space-between;
  37. /*分散对齐*/
  38. align-content:space-around;
  39. /*平均分配*/
  40. align-content:space-evenly;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <div class="container">
  46. <div class="itme">1</div>
  47. <div class="itme">2</div>
  48. <div class="itme">3</div>
  49. <div class="itme">4</div>
  50. <div class="itme">5</div>
  51. <div class="itme">6</div>
  52. <div class="itme">7</div>
  53. <div class="itme">8</div>
  54. <div class="itme">9</div>
  55. <div class="itme">0</div>
  56. </div>
  57. </body>
  58. </html>
  1. 多行容器对齐方式 align-content:stretch;默认
    多行容器 默认

  2. 多行容器向上对齐 align-content:flex-start;
    多行容器向上对齐

  3. 多行容器向下对齐 align-content:flex-end;
    多行容器向下对齐

  4. 多行容器居中 显示 align-content:center;
    多行容器居中

  5. 多行容器两端对齐 align-content:space-between;
    多行容器两端对齐

  6. 多行容器分散对齐 align-content:space-around;
    多行容器分散对齐

  7. 多行容器平均分配 align-content:space-evenly;
    多行容器平均分配


项目上的属性

  1. flex:flex-grow flex-shrink flex-basis;flex:放大因子 收缩因子 项目在主轴上的基准宽度
  2. flex: 1; 如果只有一个数字,省掉后面二个参数,表示放大因子 等同于 flex:1 1 auto;

  3. align-self: 单个项目的对齐方式

  4. 设置项目在主轴上的显示顺序 order:1; 数字越大越靠后

  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>flex 的属性和属性值的应用</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. .container {
  14. /* width: 50em; */
  15. height: 15em;
  16. border: 1px solid #000;
  17. display: flex;
  18. margin: 2em;
  19. padding: 1em;
  20. }
  21. .container>.itme {
  22. width: 5em;
  23. border: 1px solid #000;
  24. }
  25. .container .itme {
  26. /* 默认值*/
  27. flex: 0 1 auto;
  28. flex:initial;
  29. /*允许放大和收缩*/
  30. flex: 1 1 auto;
  31. /*简写*/
  32. flex: auto;
  33. /*禁止收缩和放大*/
  34. flex:0 0 auto;
  35. /*简写*/
  36. flex:none;
  37. /*flex:1 只有一个数字的是 放大因子*/
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="itme">1</div>
  44. <div class="itme">2</div>
  45. <div class="itme">3</div>
  46. <div class="itme">4</div>
  47. <div class="itme">5</div>
  48. <div class="itme">6</div>
  49. <div class="itme">7</div>
  50. <div class="itme">8</div>
  51. <div class="itme">9</div>
  52. <div class="itme">10</div>
  53. <div class="itme">11</div>
  54. <div class="itme">12</div>
  55. </div>
  56. </body>
  57. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议