实现子元素的水平垂直居中

首先我是 参考 大佬
https://juejin.cn/post/6844903679242305544?searchId=20230909222658C6F9D6A4FAD1A9C911AC
写的这篇文章.
一、第一部分:
1父级存在宽高,子级存在宽高
①第一种方法:
“子绝父相”,使用"margin:auto;top:0;right:0;bottom:0;left:0"

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<style>
    .wp{
        border: 1px solid red;
        width: 200px;
        height: 200px;
    }
    .box{
          background-color: green;
          border:1px solid black;  
    }
     .size{
      width: 50px;
          height: 50px;
    }
    .wp{
        position: relative;
    }
    .box{
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      margin: auto;
    }
</style>
<body>
   <!-- //父子居中的方法 -->
   <div class="wp">
     <div class="box  size"></div>
   </div>
</body>
</html>

这段代码直接放到html文件中就可以.
这是其中的一种思路,这个思路是
“top:0;right:0;bottom:0;left:0;margin:auto”
对应的是意思为"子元素相对于 最近的 非static定位 祖先 居中",对于box来说它的最近的"position:非static"祖先是"wp"祖先,也就是它的父级…

在这里插入图片描述

如果子元素不添加"width"和"height",那么子元素就会填满整个 ‘最近的position属性不为static的祖先元素’.
在这里插入图片描述

②使用的是 子绝父相 top:50%;left:50%;margin-left:-“子元素宽度一半” ;margin-rtop:-“子元素高度一半”
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<style>
    .wp{
        border: 1px solid red;
        width: 200px;
        height: 200px;
    }
    .box{
          background-color: green;
          border:1px solid black;  
    }
     .size{
      width: 50px;
      height: 20px;
    }
    .wp{
        position: absolute;
    }
    .box{
     position: relative;
     top: 50%;
     left: 50%;
    margin-left: -25px;
    margin-right: -10px;
     }
</style>
<body>
   <!-- //父子居中的方法 -->
   <div class="wp">
     <div class="box  size"></div>
   </div>
</body>
</html>

解释一下:
top:50%;和left:50%;是相对于父元素的宽度和高度和宽度的50%;
但是子元素中的position:absolute;是元素的"左上角"对于父元素的位置,
如果写top:50%;left:50%那么子元素的"左上角"就在父元素的"中心点上",那么实际上子元素并没有实现水平垂直居中.是存在偏移的
那么我们就使用margin-left:-25px;让元素的偏移
在这里插入图片描述
就是需要子元素的中心点跑到他的左上角的点的位置上,就能满足要求了.目标就是这个,实现目标有两种方式
第一种
margin-left:-50px; margin-top:-50px
第二种
top: calc(50% - 50px);
left: calc(50% - 50px);

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值