当前位置:   article > 正文

Flex实现元素的水平居中和垂直居中_flex 垂直居中和水平居中

flex 垂直居中和水平居中

flex容器内子元素的floatclearvertical-align属性将失效,所有子元素自动成为容器成员flex item,即“项目”。

水平居中

justify-content属性定义了项目在主轴(水平)上的对齐方式。

justify-content可取值:

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等(类似margin-left = margin-right)。所以,项目之间的间隔比项目与边框的间隔大一倍。
1. 单个元素水平居中


  1. //css
  2. .box{
  3. display:flex;
  4. justify-content:center;
  5. background:#0099cc
  6. }
  7. h1{
  8. color:#FFF
  9. }
  10. //html
  11. <div class="box">
  12. <h1>flex弹性布局justify-content属性实现元素水平居中</h1>
  13. </div>

不需要对目标元素设置任何样式,如:widthmargin

2. 多个元素水平居中


  1. //css
  2. .box{
  3. display:flex;
  4. justify-content:center;
  5. width:100%;
  6. background:#0099cc
  7. }
  8. h1{
  9. font-size:1rem;
  10. padding:1rem;
  11. border:1px dashed#FFF;
  12. color:#FFF;
  13. font-weight:normal;
  14. }
  15. //html
  16. <div class="box">
  17. <h1>flex弹性布局justify-content属性实现元素水平居中</h1>
  18. <h1>flex弹性布局justify-content属性实现元素水平居中</h1>
  19. <h1>flex弹性布局justify-content属性实现元素水平居中</h1>
  20. </div>
元素垂直居中

align-items属性定义项目在交叉轴(垂直)上如何对齐。

align-items可取值:

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为 auto,将占满整个容器的高度。
1. 单个元素垂直居中


  1. //css
  2. .box{
  3. display:flex;
  4. width:980px;
  5. height:30rem;
  6. align-items:center;
  7. background:#0099cc
  8. }
  9. h1{
  10. font-size:1rem;
  11. padding:1rem;
  12. border:1px dashed#FFF;
  13. color:#FFF
  14. }
  15. //html
  16. <div class="box">
  17. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  18. </div>
2. 多个元素并排垂直居中


  1. //css
  2. .box{
  3. display:flex;
  4. width:980px;
  5. height:30rem;
  6. align-items:center;
  7. background:#0099cc
  8. }
  9. h1{
  10. font-size:1rem;
  11. padding:1rem;
  12. border:1px dashed #FFF;
  13. color:#FFF
  14. }
  15. //html
  16. <div class="box">
  17. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  18. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  19. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  20. </div>

如果想父元素水平居中,你只需要给body标签一个属性就OK了。代码如下:

  1. body{
  2. display:flex;
  3. justify-content:center;
  4. }
3. 多行元素垂直居中


  1. //css
  2. body{
  3. display:flex;
  4. justify-content:center
  5. }
  6. .box{
  7. display:flex;
  8. width:980px;
  9. height:30rem;
  10. justify-content:center;
  11. background:#0099cc;
  12. flex-direction:column;
  13. align-items:center;
  14. }
  15. h1{
  16. display:flex;
  17. justify-content:center;
  18. font-size:1rem;
  19. padding:1rem;
  20. border:1px dashed #FFF;
  21. color:#FFF;
  22. width:28rem
  23. }
  24. //html
  25. <div class="box">
  26. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  27. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  28. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  29. <h1>flex弹性布局align-items属性实现垂直居中</h1>
  30. </div>

由于弹性容器.box添加了display:flex;属性,子项目默认是水平排列的,所以给.box追加一个flex-direction:column属性来让子项目垂直排列。此时垂直方向作为主轴,所以我们可以使用justify-content:center来让所有子项目在垂直方向上居中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/702730
推荐阅读
  

闽ICP备14008679号