博客列表 >flex容器与项目的常用属性

flex容器与项目的常用属性

手机用户1607314868
手机用户1607314868原创
2020年12月22日 23:44:41652浏览

flex弹性盒元素

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

    容器内子元素的排列方向

    属性’flex-flow’控制轴方向与换行
    1. <style>
    2. *{box-sizing:border-box;}
    3. .container{
    4. display:flex;
    5. height:15em;
    6. border:1px solid #000;
    7. padding:1em;
    8. margin:1em;
    9. }
    10. .container>.item{
    11. background-color:lightcyan;
    12. width:5em;
    13. height:5em;
    14. border:1px solid #000;
    15. }
    16. .container{
    17. <!--内部子元素排列方向,水平也就是主轴方向-->
    18. /*flex-direction:row;*/
    19. <!--是否换行-->
    20. /*flex-wrap:nowrap;*/
    21. <!--以上可以简写为 flex-flow-->
    22. flex-flow:row nowrap;
    23. /*水平方向row 垂直方向是column 换行wrap 不换行 nowrap*/
    24. }
    25. </style>
    26. <body>
    27. <div class="container">
    28. <div class="item">item1</div>
    29. <div class="item">item2</div>
    30. <div class="item">item3</div>
    31. <div class="item">item4</div>
    32. </div>
    33. </body>

    项目的对齐方式

  • justify-content:项目在主轴方向上的对齐方式
  • align-item:项目在交叉轴上的对齐方式
  • align-content:项目在多行容器上的对齐方式
    主轴方向上的水平对齐方式
    设置项目在单行容器主轴水平上的对齐前提:主轴上存在剩余空间。剩余空间分配的两种方案
  1. .container{
  2. /* 1.将所有项目视为一个整体,在项目组两边进行分配 */
  3. <!--右对齐-->
  4. justify-content: flex-start;
  5. <!--左对齐-->
  6. justify-content: flex-end;
  7. <!--居中对齐-->
  8. justify-content: center;
  9. /* 2.将项目视为一个个独立的个体,在项目之间进行分配 */
  10. /* 两端对齐 第一个和最后一个不需要分配靠边对齐,中间的平均分配 */
  11. justify-content: space-between;
  12. /* 分散对齐 每个项目两边平均分配,相当于每个项目都有左右相等的margin值*/
  13. justify-content: space-around;
  14. /* 平均对齐 每个项目之间平均分配*/
  15. justify-content: space-evenly;
  16. }

交叉轴上的垂直对齐

  1. .container{
  2. /*默认,拉伸子元素*/
  3. align-items: stretch;
  4. /* 上对齐 */
  5. align-items: flex-start;
  6. /* 下对齐 */
  7. align-items: flex-end;
  8. /* 居中对齐 */
  9. align-items: center;
  10. }

多行容器上的对齐方式

多行容器可以设置主轴水平方向和交叉轴垂直方向上的对齐

  1. .container{
  2. /*多行容器*/
  3. flex-flow: rwo wrap;
  4. /* 项目组视为一个整体*/
  5. align-content: stretch;
  6. align-content: flex-end;
  7. align-content: flex-start;
  8. align-content: center;
  9. /*将项目组一行视为一个整体*/
  10. align-content: space-around;
  11. align-content: space-between;
  12. align-content: space-evenly;
  13. }

项目上的属性

flex属性

flex: flex:flex-grow flex-shrink flex-basis
flex:放大因子 收缩因子 项目在主轴上的基准宽度 默认值就是设置的item宽度width:5em
默认上不放大可收缩 1是ture 0是false。
flex:0 1 auto;flex:initial;这俩的效果是一样的
flex:1 1 auto; flex:auto;可放大可收缩
如果只有一个数字,代表放大因子: flex:2;
注意:flex通常不会用来设置所有项目的默认选项,通常用来设置某一个项目。

  1. <style>
  2. .container .item:nth-of-type(2){
  3. flex:1 0 auto;
  4. }
  5. </style>
某个项目对齐方式

设置某个项目的对齐方式
align-self属性

  1. .container>.item:nth-of-type(2){
  2. align-self: stretch;
  3. /*上对齐*/
  4. align-self: flex-start;
  5. /*下对齐*/
  6. align-self: flex-end;
  7. /* 居中*/
  8. align-self: center;
  9. }

项目之间的排列顺序

默认是按照源码顺序排列的,谁写在前面谁就在前面。
order属性
order的值是数字,可以修改order的值来改变顺序位置,数字越小越靠前,越大越靠后。可以为负数。

  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. display: flex;
  13. }
  14. .container>.item{
  15. background-color:lightcyan;
  16. border: 1px solid #000;
  17. width: 5em;
  18. }
  19. .container>.item:nth-of-type(1){
  20. order: 1;
  21. order: 5;
  22. background-color: lightgreen;
  23. }
  24. .container>.item:nth-of-type(2){
  25. order:2;
  26. background-color: lightgray;
  27. }
  28. .container>.item:nth-of-type(3){
  29. order:3;
  30. order:0;
  31. }
  32. .container>.item:nth-of-type(4){
  33. order: 4;
  34. order: -1;
  35. background-color: yellow;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="container">
  41. <div class="item">item1</div>
  42. <div class="item">item2</div>
  43. <div class="item">item3</div>
  44. <div class="item">itme4</div>
  45. </body>
  46. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议