在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
基本介绍 特点
工作原理 设置父元素的 兼容性 Flex Container 先来看一个最简单的flex示例,外层div设置 html: <div class="flex-container"> <div class="box one"></div> <div class="box two"></div> <div class="box three"></div> </div> css: .flex-container{ max-width: 960px; margin: 0 auto; display:flex; } .box{ height: 100px; min-width: 100px; } .one{ background: pink; } .two{ background: lightgreen; } .three{ background: skyblue; } 效果: 效果与浮动布局类似,但是如果用浮动实现的话需要写更多的代码,而flex一行就搞定了。 1. Justify Content 如果我们想让flex item居中排列呢,我们可以给flex container增加一个css属性: .flex-container{ ... justify-content: center; } 效果如图: 除此之外 2. Align Items 实现了flex方向的居中后,垂直于主轴方向(cross axis)的居中可以用 css: .flex-container{ max-width: 960px; margin: 0 auto; display:flex; justify-content: center; height: 200px; background-color: white; align-items: center; } 效果: 使用flex解决了以往css垂直居中实现复杂的问题!相应的, 3. Flex Direction
css: .flex-container{ ... flex-direction: column; align-items: center; } 效果: 4. Flex Wrap 如果我们不想在窗口变窄的情况下压缩flex item,而是让超出边界的flex item换行显示那我们可以设置flex container的 .flex-container{ max-width: 960px; margin: 0 auto; display:flex; flex-wrap: wrap; } .box{ height: 100px; min-width: 300px; flex-grow: 1; } 当我们压缩窗口的时候,效果如下: flex wrap还有一个值: 由此可见,flex wrap一定程度上可以取代media query了。 5. Flex Row 最后, Flex Item 1. Flex Grow 在上面所有的例子中,三个flex item只占据了flex container小部分空间,如果想让flex item占满flex container我们需要给flex item设置 将css修改为: .box { height: 100px; min-width: 100px; flex-grow:1; } 效果: 可以看到三个子元素平分了父元素的空间,因为此时它们的 css: .box{ height: 100px; min-width: 100px; } .one{ background: pink; flex-grow: 1; } 效果: 此时two和three的大小不变,而one占据了父元素剩余空间。 如果将one的 css: .box{ height: 100px; min-width: 100px; flex-grow:1; } .one{ background: pink; flex-grow: 2; } 效果: 可以看到one的宽度变成了two和three的两倍,因此flex item的尺寸和 2. Flex Shrink 与 修改box的宽度为flex container的1/3,one、two、three的 .box{ height: 100px; width: 320px; } .one{ background: pink; flex-shrink: 1; } .two{ background: lightgreen; flex-shrink: 2; } .three{ background: skyblue; flex-shrink: 3; } 当窗口正常尺寸时,效果如下: 当我们压缩窗口使其变得更窄后,效果如下: 当flex container宽度变为540px后,子元素都被不同程度的压缩了。压缩后的one、two、three的宽度分别为250px、180px、110px,所以相比于初始宽度320px被压缩掉的宽度分别为70px、140px、210px, 假设flex shrink为 fs ∝ is/ss 3. Flex Basis flex-basis用于设置flex item的初始宽/高。为什么有width和height还需要重新加一个flex-basis呢?flex-basis和width/height有如下的区别:
我们来看一下flex-basis的作用,将css修改如下: .box{ height: 100px; flex-grow: 1; } .one{ background: pink; flex-basis: 100px; } .two{ background: lightgreen; flex-basis: 200px; } .three{ background: skyblue; flex-basis: 300px; } 3个flex item都在原来的初始宽度基础上增加了相同的宽度: 当然,这个例子如果换成使用 4. Order 通过 html: <section id="blocks"> <div class="one">1</div> <div class="two">2</div> <div class="three">3</div> <div class="four">4</div> </section> css: #blocks{ display: flex; margin: 10px; justify-content: space-between; } #blocks div{ flex: 0 0 100px; padding: 40px 0; text-align: center; background: #ccc; } 默认排列顺序是按照flex item在html中的出现顺序: 当我们修改flex item的 css: .one{ order: 4; } .two{ order: 3; } .three{ order: 2; } .four{ order: 1; } 效果: 结语 flex就先简单介绍到这里,flex很强大也很简单,希望大家用的开心。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论