我一直在寻找这个问题,并最终在谷歌第10页的一些不起眼的论坛上找到了解决方案。解决方案在答案中
出现的问题如下: 在用CSS相对定位元素之后,我得到了元素所在的空格......我不想要空格!
.thetext
{
width:400px;
background:yellow;
border: 1px dashed red;
margin:50px;
padding:5px;
font-weight:bold;
}
.whiteblob
{
position:relative;
top:-140px;
left:70px;
width:200px;
height:50px;
border: 4px solid green;
background:white;
font-size:2.5em;
color:red;
}
.footerallowedwhitespaceinblue
{
height:10px;
background-color:blue;
}
.footer
{
background-color:grey;
height:200px;
}
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script>
</div>
<div class="whiteblob">
buy this!
</div>
<div class="footerallowedwhitespaceinblue">
</div>
<div class="footer">
The whitespace above is way to big! The buy this still takes up space whilst it is moved.
</div>
JSFiddle:http://jsfiddle.net/qqXQn/
正如您在示例中所看到的,我想要的唯一空格是由文本块引起的空格,边距为50px;并且由footerallowedwhitespaceinblue的间距(蓝色使其可见)。 问题是......空白现在太大了,因为“买这个”div在它相对定位后仍占用空间。
我该如何解决这个问题?
答案 0 :(得分:44)
您可以通过应用等于元素宽度或高度的负边距来解决此问题。
对于位于顶部的100px高度的元素,您将应用margin-bottom:-100px;
对于位于底部的100px高度的元素,您将应用margin-top:-100px;
对于位于左侧的100px宽度的元素,您将应用margin-right:-100px;
对于位于右侧的100px宽度的元素,您将应用margin-left:-100px;
cut&amp;粘贴css片段:
.top
{
postion:relative;
top:-100px;
height:25px;
margin-bottom:-25px;
}
.bottom
{
postion:relative;
top:100px;
height:25px;
margin-top:-25px;
}
.left
{
postion:relative;
left:-100px;
width:25px;
margin-right:-25px;
}
.right
{
postion:relative;
left:100px;
width:25px;
margin-left:-25px;
}
然后重新编写的示例代码成为:
.thetext
{
width:400px;
background:yellow;
border: 1px dashed red;
margin:50px;
padding:5px;
font-weight:bold;
}
.whiteblob
{
position:relative;
top:-140px;
left:70px;
width:200px;
height:50px;
margin-bottom:-50px;
border: 4px solid green;
background:white;
font-size:2.5em;
color:red;
}
.footerallowedwhitespaceinblue
{
height:10px;
background-color:blue;
}
.footer
{
background-color:grey;
height:200px;
}
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script>
</div>
<div class="whiteblob">
buy this!
</div>
<div class="footerallowedwhitespaceinblue">
</div>
<div class="footer">
</div>
答案 1 :(得分:3)
这是一个例子。在这种情况下,对象向右移动,然后使用负顶值向上移动。消除其尾随边距空间需要增加相等的负边际值。
position:relative;
width:310px;
height:260px;
top:-332px;
margin-bottom:-332px;
left:538px;
答案 2 :(得分:2)
你可以通过在position:relative之前给出float:left来解决这个问题。使用margin-left,margin-top属性而不是top,left。
答案 3 :(得分:2)
如果你足够勇敢,可以将overflow:hidden;
和bottom negative margin
放在相对定位的元素上,它会删除剩余的间距:),即在响应式网站上。
但请检查它是否隐藏了所需的内容。
答案 4 :(得分:0)
将相对元素顶部设置为父字体大小,如下代码:
jade in jade template:
div.dialog(id='login')
div.dialog-header
span.title login
a.dialog-close(href="") X
hr
div.dialog-body
p hello this is body
hr
div.dialog-footer
p this is footer
和css:
.dialog
{
height: 100%;
position: absolute;
top: -100%;
right: 50%;
left: 50%;
bottom: 100%;
border: 2px solid rgba(255, 255, 255,1);
border-radius: 3px;
font-size: 14px;
}
.dialog-body{
position: relative;
background-color: #F99;
height: 80%;
top: -14px;
}
.dialog-header{
position: relative;
height: 10%;
background-color: #F9F9F9;
}
.dialog-footer{
position: relative;
height: 10%;
top: -28px;
background-color: #F9fdf9;
}
这对我有用!
答案 5 :(得分:-1)
将外部div设置为&#34; position:relative&#34;想要移动的div为&#34; position:absolute&#34;并设置顶部和左侧值。这将相对于外部div(而不是页面)定位项目。相对位置留下空白。绝对没有。
答案 6 :(得分:-1)
这对我来说不起作用,有4个彼此相互锁定的相对位置。 我无法让它工作,甚至添加和重新定位每个:
目前,这已经过优化(请参阅http://christ.eye-of-revelation.org/index.html第2页),但在所有情况下,它们都会根据媒体或窗口大小突出显示图像区域...
解决方案是全球性的,更容易;它也被用于两个独立的块来模拟和交换两个页面:所有问题都解决了宽度和高度定义区域,并设置其样式=&#34;溢出:隐藏;&#34;
希望这可以提供帮助。
答案 7 :(得分:-2)
将高度设置为0:height:0px;
。
现在这个div可以放在任何地方。