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

flex 属性和常用属性的应用

Y的博客
Y的博客原创
2020年12月27日 19:37:50704浏览

flex

1. 术语

  1. 容器: 具有display:flex属性元素
  2. 项目: flex 容器的”子元素”
  3. 主轴: 项目排列的轴线
  4. 交叉轴: 与主轴垂直的轴线

2. 容器属性

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

3. 项目属性

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

容器属性

  • 弹性容器与弹性项目
  1. 任何元素都可以通过添加display: flex属性,转为弹性盒元素
  2. 转为flex元素后,它的内部的”子元素”就支持flex布局了
  3. 使用了display: flex属性的元素称为: flex容器
  4. flex容器中的”子元素”称之为: flex项目
  5. 容器中的项目自动转为”行内块元素”(不管之前是什么类型)

  1. <style>
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. .container {
  8. /* 转为弹性盒子布局 */
  9. /* 转为flex元素后,它的内部的"子元素"就支持flex布局了 */
  10. display: flex;
  11. height: 5em;
  12. border: 1px solid #000;
  13. background-color: aquamarine;
  14. padding: 1em;
  15. margin: 1em;
  16. }
  17. .container>.item {
  18. height: 2em;
  19. width: 5em;
  20. background-color: beige;
  21. border: 1px solid #000;
  22. }
  23. .container>.item:nth-of-type(3) {
  24. display: flex;
  25. }
  26. .container>.item:nth-of-type(3)>* {
  27. background-color: lightskyblue;
  28. border: 1px solid #000;
  29. }
  30. </style>
  • 弹性项目在主轴的排列方式

    1. <style>
    2. * {
    3. margin: 0;
    4. padding: 0;
    5. box-sizing: border-box;
    6. }
    7. .container {
    8. display: flex;
    9. height: 15em;
    10. border: 1px solid #000;
    11. background-color: aquamarine;
    12. padding: 1em;
    13. margin: 1em;
    14. }
    15. .container>.item {
    16. height: 5em;
    17. width: 5em;
    18. background-color: beige;
    19. border: 1px solid #000;
    20. }
    21. /* 单行容器 */
    22. .container {
    23. /* flex-flow: 第一个参数是主轴方向 第二个是是否换行; */
    24. /* 默认值是flex-flow:row nowrap; */
    25. flex-flow:row nowrap;
    26. }
    27. /* 多行容器,一行显示不下容许换行(根据屏幕自动换行) */
    28. .container {
    29. flex-flow: row wrap;
    30. }
    31. /* 在一列显示 */
    32. .container {
    33. /* 主轴转为列方向,不换行 */
    34. flex-flow:column nowrap;
    35. /* 主轴转为列方向,换行 */
    36. flex-flow: column wrap;
    37. }
    38. </style>
  • 弹性项目在单行容器的对齐方式
    1. <style>
    2. * {
    3. margin: 0;
    4. padding: 0;
    5. box-sizing: border-box;
    6. }
    7. .container {
    8. /* 转为弹性盒子布局 */
    9. display: flex;
    10. height: 15em;
    11. border: 1px solid #000;
    12. background-color: aquamarine;
    13. padding: 1em;
    14. margin: 1em;
    15. }
    16. .container>.item {
    17. /* height: 5em; */
    18. width: 5em;
    19. background-color: beige;
    20. border: 1px solid #000;
    21. }
    22. /* 设置单行容器上轴上对齐的前提是:主轴存在剩余空间 */
    23. .container {
    24. /* 空间分配的两种方案 */
    25. /* 1.将所有项目视为一个整体,在项目两边进行分配 */
    26. /* 项目左对齐 */
    27. justify-content: flex-start;
    28. /* 项目右对齐 */
    29. justify-content: flex-end;
    30. /* 项目居中对齐 */
    31. justify-content: center;
    32. /* 2.将项目视为一个个独立的个体,在项目之间进行分配 */
    33. /* 两端对齐 剩余空间在除了收尾两个元素之间平均分配*/
    34. justify-content: space-between;
    35. /* 分散对齐 剩余空间在每个项目两端平均分配*/
    36. justify-content: space-around;
    37. /* 平均对齐 剩余空间在每个项目之间平均分配 */
    38. justify-content: space-evenly;
    39. }
    40. /* 在交叉轴上的对齐方式 */
    41. .container {
    42. /* 默认拉升 */
    43. align-items: stretch;
    44. align-items: flex-start;
    45. align-items: flex-end;
    46. align-items: center;
    47. }
    48. </style>
  • 弹性项目在多行容器的对齐方式

    1. .container {
    2. /* 主轴为行,换行 */
    3. flex-flow: row wrap;
    4. /* 模认拉升*/
    5. align-content: stretch;
    6. /* 向上对齐 */
    7. align-content: flex-start;
    8. /* 向下对齐 */
    9. align-content: flex-end;
    10. /* 垂直居中对齐 */
    11. align-content: center;
    12. /* 两端对齐 */
    13. align-content: space-between;
    14. /* 分散对齐 */
    15. align-content: space-around;
    16. /* 平均对齐 */
    17. align-content: space-evenly;
    18. }

    项目属性

  • 项目属性flex
    1. .container .item {
    2. /* flex: flex-grow flex-shrink flex-basis */
    3. /* flex: 放大因子 收缩因子 项目在主轴上的基准宽度 */
    4. /* 默认值,不放大或收缩 */
    5. flex: 1 0 auto;
    6. flex: initial;
    7. /* 允许放大或收缩 */
    8. flex: 1 1 auto;
    9. flex: auto;
    10. /* 禁止放大或收缩 */
    11. flex: 0 0 auto;
    12. flex: none;
    13. /* 如果只写一个数字,省去后面两个参数,表示放大因子 */
    14. flex: 1;
    15. /* 等于 */
    16. flex: 1 1 auto;
    17. flex: 2;
    18. /* flex通常不会用来设置所有项目的默认选项,通常用来设置某一个项目的特征 */
    19. }
    20. /* 要求第2个和第3个项目的宽度是第1个和第四个的2倍 */
    21. .container>.item:first-of-type,
    22. .container>.item:last-of-type {
    23. flex: 1;
    24. }
    25. .container>.item:nth-of-type(2),
    26. .container>.item:nth-of-type(2)+* {
    27. flex: 2;
    28. }
  • 设置第2个项目与其它项目的对齐方式不一样
    1. .container>.item:nth-of-type(2) {
    2. align-self: stretch;
    3. align-self: flex-start;
    4. align-self: flex-end;
    5. align-self: center;
    6. position: absolute;
    7. left: 2em;
    8. top: 3em;
    9. }
  • 项目在主轴上的显示顺序

    1. .container>.item {
    2. /* height: 5em; */
    3. width: 5em;
    4. background-color: beige;
    5. border: 1px solid #000;
    6. }
    7. /* 显示顺序:默认按书写的源码顺序排列 */
    8. /* 默认序号越小越靠前,越大越靠后 */
    9. .container>.item:first-of-type{
    10. order: 2;
    11. background-color: khaki;
    12. }
    13. .container>.item:nth-of-type(2){
    14. order: 3;
    15. background-color: lawngreen;
    16. }
    17. .container>.item:nth-of-type(3){
    18. order: 4;
    19. background-color: lightcoral;
    20. }
    21. .container>.item:nth-of-type(4){
    22. order: 1;
    23. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议