我想将position
元素设置为absolute
并拥有margin-bottom
,但似乎margin-bottom
没有效果。
HTML:
<div id='container'></div>
CSS:
#container {
border: 1px solid red;
position: absolute;
top: 0px;
right: 0px;
width: 300px;
margin-bottom: 50px; // this line isn't working
}
答案 0 :(得分:33)
我知道这不是一个非常及时的答案,但有办法解决这个问题。你可以添加一个&#34; spacer&#34;元素内部元素位于absolute
,底部边距为负,高度与负底边距相同。
HTML:
<div id="container">
<div class="spacer"></div>
</div>
CSS:
// same container code, but you should remove the margin-bottom as it has no effect
// spacer code, made it a class as you may need to use it often
.spacer {
height: 50px;
margin: 0 0 -50px 0;
/* margin: 20px 0 -50px 0; use this if you want #container to have a 'bottom padding', in this case of 20px */
background: transparent; /* you'll need this if #container's parent element has a different background from #container itself */
}
答案 1 :(得分:20)
在Joey's answer的基础上,为了获得更清晰的标记,请使用CSS :after
- 选择器为所需的底部边距添加间隔符。
#container:after {
position: absolute;
content: "";
bottom: -40px;
height: 40px;
width: 1px;
}
答案 2 :(得分:15)
当您的元素位于其顶部时,您期望margin-bottom
做什么?
margin-bottom
属性, absolute
将只对top
定位元素执行任何操作。
答案 3 :(得分:1)
您需要将position
设置为relative
才能设置其margin
。
margin-bottom
, margin-left
和 margin-right
不当元素位于 position: absolute
时工作。
实施例: HTML:
<img src="whatever.png"/>
CSS:
img {
position: relative;
margin: 0 auto;
}
答案 4 :(得分:0)
对于某些用例,将position: absolute
更改为position: relative
也可以解决此问题。如果您可以更改定位,这将是解决问题的最简单方法。否则,Joey的间隔就可以了。
答案 5 :(得分:0)
我找到了解决方案!!!
设置容器的最小高度,需要将位置从绝对更改为继承,将top属性设置为您选择的值,并且显示将需要内嵌块。
当我尝试使用绝对位置时,这对我有用,使用top属性移动元素并尝试添加边距。
min-height: 42px;
display: inline-block;
top: 6px;
position: inherit;
答案 6 :(得分:0)
由于我事先并不知道高度,所以我在绝对定位的末尾添加了一个不可见的元素,其高度为我想要的边距。
在我的情况下,绝对定位的元素是一个表,所以我添加了一个额外的空行,高度为100px。然后应该在表格底部的边界继续“tr:nth-last-of-type(2)td”。
希望这有帮助。
答案 7 :(得分:0)
我有一个绝对位置,需要在右边设置一个边距。 这是我想出的方式:
position:absolute;
top:0px;
left:10px;
width: calc(99% - 10px);
height:80%;