垂直居中的方法

总结垂直居中的方法

<div class="layout-wrapper">
    <div class="box1">
        <h4>垂直居中方法</h4>
    </div>
  </div>

.layout-wrapper{
   width:300px;
	height:300px;
    border: 1px solid red;
}
.box1{
    height:150px;
	width:150px;
    border:1px solid blue;
}

方法1:display:flex

.layout-wrapper{
   width:300px;
	height:300px;
    border: 1px solid red;
    display:flex;
    align-items:center;
}
.box1{
    height:150px;
	width:150px;
    border:1px solid blue;
    display:flex;
    align-items:center;
}

 方法2:margin,transform配合

.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  margin: 50% auto;
  transform: translateY(-50%);
// 这句话的意思就是向上平移自身元素的百分之50
}

方法3:父标签的相对定位+子标签的绝对定位absolute+其他

.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  position: relative;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  position: absolute;
  left: 50%;
  top: 50%;
  /*宽高的各一半*/
  margin-left: -75px;
  margin-top: -75px;
}

//第二种方法:当宽度和高度未知时使用absolute+margin:auto,
.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  position: relative;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  margin: auto;
}

//第三种方法absolute+transform
.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  position: relative;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

方法4:采用table-cell,dispaly:table-cell;会使元素表现的类似一个表格中的单元格td,利用这个特性可以实现文字的垂直居中效果。

.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  display: inline-block;
//   如果没有行内块元素设置,div不会水平居中只会垂直居中
// text-align: center应用场景:
// 父盒子设置text-align: center后,盒子里面的文字内容、行内元素、行内块元素、 都可以水平居中对齐;
// 而块级元素一般是不可以水平居中的。

// 因此,块级元素想要水平居中,由两种方法:
// 一:块级元素没有设置宽高,且父盒子设置了text-align: center;
// 二:块级元素设置margin:0 auto;即可
}

方法五:inline-block+vertical-aligin

.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  text-align: center;
  line-height: 300px;
}
.box1 {
  height: 150px;
  width: 150px;
  line-height: 100px;//如果不设置就会继承父元素的行高
  border: 1px solid blue;
  display: inline-block;
  vertical-align: middle;

//   vertical-align属性只对行内元素有效,对块内元素无效!
// 如果仅仅设置display为inline-block;,vertical-align也是无效的
// 那是因为将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内!
// 说的通俗点,就是你设置的当前div属性还是块对象呈递,但是允许同一级别的div在同一行内,也可以设置宽度和高度!

// // 解决办法:
// 1.将display属性设置为table-cell,将块元素转化为单元格,然后加上vertical-align:middle

// 2.设置行高即line-height,但是要注意,需要设置父元素的行高,要与div的高度一致!否则也会有偏差的

}

方法六:强大的grid

.layout-wrapper {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  display: grid;
}
.box1 {
  height: 150px;
  width: 150px;
  border: 1px solid blue;
  align-self: center;
  justify-self: center;
}

//关于grid还没有很了解,这里只做记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值