博客列表 >Flex布局

Flex布局

Blueprint
Blueprint原创
2020年06月24日 12:34:02733浏览

复习

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>基于浮动的二列布局</title>
  7. <style>
  8. /* 设置页眉,页脚,边栏和内容区域的背景色 */
  9. header,
  10. footer,
  11. aside,
  12. main {
  13. background-color: #dedede;
  14. }
  15. /* 设置设置页脚、页眉的固定高度 */
  16. header,
  17. footer {
  18. height: 50px;
  19. }
  20. /* 设置边栏和内容的最小高度 */
  21. aside,
  22. main {
  23. min-height: 700px;
  24. }
  25. .wrap {
  26. /* 设置主体容器的宽度 */
  27. width: 1000px;
  28. /* 设置主体容器的边框样式 */
  29. border: 1px solid #000;
  30. /* BFC清除浮动的影响 */
  31. overflow: hidden;
  32. /* 主体容器的上下外边距 和左右居中*/
  33. margin: 10px auto;
  34. }
  35. aside {
  36. /* 边栏宽度 */
  37. width: 200px;
  38. /*向左浮动 */
  39. float: left;
  40. }
  41. main {
  42. /* 内容区的宽度 */
  43. width: 790px;
  44. /* 向右浮动 */
  45. float: right;
  46. }
  47. </style>
  48. </head>
  49. <body>
  50. <header>页眉</header>
  51. <div class="wrap">
  52. <aside>边栏</aside>
  53. <main>内容区</main>
  54. </div>
  55. <footer>页脚</footer>
  56. </body>
  57. </html>

效果图:

2.基于定位的二列布局

  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. header,
  10. footer,
  11. aside,
  12. main {
  13. background-color: #dedede;
  14. }
  15. /* 设置边栏和内容的最小高度 */
  16. header,
  17. footer {
  18. height: 50px;
  19. }
  20. aside,
  21. main {
  22. min-height: 700px;
  23. }
  24. .wrap {
  25. /* 设置主体容器的宽度 */
  26. width: 1000px;
  27. /* 设置主体容器的边框样式 */
  28. border: 1px solid #000;
  29. /* 设置主体容器的最小高度 */
  30. min-height: 700px;
  31. /* 主体容器的上下外边距和左右居中 */
  32. margin: 10px auto;
  33. /* 设置相对定位,给子元素提供绝对定位的参照物 */
  34. position: relative;
  35. /* 默认属性可省略 */
  36. left: 0;
  37. }
  38. aside {
  39. /* 边栏宽度 */
  40. width: 200px;
  41. /* 最小高度继承父容器 */
  42. min-height: inherit;
  43. /* 绝对定位 */
  44. position: absolute;
  45. }
  46. main {
  47. /* 内容区的宽度 */
  48. width: 790px;
  49. /* 最小高度继承父容器 */
  50. min-height: inherit;
  51. /* 绝对定位 */
  52. position: absolute;
  53. /* 定位属性 */
  54. right: 0;
  55. }
  56. </style>
  57. </head>
  58. <body>
  59. <header>页眉</header>
  60. <div class="wrap">
  61. <aside>侧边栏</aside>
  62. <main>主体内容区</main>
  63. </div>
  64. <footer>页脚</footer>
  65. </body>
  66. </html>

效果图:

