CSS 三大经典问题:垂直居中问题,两列等高问题,自适应宽问题。今天用flex总结一下
垂直居中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <div id="parent"> <div id="child"> </div> </div> #parent { display:flex; width:300px; height:300px; outline:solid 1px; justify-content:center; align-content:center; align-items:center; } #child { width:100px; height:100px; outline:solid 1px; } |
思路是创建一个只有一行的 flexbox,然后用 align-items:center; 和 align-content:center; 来保证行位于容器中,元素位于行中。
两列等高:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <div class="parent"> <div class="child" style="height:300px;"> </div> <div class="child"> </div> </div> <br/> <div class="parent"> <div class="child" > </div> <div class="child" style="height:300px;"> </div> </div> .parent { display:flex; width:300px; justify-content:center; align-content:center; align-items:stretch; } .child { width:100px; outline:solid 1px; } |
思路是创建一个只有一行的 flexbox,然后用 stretch 属性让每个元素高度都等于行高。
自适应宽:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <div class="parent"> <div class="child1"> </div> <div class="child2"> </div> </div> .parent { display:flex; width:300px; height:200px; background-color:pink; } .child1 { width:100px; background-color:lightblue; } .child2 { width:100px; flex:1; outline:solid 1px; } |
这个是 Flex 设计的基本能力了,给要自适应的元素添加 flex 属性即可