相对div将占用div容器的其余部分

时间:2014-01-07 10:09:44

标签: css

说明
我有一个绝对位置的div容器,具有灵活的widtih和高度可以通过javascript改变。然后我有两个孩子DIVS,可以改变身高,取决于他们内部的元素。 我需要那些div保留在parrent div中。

我的问题:
第二个DIV正在离开DIV的高度,但我不希望如此。我需要它在滚动条的剩余空间。

(我有一个项目图片,但还不能发帖。)

我有:

<div id="parrent"> <!-- This div is flexible and can change height !-->
  <div id="children_top"></div> <!-- This div is flexible and can change height !-->
  <div id="children_bot"></div> <!-- I need this div to take rest of the height space,     needs to have scrolling if it's longer than rest space !-->
</div>

<style>
#parrent {
  position: absolute;
  top: 0; left: 0;
  height: 100%;
}
#children_top {
  background-color: #7f8f9f;
  color: white;
  width: 100%;  
  display: inline-block;
  margin: 0;
  padding: 5px 0;
  overflow: hidden;
  text-align: left;
  text-transform: uppercase;
}
#childner_bottom {
  display: inline-block;
  width: 100%;
}
</style>

4 个答案:

答案 0 :(得分:2)

这就是你想要的吗?

<style>
        #parrent {
          position: absolute;
          background: yellow;
          top: 0;
          left: 0;
          right: 0;
          height: 100%;
        }

        #container { 
          position: relative;
          background: blue;
          height: 100%;
          width: 100%;
        }

        #children_top {
          background: red;
          width: 100%;  
          display: block;
          overflow: hidden;
          height: 50px;
        }

        #children_bot {
          background: green;
          display: block;
          position: absolute;
          top: 50px;
          right: 0;
          left: 0;
          bottom: 0;
        }
</style>



<div id="parrent">
    <div id="container">
         <div id="children_top"></div> 
         <div id="children_bot"></div> 
    </div>
</div>

并且最后添加!!!

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
    $( document ).ready(function() {
        $("#children_bot").css("top", $("#children_top").height() + "px");
    });
</script>

如果我误解了您,您可以发送图片发送到unix@hotmail.com

答案 1 :(得分:2)

稍微改变你的html结构:

<div id="parrent">
    <div class="table">
        <div id="children_top" class="row">
        </div>
        <div id="children_bot" class="row">
            <div class="relative">
                <div class="scroll">
                </div>
            </div>
        </div>
    </div>
 </div>   

您可以使用以下样式:

body, html {height:100%; min-height:100%; padding:0; margin:0; position:relative;}
#parrent {
  position: absolute;
  top: 0; left: 0;
    bottom:0; right:0;
}
#children_top {
  background-color: #7f8f9f;
  color: white;
  padding: 5px 0;
  text-align: left;
  text-transform: uppercase;
  height:0px;
}
#children_bot {
  width: 100%; height:100%;
}

.table {display:table; height:100%; width:100%; }
.row {display: table-row; width:100%;}
.relative {position:relative; height:100%;}
.scroll {overflow:auto; position:absolute; top:0; left:0; right:0; bottom:0;}

Example

答案 2 :(得分:0)

不对现有标记和css进行重大更改:

请看这个小提琴: http://jsfiddle.net/xqbb8/

而且: http://jsfiddle.net/xqbb8/1/

您必须在div上指定显式高度和宽度,如下所示:

#parrent {
  position: absolute;
  top: 64px; left: 64px;
  height: 60%; width: 60%;
  background-color:red;
}
#children_top {
  background-color: #7f8f9f;
  color: white;
  margin: 0;
  padding: 5px 0;
  height: 10%;
  overflow: hidden;
  text-align: left;
  text-transform: uppercase;
}
#children_bot {
  height: 90%;
    background-color:blue;
    overflow: auto;
}

答案 3 :(得分:0)

首先给容器html高度,然后让 another solution

<强> CSS

html, body {
    width:100%;
}
#parrent {
    position: absolute;
    top: 0;
    left: 0;
    width:100%;
    background-color: blue;
    border:1px solid #000;
}
#children_top {
    background-color: #7f8f9f;
    color: white;
    margin: 0;
    padding: 5px 0;
    overflow: hidden;
    text-align: left;
    text-transform: uppercase;
}
#childner_bottom {
    background-color: grey;
}

<强> HTML

<div id="parrent">
    <br/>
    <div id="children_top">This is some text in top</div>
    <div id="childner_bottom">This is some text in bottom</div>
    <br />
</div>