CSS垂直居中

position + transform

原理:根据定位关系子盒子的横向和纵向先基于父盒子移动50%,此时子盒子的左上角是居于父子的中心点的,因此利用translate反向各移动基于子盒子的50%,即可居中。

		<div class="box">
		    <div class="child"></div>
		</div>
	   .box {
	       position: relative;
	       height: 400px;
	       width: 400px;
	       margin: 0 auto;
	       border: 1px solid black;
	   }
	   .child{
	       position: absolute;
	       height: 50px;
	       width: 50px;
	       left: 50%;
	       top: 50%;
	       transform: translate(-50%,-50%);
	       border: 1px solid red;
	   }

position + margin

原理:利用margin:auto在垂直水平方向上自动分配剩余空间的原理,先让子盒子脱离标准文档流,再将子盒子强制定宽高,防止平铺,即可达到垂直居中的效果。

		<div class="box">
	    	<div class="child"></div>
		</div>
        .box {
            position: relative;
            height: 400px;
            width: 400px;
            margin: 0 auto;
            border: 1px solid black;
        }
        .child{
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            height: 50px;
            width: 50px;
            border: 1px solid red;
        }

flex

		<div class="box">
		    <div class="child"></div>
		</div>
	   .box {
           display: flex;
           height: 400px;
           width: 400px;
           margin: 0 auto;
           justify-content: center;
           align-items: center;
           border: 1px solid black;
       }
       .child{
           height: 50px;
           width: 50px;
           border: 1px solid red;
       }

flex + margin

原理:margin 优先级高于justify-contentalign-items,在他们格式生效前,自动分配该方向上的空余空间,不仅实在水平方向上,垂直方向上亦是如此。

		<div class="box">
		    <div class="child"></div>
		</div>
        .box {
            display: flex;
            height: 400px;
            width: 400px;
            margin: auto;
            border: 1px solid black;
        }
        .child{
            margin: auto;
            height: 100px;
            width: 100px;
            border: 1px solid green;
        }

其它

也可以利用具体的父盒子和子盒子的宽高值,来进行垂直水平移动同样能够达到垂直水平居中的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值