关于div居中的问题

我不管 我最帅

一、水平居中(宽度未知)

     <div class="parent">
         <div class="child">
              ...
         </div>   
     </div>
  1. 将需要居中的div 设置为 行内块元素,父级div 设置 text-align:center
  .parent{
    text-align:center;
  }
  .child {
    display: inline-block;
  }
  1. 先将子元素设置为块级表格来显示(类似),再将其设置水平居中,
    display:table在表现上类似block元素,但是宽度由内容撑开。
 .child {
    display: table;
    margin: 0 auto;
  }
  1. 先将父元素设置为相对定位,再将子元素设置为绝对定位,向右移动子元素,移动距离为父容器的一半,
    最后通过向左移动子元素的一半宽度以 达到水平居中。
    (垂直居中同理 top: 50%; transform:translateY(-50%);)
  .parent {
    position:relative;
  }
  .child {
    position:absolute;
    left:50%;
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    -o-transform: translateX(-50%);
    transform: translateX(-50%);
  }

二、垂直居中

  1. 利用表布局 父元素display:table; 子元素 display:table-cell; vertical-align:middle;
  .parent {
    display:table
  }
  .child {
     display:table-cell; 
     vertical-align:middle;
  }
  1. 使用absolute+负margin(已知高度宽度)
    通过绝对定位元素距离顶部50%,并设置margin-top向上偏移元素高度的一半,就可以实现了。
<div class="parent">
    <div class="child">固定高度的块级元素垂直居中。</div>
</div>
.parent {
   position: relative;
}
.child {
   position: absolute;  
   top: 50%;
   height: 100px;
   margin-top: -50px;
}
  1. 使用absolute+transform
    当垂直居中的元素的高度和宽度未知时,可以借助CSS3中的transform属性向Y轴反向偏移50%的方法实现垂直居中。但是部分浏览器存在兼容性的问题。
<div class="parent">
    <div class="child">未知高度的块级元素垂直居中。</div>
</div>
.parent {
   position: relative;
}
.child {
   position: absolute;
   top: 50%;
   transform: translateY(-50%);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值