3.内容的多栏/列显示

  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. * {
  10. /* 内边距清零 */
  11. padding: 0;
  12. /* 外边距清零 */
  13. margin: 0;
  14. /* 盒模型的内减模式 */
  15. box-sizing: border-box;
  16. }
  17. /* 设置html更元素的字体大小和颜色 */
  18. :root {
  19. font-size: 16px;
  20. color: #555;
  21. }
  22. div {
  23. /* 容器的边框样式 */
  24. border: 1px solid #000;
  25. /* 容器的内边距,rem为根元素字体单位 */
  26. padding: 1rem;
  27. /* 宽度 */
  28. width: 60rem;
  29. /* 容器的左右外边距和水平居中显示 */
  30. margin: 30px auto;
  31. }
  32. div {
  33. /*
  34. 分栏显示
  35. 列数和列宽设置多个
  36. 以css属性覆盖规则显示
  37. */
  38. column-count: 3; /* 分栏列数*/
  39. /* 分栏的列宽*/
  40. columns: 10rem;
  41. /*
  42. column-rule-style:分栏线的粗细
  43. column-rule-width:分栏线的宽度
  44. column-rule-color:分栏线的颜色
  45. */
  46. /* 多属性的简写 */
  47. column-rule: 10px solid #eee;
  48. }
  49. </style>
  50. </head>
  51. <body>
  52. <div>
  53. 6月11日以来,北京连续出现新增疫情,应急响应等级调整至二级,疫情防控形势严峻复杂。不少此前计划小长假外出的人们被迫放弃了计划。
  54. 端午大家还愿意出门吗?哪些出游方式是主流?飞猪报告显示,今年端午除京津冀地区外,全国各地周边游需求较高,整体出游人次已恢复到去年六成,京津冀地区约恢复到去年四成左右。由于假期天数短,整体出游积极性不及五一。
  55. 携程发布的《端午小长假旅游市场展望报告》指出,除北京等特殊地区外,端午小长假期间人们的出行、休闲需求依然存在,旅游市场的复苏基本面仍在。但相比前一阶段,人们的出行决策显然更加谨慎。
  56. 其中,上海、广州、深圳、成都、杭州、重庆、南京、西安在最热出发地与最热目的地中皆名列前茅。三亚—上海、成都—上海、上海—重庆、上海—三亚、上海—成都是端午期间最热门的航线。
  57. 火车票的预定数据显示,深圳—广州、上海—杭州、上海—南京、深圳—长沙、深圳—汕头、重庆—成都的预定热度排名最前。
  58. 此外,飞猪报告显示,端午出游积极的前十大城市分别为:上海、杭州、南京、广州、长沙、深圳、成都、三亚、重庆、厦门。
  59. 热门景区方面,携程报告显示,上海迪士尼度假区、珠海长隆海洋王国、中华恐龙园、上海海昌海洋公园、茶卡盐湖等高品质景区,是今年端午小长假期间游客们喜爱的热门景区。
  60. </div>
  61. </body>
  62. </html>

FlexBox弹性盒快速预览

  1. <style>
  2. .container {
  3. width: 300px;
  4. /* 如果这个容器中的内容要使用flexBox布局, 第一步就是必须将这个容器转为弹性盒子 */
  5. /* 弹性容器 */
  6. display: flex;
  7. }
  8. .container > .item {
  9. /* 一旦将父元素转为弹性容器,内部的“子元素”就会自动成为: 弹性项目 */
  10. /* 不管这个项目标签之前是什么类型,统统转为“行内块” */
  11. /* 行内:全部在一排显示 */
  12. /* 块: 可以设置宽和高 */
  13. /* flex: auto; */
  14. width: 60px;
  15. height: 60px;
  16. }
  17. </style>
  18. <body>
  19. <div class="container">
  20. <div class="item">1</div>
  21. <span class="item">2</span>
  22. <a class="item">3</a>
  23. <a class="item">4</a>
  24. </div>
  25. </body>

FlexBox弹性盒多行容器

属性:flex-wrap

  1. flex-wrap: nowrap;(默认)
  • 项目换行显示

2.flex-wrap: nowrap;

  • 项目不换行显示

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

属性:jsutify-content(项目属性)
1.justify-content: flex-start

  • 项目以主轴起始方向开始排列

2.justify-conetn: flex-end;

  • 项目以主轴结束方向排列

3.justify-content:center

  • 项目在主轴上居中显示

4.justify-content: space-between;

  • 相邻项目之间均分剩余空间

5.justify-content: space-around;

  • 项目周围均分剩余空间

6.justify-content: space-evenly;

  • 项目之间均分剩余空间

多行容器中的项目对齐方式

属性: align-content(项目属性)

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;
  • 项目整体之间均分交叉轴上的剩余空间

项目在交叉轴上的排列

属性:align-items(项目属性)
1.align-items: stretch(默认属性)

  • 项目在交叉轴上拉伸适应容器大小

    2.align-items: flex-start;
  • 项目在交叉轴的起始位置上

3.align-items: flex-end;

  • 项目怎交叉在的终止位置上

    4.align-items: center;
  • 项目在交叉轴上居中显示

主轴方向与项目排列的简写

属性: flex-flow

