【发布时间】:2019-06-05 09:59:32
【问题描述】:
我正在努力学习和理解absolute和relative的职位。
场景 1(相对):
* {
padding: 0;
margin: 0;
}
#container {
width: 100%;
background-color: black;
}
#box1 {
width: 50%;
position: relative;
left: 20px;
color: white;
background-color: blue;
}
<div id="container">
<div id="box1">
<h1>This is box 1</h1>
</div>
</div>
我可以完全理解以上内容。当给定一个相对定位时,它会从其正常位置的左侧移动 20px。所以我在理论上研究的东西确实是有道理的,这一点很清楚。
现在,当我尝试这个时 - 场景 2(绝对):
* {
padding: 0;
margin: 0;
}
#container {
width: 100%;
background-color: black;
}
#box1 {
width: 50%;
position: absolute;
left: 20px;
color: white;
background-color: blue;
}
<div id="container">
<div id="box1">
<h1>This is box 1</h1>
</div>
</div>
问题:为什么黑色背景不见了?据我了解,box1 应该从其父级(当前是浏览器,因为我使用绝对位置)向左移动 20px。
所以它确实移动了,但是为什么黑色背景(在其父级中设置)不见了? Box1不是嵌套在里面的吗?怎么不见了?
我试过用谷歌搜索,但我无法理解这个逻辑,如果有人能指出我正确的方向,我会很高兴。
Make absolute positioned div expand parent div height
我试着看看这个,但是,我又一次没有理解正确的答案。
【问题讨论】:
-
设置位置时:绝对;您将该元素从文档流中取出,因此对于父元素,它看起来里面没有任何东西,所以它折叠到 0 高度,这是关于定位的好读物:css-tricks.com/almanac/properties/p/position
-
啊,我明白了。所以我必须手动设置父 div 的高度以匹配子 div 与绝对位置?是这样完成的吗?
-
正确。这就是为什么 position: absolute;用于非常特殊的情况,否则大部分时间会破坏布局
-
太棒了,谢谢。是的,我尝试手动设置高度并且它有效。是的,我同意,除非真的需要,否则我不会使用它。它确实打破了网站的布局。如果您可以将此作为答案发布,我会将其标记为答案!谢谢朋友。
-
我出去吃午饭了,但不用担心答案,我很高兴能帮上忙
标签: css