margin-bottom

margin-bottom

# 具体遇到的问题
老師請問為什麼不能用margin-bottom:50px;來垂直置中呢?為甚麼一定要用margin-top:-50px才有效呢?這兩個不是同樣的意思嗎?

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,代码中效果不实现是因为,如果使用的是margin-bottom:那么需要结合bottom一起使用。如果是使用margin-top,就需要结合top值 一起使用,所以代码修改如下:

http://img1.sycdn.imooc.com//climg/5fab593809b0e0f203800291.jpg

祝学习愉快!


齊帥 提问者 2020-11-11 11:16:52

<html>

<head>

  <meta charset="UTF-8">

  <title>Document</title>

  <style>

    /*完善下列代码*/

    .per{

     width: 300px;

     height: 300px;

     background: red;

     margin-left:200px;

     margin-top: 200px;

     position:relative;

   }


   .son{

     width: 100px;

     height: 100px;

     background: blue;

     position:absolute;

     top:50%;

     margin-bottom:50px;

     left:50%;

     margin-left:-50px;

   }

  </style>

</head>

<body>

  <div class="per">

    <div class="son"></div>

  </div>

</body>

</html>



這裡這樣寫就沒有效果了


好帮手慕鹤 2020-11-11 11:11:06

同学你好,margin-bottom也是可以实现的,可以参考下图加深理解:

(1)如果使用margin-bottom来实现垂直居中的效果,也需要结合bottom来实现,先给蓝色元素设置bottom:50%;可以看到父元素的中间线是子元素终点线:

http://img1.sycdn.imooc.com//climg/5fab54b60928272d11290367.jpg

(2)根据上面的图可以看到,子元素并没有相对于父元素垂直居中显示,所以需要将子元素向下移动自己高度的一半,但是给子元素设置bottom值时,子元素的终点线是父元素的中心点,那么就需要向下移动自身高度的一半,从终点线向下移动一半,就需要是-50px,所以需要设置margin-bottom:-50px;

http://img1.sycdn.imooc.com//climg/5fab55fc0932e8ef11170381.jpg

祝学习愉快!

  • 提问者 齊帥 #1
    <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*完善下列代码*/ .per{ width: 300px; height: 300px; background: red; margin-left:200px; margin-top: 200px; position:relative; } .son{ width: 100px; height: 100px; background: blue; position:absolute; top:50%; margin-bottom:50px; left:50%; margin-left:-50px; } </style> </head> <body> <div class="per"> <div class="son"></div> </div> </body> </html> 老師為什麼這樣就無效
    2020-11-11 11:16:02
好帮手慕鹤 2020-11-11 10:57:55

同学你好,margin-top:50px;跟margin-top:-50px;不是一个意思,可以参考下图来加深理解,如下:

(1)想要蓝色的子元素相对于红色的父元素实现垂直居中定位,需要给蓝色子元素设置top:50%,这样蓝色子元素上面的起点位置就是红色父元素的中心位置,如下:

http://img1.sycdn.imooc.com//climg/5fab52260941fc5a06230483.jpg

(2)根据上图可以看到,子元素并没有相对于父元素垂直居中显示,所以需要将子元素再向上移动自己高度的一半,刚才给子元素设置top值时,子元素的起点是父元素的中心,那么子元素再向上移动自身高度的一半,那么就是margin-top:-50px;如果是margin-top:50px的话,就相当于子元素根据自身的起点向下移动的,是不能实现垂直居中的效果。

http://img1.sycdn.imooc.com//climg/5fab52ea096d56a406190503.jpg

实现效果:

http://img1.sycdn.imooc.com//climg/5fab5331099e5cf003960398.jpg

祝学习愉快!


  • 提问者 齊帥 #1
    老師我上面打的是margin-bottom.......
    2020-11-11 11:00:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师