css 水平居中 垂直居中 水平垂直居中

一、水平居中

      1、行内元素水平居中      text-align :center

     2、块级元素水平居中      margin:0  auto 

     3、多个块状元素的水平居中    

      实现多个水平排列的块状元素的水平居中,是将要水平排列的块状元素设为display:inline-block,然后在父级元素上设置text-align:center,达到与上面的行内元素的水平居中一样的效果。

二、垂直居中

  1、行内或类行内元素垂直居中  

  对于单行行内或者文本元素,只需为它们添加等值的 padding-top 和 padding-bottom 就可以实现垂直居中;

  对于多行文本,同样可以使用等值 padding-top 和 padding-bottom 的方式实现垂直居中。如果在使用过程中发现这种方法没见效,那么可以通过 CSS 为文本设置一个类似 table-cell 的父级容器,然后使用 vertical-align 属性实现垂直居中;

 可以使用 flexbox 实现垂直居中,对于父级容器为 display: flex 的元素来说,它的每一个子元素都是垂直居中的;

 2、块级元素  

  已知元素的高度  

  无法获知元素的具体高度是非常常见的一种状况,比如:视区宽度变化,会触发布局重绘,从而改变高度;对文本施加不同的样式会改变高度;文本的内容量不同会改变高度;当宽度变化时,对于宽高比例固定的元素(比如图片),也会自动调整高度……  如果我们知道元素的高度,可以这样来实现垂直居中: 

 .parent {   position: relative; } 

 .child {   position: absolute;   top: 50%; 

               height: 100px;   margin-top: -50px; /* account for padding and border if not using 

               box-sizing: border-box; */ }

未知元素的高度  

  如果不知道元素的高度,那么就需要先将元素定位到容器的中心位置,然后使用 transform 的 translate 属性,将元素的中心和父容器的中心重合,从而实现垂直居中: 

 .parent {   position: relative; 

  } 

 .child {   position: absolute;  

               top: 50%;  

               transform: translateY(-50%);

          }

三、水平垂直居中

宽高固定元素  

  设定父级容器为相对定位的容器,设定子元素绝对定位的位置 position: absolute; top: 50%; left: 50%,最后使用负向 margin 实现水平和垂直居中,margin 的值为宽高(具体的宽高需要根据实际情况计算 padding)的一半。  

 .parent {   position: relative; } 

 .child {   width: 300px;  

  height: 100px;  

  padding: 20px;   

  position: absolute;   

  top: 50%;  

  left: 50%;   

  margin: -70px 0 0 -170px;

  }

 宽高不固定元素  

  如果无法获取确定的宽高,同样需要设定父级容器为相对定位的容器,设定子元素绝对定位的位置 position: absolute; top: 50%; left: 50%。不同的是,接下来需要使用 transform: translate(-50%, -50%); 实现垂直居中:

  .parent {   position: relative; }

 .child {   position: absolute;  

  top: 50%; 

  left: 50%;  

  transform:

  translate(-50%, -50%);

 }   

flexbox  

使用 flexbox 实现水平和垂直居中,只需使用两条居中属性即可: 

 .parent {   display: flex;   

                  justify-content: center;  

                  align-items: center;

           } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值