DIV溢出外部容器上的可滚动Y轴

时间:2015-11-19 22:36:56

标签: html css

我正在尝试制作一个有两列的方框。左列应具有标题和可滚动内容。当我向左列添加标题时,它会向下推送下一个元素。我怎样才能让它与容器齐平?

查看我制作的JSFIDDLE,因为很容易看到问题。

CSS

html, body{
    height: 100%;
}
#container{
    width:100%;
    background-color: blue;
    height: 400px;
    padding: 5px;
}
#col1{
    width: 33.33%;
    height: 100%;
    background-color: red;
   float:left;
}
#col2{
    float:left;
    width: 66.66%;
    background-color: yellow;
    height:100%;
}
#scrollplease{
    overflow-y: scroll;
    height: 100%;
}

5 个答案:

答案 0 :(得分:0)

我认为问题可能出在#scrollplease的高度上。尝试玩高度。 80%似乎是开始演示的好地方。

#scrollplease{
    overflow-y: scroll;
    height: 80%;
}

您可能还想使用h2ul元素上的填充/边距来排列所有内容。

答案 1 :(得分:0)

用户样式表或浏览器正在为你的h2和ul添加保证金。你应该至少使用有限的css重置。

您还需要使用列的高度和宽度来对抗容器上的填充

我会做这样的事情:

h2 {
margin: 0;
}
ul {
margin: 0;
}
#container{
  width:100%;
  border: 5px solid blue;
  height: 400px;
}
#col1{
  width: 33%;
  padding: 10px 0 10px 1%;
  height: 380px;
  background-color: red;
  float:left;
}
.header{
  height: 15%;
}
#scrollplease{
  overflow-y: scroll;
  height: 85%;
}
#col2{
  float:left;
  padding: 10px 0 10px 1%;
  height: 380px;
  width: 65%;
  background-color: yellow;
}

请参阅此JS Fiddle

答案 2 :(得分:0)

框高度设置为400px,滚动包装器的高度设置为100%(变为400px)。即使滚动框上方有一个标题,占据大约75px,滚动包装的高度仍保持在400px,但从较低的位置开始,因此延伸到包装的范围之外。

答案 3 :(得分:0)

要避免列表溢出容器,您需要做的就是在容器类上设置overflow:hidden

$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
$(".row-list").append("<p>World</p>");
.container
{
  height:20em;
  width:20em;
  overflow:hidden;
}

.col
{
  height:100%;
  float:left;
}

.row
{
  height:3em;
  clear:both;
  overflow:hidden;
}

.row-list
{
  clear:both;
  height:calc(100% - 3em);
  overflow-y:auto;
}

.green
{
  background:green;
}

.blue
{
  background:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
	<div class="col green">
		<div class="row">
			<h1>Hello</h1>
		</div>
		<div class="row-list">
			
		</div>
	</div>
	<div class="col blue">
		<div class="row">
			<h1>Hello</h1>
		</div>
		<div class="row">
			<p>World</p>
		</div>
	</div>
</div>

答案 4 :(得分:0)

&#13;
&#13;
#!/bin/bash

read -ra flds <<< '|| x ||| + ||'

# for each substring in string
for c in "${flds[@]}"
    do
        # compute string length
        len=${#c}
        # if the first char in c is a | then the corresponding length is the number, append it to a string
        if [[ "${c:0:1}" == "|" ]]; then str=$str"$len"
        # check for + and * and append them to the string
        elif [ "${c:0:1}" == "+" ]; then str=$str"+"
        elif [ "${c:0:1}" == "x" ]; then str=$str"*" 
        fi
    done
#evaluate the string via bc
echo "$str"|bc
&#13;
*,
*:before,
*:after {
  box-sizing: inherit;
}
html {
  box-sizing: border-box;
}
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}


.Main {
  height: 100%;
  display: flex;
}


.Aside {
  width: 200px; /* Any size */
  height: 100%;
  display: flex;
  flex-flow: column nowrap;
  background: #02c39a; /* For demo */
}

.Aside__header {
  height: 120px; /* Any size */
  background: rgba(0,0,0,.2); /* For demo */
  overflow-y: hidden;
}

.Aside__content {
  flex: 1;
  background: rgba(255,255,255,.2); /* For demo */
  overflow-y: auto;
}


.Section {
  flex: 1;
  height: 100%;
  display: flex;
  flex-flow: column nowrap;
  background: #f0f3bd; /* For demo */
}

.Section__header {
  height: 120px; /* Any size */
  background: rgba(0,0,0,.2);
  overflow-y: hidden;
}

.Section__content {
  flex: 1;
  background: rgba(255,255,255,.2); /* For demo */
  overflow-y: auto;
}
&#13;
&#13;
&#13;