flex-directionflex-wrap属性的简写方式

  1. .box{
  2. flex-flow: column wrap;
  3. }
  4. /*等同于*/
  5. .box{
  6. flex-direction: column;
  7. flex-wrap: wrap;
  8. }

flex布局实现一个导航栏

  1. <style>
  2. /* 初始化操作 */
  3. * {
  4. padding: 0;
  5. margin: 0;
  6. box-sizing: border-box;
  7. }
  8. /* 去除a标签的样式 */
  9. a {
  10. text-decoration: none;
  11. color: #ccc;
  12. }
  13. /* 导航栏的高度、背景]内边距 */
  14. nav {
  15. height: 40px;
  16. background-color: #333;
  17. padding: 0 50px;
  18. /* 声明flex容器 */
  19. display: flex;
  20. }
  21. /* a链接的高度、行高和内边距 */
  22. nav a {
  23. height: inherit;
  24. line-height: 40px;
  25. padding: 0 15px;
  26. }
  27. /* 最后一个a标签的位置 */
  28. nav a:last-child {
  29. /* auto最大限度的占用多余空间 */
  30. margin-left: auto;
  31. }
  32. /* 鼠标悬浮时a链接的样式 */
  33. nav a:hover {
  34. background-color: #444;
  35. color: white;
  36. }
  37. </style>
  38. <body>
  39. <nav>
  40. <a href="">LOGO</a>
  41. <a href="">首页</a>
  42. <a href="">博客</a>
  43. <a href="">学院</a>
  44. <a href="">下载</a>
  45. <a href="">论坛</a>
  46. <a href="">登录/注册</a>
  47. </nav>
  48. </body>

项目属性:order控制项目顺序

属性: order(项目属性)

  • 默认值为0
  • 值越小优先级越高
  • 可以为负数
  1. <style>
  2. /* 项目的共同样式 */
  3. .item {
  4. width: 60px;
  5. background-color: #ccc;
  6. }
  7. .wrap {
  8. width: 300px;
  9. /* 声明容器 */
  10. display: flex;
  11. }
  12. .item:first-child{
  13. /* 降低排序优先级 */
  14. order: 5;
  15. }
  16. .item:last-child{
  17. /* 提示排序优先级 */
  18. order: -1;
  19. }
  20. </style>
  21. <body>
  22. <div class="wrap">
  23. <div class="item">1</div>
  24. <div class="item">2</div>
  25. <div class="item">3</div>
  26. <div class="item">4</div>
  27. <div class="item">5</div>
  28. </div>
  29. </body>

order小案例

  1. <style>
  2. /* 项目的共同样式 */
  3. .item {
  4. width: 400px;
  5. height: 40px;
  6. /* 行高 */
  7. line-height: 40px;
  8. margin: 5px 0;
  9. /* 边框 */
  10. border: 1px solid;
  11. text-align: center;
  12. /* 圆角 */
  13. border-radius: 10px;
  14. /* 给js提供定位父级 */
  15. position: relative;
  16. }
  17. .container {
  18. /* 声明flex容器 */
  19. display: flex;
  20. /* 主轴方向和不换行 */
  21. flex-flow: column nowrap;
  22. /* 项目在交叉轴上居中显示 */
  23. align-items: center;
  24. }
  25. </style>
  26. <body>
  27. <div class="container">
  28. <div class="item">
  29. 第一栏
  30. <button onclick="up(this)">Up</button>
  31. <button onclick="down(this)">Down</button>
  32. </div>
  33. <div class="item">
  34. 第二栏
  35. <button onclick="up(this)">Up</button>
  36. <button onclick="down(this)">Down</button>
  37. </div>
  38. <div class="item">
  39. 第三栏
  40. <button onclick="up(this)">Up</button>
  41. <button onclick="down(this)">Down</button>
  42. </div>
  43. <div class="item">
  44. 第四栏
  45. <button onclick="up(this)">Up</button>
  46. <button onclick="down(this)">Down</button>
  47. </div>
  48. </div>
  49. </body>
  50. <script>
  51. //offsetParent 获取定位父级
  52. let up = (ele) => (ele.offsetParent.style.order -= 1);
  53. let down = (ele) => (ele.offsetParent.style.order += 1);
  54. </script>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议