将Div放置在另一个DIV下方

时间:2009-12-15 17:59:26

标签: css

我有两个DIV元素,其中一个具有绝对位置(主DIV的左下角)。第二个DIV是隐藏的,只有通过点击链接才能显示。

我需要第二个出现在第一个下方。但由于第一个div的位置是绝对的,第二个位置出现在第一个div之上。

HTML代码:

    <div class ="main-div">
      <div class = "wrapper">
      <div class ="first-div">
        <a href ="blah"> <span>my link</span> </a>
        //this is absolute positioned
      </div>
     <div class ="second-div"> 
       //this only appears after clicking on a link
       <form>
          <textarea>
          </textarea>
       </form>
     </div>
   </div>
</div>

CSS:

    div.wrapper {
     width:inherit;
     float:left;
     bottom:6px;
     position:absolute;
     padding: 0 0 0 0;
     overflow: auto;
    }

    div.second-div {
        padding-top: 2px  
    }

    div.main-div{
        background:{colour} url({image}) no-repeat 0  100%;
    width:557px;
    padding:8px 13px 4px 13px;
    min-height:61px;
    position:relative;
}

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:9)

我认为解决方案需要执行以下操作。有一个包装div:

<div id="my_wrapper">
  content
</div>

让这个div绝对定位。然后在这个div的内部有两个div,你的可见div,以及需要“变得”可见的div。

<div id="my_wrapper">
  <div id="visible_item">Item</div>
  <div id="may_become_visible">Not Visible Now Item</div>
</div>

然后您可以根据需要显示/隐藏并正确定位内部内容。

答案 1 :(得分:2)

好的,有了您更新的问题,我相信我已经创建了您正在寻找的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
    <style>
        HTML
        {
            margin: 0px;
            padding: 0px;
            height: 100%;
        }

        BODY
        {
            margin: 0px;
            padding: 0px;
            height: 100%;
        }

        div.first-div
        {
            width: inherit;
            float: left;
            bottom: 60px;
            position: absolute;
            padding: 0 0 0 0;
            overflow: auto;
        }

        div.second-div
        {
            display: none;
            position: absolute;
            float: left;
            bottom: 0px;
        }
        div.main-div
        {    
            background:{colour} url({image}) no-repeat 0  100%;
            width:557px;
            min-height:61px;
            position:relative;
            float: left;
            height: 100%;
        }
    </style>
    <div class="main-div">
        <div id="firDiv" class="first-div">
            <a href="#" onClick="document.getElementById('secDiv').style.display='block';"><span>my link</span></a>
            //this is absolute positioned
        </div>
        <div id="secDiv" class="second-div">
            //this only appears after clicking on a link
            <form>
                <textarea></textarea>
            </form>
        </div>
        this is my content
    </div>
</body>
</html>

现在,这样做的绝对位置是页面底部的第一个和第二个div,它们的位置使它们不会相互重叠。如果您不喜欢第一个div从页面底部向上这么高的事实,您可以修改first-div样式:

div.first-div
{
    width: inherit;
    float: left;
    bottom: 20px;
    position: absolute;
    padding: 0 0 0 0;
    overflow: auto;
}

然后将链接更新为

<a href="#" onClick="document.getElementById('secDiv').style.display='block';document.getElementById('firDiv').style.bottom='60px';"><span>my link</span></a>

基本上,你在那里做的是将第一个div更改为更接近页面底部,然后在点击链接时移动它,以便为第二个div提供更多空间。

它没有解决在绝对定位的div下显示相对定位div的根本问题,但希望能解决您的具体问题。

答案 2 :(得分:0)

只是一个猜测,但你是否尝试过将风格添加到第二个div?我怀疑它会有所帮助,但它可能会有所帮助。

您还可以尝试为第二个div添加一个上边距,该边距等于第一个div的高度。基本上,像:

<div id="second-div" style="padding-top: 40px">

其中40px是第一个div的高度。问题在于你需要知道第一个div的高度是多少,如果它是可变的,那么这种方法无济于事。

相关问题