博客列表 >BFC的作用和flex容器常用的属性

BFC的作用和flex容器常用的属性

骨头
骨头原创
2020年10月28日 00:03:56773浏览

1.利用BFC清除浮动

  1. <style>
  2. main {
  3. width: 30em;
  4. border: 1px solid;
  5. overflow: hidden;/*在父容器中添加BFC*/
  6. }
  7. div {
  8. width: 15em;
  9. height: 15em;
  10. border: 1px solid;
  11. float: left;
  12. }
  13. </style>
  14. <body>
  15. <main>
  16. <div></div>
  17. </main>
  18. </body>

效果:

BFC就是页面上的一个独立容器,包含浮动元素块,所以BFC的区域不会与子元素中的float的元素区域重叠.

2. 利用BFC外边距不折叠

  1. <style>
  2. .box {
  3. width: 37em;
  4. border: 1px solid;
  5. }
  6. .dxx {
  7. overflow: hidden;/*设置BFC*/
  8. }
  9. .box-1 {
  10. width: 12.5em;
  11. height: 12.5em;
  12. background-color: sandybrown;
  13. margin-bottom: 1em;
  14. }
  15. .box-2 {
  16. width: 12.5em;
  17. height:12.5em;
  18. background-color: aqua;
  19. margin-top: 3em;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="box">
  25. <div class="dxx">
  26. <div class="box-1">1</div>
  27. </div>
  28. <div class="box-2">2</div>
  29. </div>
  30. </body>

效果图:
常规文档流中相邻的盒子的垂直外边距会折叠,会取外边距以较大的为准,当我们在其中一个盒子设置一个BFC,BFC就是页面上的一个独立容器,容器里面的子元素不会影响外面元素,同样外面的元素不会影响到BFC内的元素。所以现在box1和box2的现在的垂直外边距距离是相加的,而不是取最大的值.

3. 利用BFC防止文字环绕

  1. <style>
  2. div {
  3. width: 30em;
  4. border: 1px solid;
  5. }
  6. img {
  7. float: left;
  8. }
  9. p {
  10. overflow: hidden;/*设置BFC*/
  11. }
  12. </style>
  13. <body>
  14. <div>
  15. <img src="/HTML/imges/pj2.png" alt="" />
  16. <p>
  17. 1MORE
  18. ComfoBuds是1MORE最近刚刚发布的旗下第一款半入耳式真无线耳机,这款耳机拥有1MORE完全自主设计,在它的身上看不出来其它任何产品设计的影子。1MORE
  19. ComfoBuds有珍珠白和星空黑两种外观配色设计。这两款颜色看起来非常精致,这两种颜色都会在不同的光线照射条件下发生复杂的折射现象,两个配色的充电盒就和它们的名字一样,一个像珍珠,一个像夜晚的星空。这款耳机是迄今为止最轻的1MORE旗下的耳机,单个耳机的重量仅为3.8g,得益于非常轻的重量和半入耳式的设计,这款耳机长时间佩戴的话也不会有不适的感觉。
  20. </p>
  21. </div>
  22. </body>

效果:
图片设置浮动之后,就脱离的常规文档流,就会覆盖下面元素的信息.但文本信息不会被覆盖,所以文本信息就会环绕图片,当我们文本设置BFC之后就不会被浮动影响.

总结

BFC就是脱离正常的文档流的规则,自己定义一个规则管理自己内部子元素不被外面因素给影响,内部元素也影响不了外部元素.

4. flex
  1. <style>
  2. .box {
  3. width: 70em;
  4. height: 70em;
  5. margin: 2em auto;
  6. border: 1px solid gray;
  7. display: flex;/*设置父容器为flex*/
  8. flex-flow: row;/*设置主轴水平为横向*/
  9. justify-content: space-between;/*项目两端对齐*/
  10. align-items: center;/*设置交叉轴的对齐居中*/
  11. }
  12. .col {
  13. width: 5em;
  14. height: 3em;
  15. background-color: darkgrey;
  16. border: 1px solid;
  17. text-align: center;
  18. padding: 1em;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div class="box">
  24. <div class="col">col-1</div>
  25. <div class="col">col-2</div>
  26. <div class="col">col-3</div>
  27. <div class="col">col-4</div>
  28. <div class="col">col-5</div>
  29. <div class="col">col-6</div>
  30. </div>
  31. </body>

多行容器对齐

  1. .box {
  2. height: 25em;
  3. border: 1px solid #000;
  4. padding: 1em;
  5. margin: 1em;
  6. display: flex;
  7. flex-flow: row wrap;/*主轴为横向内容溢出自动换行*/
  8. justify-content: space-around;/*横向对齐方式*/
  9. align-content: space-between;/*多行交叉轴的对齐方式*/
  10. }

只需要在父容器改以上代码
效果:

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