搜索
博主信息
博文 63
粉丝 8
评论 8
访问量 63768
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP大牛成长之路:flex 布局
周Sir-BLOG
原创
1133人浏览过

flex 布局

1、什么是flex?

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。> Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。


2、基本概念

  • 任何元素都可以使用flex布局,要使用flex布局,需要将容器转换为flex盒子:display:flex;
  • 一旦将父元素转为弹性容器,内部的“子元素”就会自动成为:弹性项目;
  • 不管这个项目标签之前是什么类型,统统转为“行内块” (如span a);
    • 行内块的理解:

      行内:全部在一排显示
      块: 可以设置宽和高

-下图为网上找的图片,以加深对Flex布局的理解:

  • 容器默认存在两根轴:
  • 水平的主轴(main axis)
  • 垂直的交叉轴(cross axis)
  • 主轴的开始位置(与边框的交叉点)叫做main start
  • 结束位置叫做main end
  • 交叉轴的开始位置叫做cross start
  • 结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

3、flex属性

3.1 flex容器6大属性

No 属性 说明
1 flex-direction 定义主轴的方向(即项目的排列方向)
2 flex-wrap 定义flex容器是单行或者多行
3 flex-flow flex-direction 和 flex-wrap 的复合属性(简写)。
4 justify-content 定义弹性盒子元素在主轴(横轴)方向上的对齐方式。
5 align-items 定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
6 align-content 定义flex容器内有剩余空间时垂直对齐方式-(仅多行容器有效)。

1.flex-direction属性示例:

  1. flex-direction: row; /*主轴为水平方向*/

  1. flex-direction: column; /*主轴为垂直方向*/

2.flex-wrap属性示例:

  1. flex-wrap:nowrap;/*单行排列*/

  1. flex-wrap:wrap;/*多行排列*/

3.flex-flow属性示例:

  1. flex-direction:column;/*主轴为垂直方向*/
  2. flex-wrap: wrap;/*多行排列*/
  3. /* flex-flow = flex-direction + flex-wrap(简写) */
  4. flex-flow: column wrap;

4.justify-content属性示例:

  1. justify-content:start; /*左对齐*/

  1. justify-content:end; /*右对齐*/

  1. justify-content:end; /*中间对齐*/

5.align-items属性示例:

  1. align-items: flex-start; /*行内上对齐*/

  1. align-items: flex-end; /*行内下对齐*/

  1. align-items: centen; /*行内中对齐*/

6.align-content属性示例:(仅多行有效)

  1. align-content:flex-start; /*多行上对齐*/

  1. align-content:flex-end; /*多行下对齐*/

  1. align-content:center; /*多行中对齐*/

3.2 flex项目6大属性

No 属性 说明
1 order 定义flex子元素出现的顺序。
2 flex-grow 定义项目的放大比例(增长因子)。
3 flex-shrink 定义了项目的缩小比例(缩小因子)。
4 flex-basis 定义了 flex 元素在主轴方向上的初始大小。
5 flex 定义子元素如何分配空间(flex-growflex-shrinkflex-basis 属性的简写。)
6 align-self 定义flex子项单独在侧轴(纵轴)方向上的对齐方式。

1.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>order属性</title>
  7. <style>
  8. .container {
  9. width: 60px;
  10. display: flex;
  11. }
  12. /*将元素重新排序*/
  13. .item1 {order: 4;}
  14. .item2 {order: 3;}
  15. .item3 {order: 2;}
  16. .item4 {order: 1;}
  17. </style>
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="item1">1</div>
  22. <div class="item2">2</div>
  23. <div class="item3">3</div>
  24. <div class="item4">4</div>
  25. </div>
  26. </body>
  27. </html>

2.flex-grow属性示例:(增长因子)

  • flex-grow属性定义项目的放大比例。

- HTML DOM结构如下:

  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-grow属性</title>
  7. </head>
  8. <body>
  9. <div class="container">
  10. <div class="item">1</div>
  11. <div class="item">2</div>
  12. <div class="item">3</div>
  13. </div>
  14. </body>
  15. </html>

假定container宽度:300px

  • flex-grow: 0;默认值(如果存在剩余空间,也不放大)

  • flex-grow: 1;(等分剩余空间)

  • flex-grow: 2;(放大第三个)

3.flex-shrink属性示例:(收缩因子)

  • flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

假定container宽度:300px,item宽度150px

  • flex-shrink: 1;默认值(当空间不足时,都将等比例缩小。)

item宽度150px,实际都等比例缩小了,实际宽度为:总宽度300/3=100px

如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。(负值对该属性无效)

4.flex-basis属性:(基础属性)

  • flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小

它可以设为跟widthheight属性一样的值(比如350px),则项目将占据固定空间。flex-basis属性优先级大于设定的基础属性。

5.flex属性:

  • flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间。

  • flex 属性是 flex-growflex-shrinkflex-basis 属性的简写。

6.align-self属性:

  1. align-self:flex-start; /*纵轴方向左对齐*/

  1. align-self:flex-end; /*纵轴方向右对齐*/

  1. align-self:centen; /*纵轴方向中对齐*/

总结:

通过两天的学习,刚开始对flex布局的理解仍然处于懵懂状态,通过自己回放视频,逐个不断调试,终于加深了flex容器的6个属性及项目的6个属性的理解。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:flex没你想得那么复杂, 都是一些正常的思维模式
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学