margin到底相对于谁?

margin到底相对于谁?

问题描述:

下面这段代码中#left和#right绝对定位到了#main的两边。

#main中的

margin: 0 210px;

为什么这里margin外边距的效果是相对于父元素,而不是相对于#left和#right呢?

相关代码:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<title>margin</title>
<style type="text/css">
html,
body {
margin: 0;
height: 100%;
}
#left,
#right {
position: absolute;
top: 0;
width: 200px;
height: 100%;
}
#left {
left: 0;
background: #444444;
}
#right {
right: 0;
background: #444444;
}
#main {
margin: 0 210px;
height: 100%;
}
</style>
</head>

<body>
<div id="left"></div>
<div id="main"></div>
<div id="right"></div>
</body>

</html>


正在回答 回答被采纳积分+1

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

1回答
好帮手慕星星 2022-06-02 09:42:49

同学你好,margin具体值不相对于其他元素,就是给元素自己设置的,但是看起来相对于父元素

https://img1.sycdn.imooc.com//climg/6298155b09d0ce6225601063.jpg

而#left和#right设置了绝对定位,脱离文档流,加上方向位置,所以会盖在#main元素上面。

祝学习愉快!

  • 那请问,在下面这段代码中为什么margin看上去是相对于#left和#right呢?是因为设置了浮动的原因么?

    <!DOCTYPE html>

    <html>


    <head>

    <meta charset="utf-8" />

    <title>margin</title>

    <style type="text/css">

    html,

    body {

    margin: 0;

    padding: 0;

    }

    #left,

    #main,

    #right {

    float: left;

    width: 300px;

    height: 300px;

    background-color: aqua;

    }

    #main {

    margin: 0 100px;

    }

    </style>

    </head>


    <body>

    <div id="left"></div>

    <div id="main"></div>

    <div id="right"></div>

    </body>


    </html>


    2022-06-02 11:29:40
  • 是的,因为三个元素都设置浮动,脱离文档流,在同一水平面,所以看起来main是相对于#left和#right设置的间距。

    2022-06-02 13:09:19
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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