我有三个div。我需要修复标题和left_side divs以及滚动内容div。我一直在寻找解决方案,并找到了溢出和位置的东西。但我无法核心使用它。我怎样才能做到这一点?我会感谢各种答案。
HTML
------
<div id="header">
</div>
<div id="left_side">
</div>
<div id="content">
</div
CSS
-----
body {
width: 100%;
height: auto;
padding: 0;
margin: 0px auto;
font-family: Calibri, Georgia, Ubuntu-C;
font-size: 16px;
margin-bottom: 20PX
}
#header{
width: 100%;
height: 139px;
background-image: url('images/Header_grey.gif');
}
#left_side{
width: 210px;
height: 700px;
background-image: url('images/Left_side.gif');
background-repeat:repeat-y;
overflow:hidden;
position:absolute;
font-size: 16px;
}
#content{
height: auto;
padding: 20px;
margin-left: 230px;
margin-right: 20px;
padding-bottom: 30px
}
答案 0 :(得分:18)
overflow: auto;
在需要时添加滚动
#header{
width: 100%;
height: 139px;
background-image: url('images/Header_grey.gif');
overflow: hidden; //code added to prevent scroll
}
#left_side{
width: 210px;
height: 700px;
background-image: url('images/Left_side.gif');
background-repeat:repeat-y;
overflow:hidden; //code added to prevent scroll
position:absolute;
font-size: 16px;
}
#content{
height: auto;
padding: 20px;
margin-left: 230px;
margin-right: 20px;
padding-bottom: 30px;
overflow: auto; //code added
}
答案 1 :(得分:10)
overflow:auto
那里你的代码中的错误::你想要一个div的滚动条,但你声明div高度为auto
当高度为自动时你不能要求滚动条,要有滚动条你需要为该div设置一个固定的高度,当内容高度大于div高度时它会自动引入滚动条
注意:所以css中的更改将是
#content{
height: 300px;/*..very important if you want scroll bar...*/
overfow:auto; /*..will introduce scroll bar when needed..*/
padding: 20px;
margin-left: 230px;
margin-right: 20px;
padding-bottom: 30px
}
示例:: FIDDLE
答案 2 :(得分:1)
如果您希望标题和左侧在滚动时保持其位置,则必须使用position:fixed
答案 3 :(得分:1)
你可以使用固定的位置。 http://jsfiddle.net/Nrs2u/1/
#header {
position: fixed;
z-index: 2;
left: 0%;
top: 0%;
width: 100%;
height: 10%;
background-color: purple;
}
#side {
position: fixed;
z-index: 2;
left: 0%;
top: 10%;
width: 10%;
height: 90%;
background-color: red;
}
#body {
position: absolute;
left: 10%;
top: 10%;
width: 90%;
height: 300%;
background-color: orange;
}
答案 4 :(得分:0)
#left_side{
...
overflow:auto;
}
还设置padding-right
以在div的内容和滚动条之间创建空格
答案 5 :(得分:0)
作为一项学习练习,我决定使用CSS3 Flexbox更新答案。我还尝试更紧密地匹配jstorm31试图创建的布局。
Ritabrata的回答是正确的:如果你想让一个特定元素有滚动条,你需要将它的高度(和/或宽度)设置为固定大小并溢出到自动。
代码也可以在这里找到:Plunker
<强>的style.css 强>
#header{
overflow: hidden;
background-color: #880016;
height: 50px;
border-bottom: 4px solid black;
padding: 10px;
font-size: 20px;
}
#side_and_content {
display: flex;
}
#left_side{
flex: 1;
overflow:hidden;
background-color: #ED1B24;
height: 200px;
border-right: 2px solid black;
padding: 10px;
}
#content{
flex: 5;
overflow: auto;
background-color: #FF7F26;
height: 200px;
border-left: 2px solid black;
padding: 10px;
}
<强>的index.html 强>
<div id="header">
header header header header header header
</div>
<div id="side_and_content">
<div id="left_side">
left side left side left side left side left side
</div>
<div id="content">
CSS3 Flexbox Concepts:
Flexbox consists of flex containers and flex items.
A flex container is declared by setting the display property of an element to either flex
(rendered as a block) or inline-flex (rendered as inline).
Inside a flex container there is one or more flex items.
Note: Everything outside a flex container and inside a flex item is rendered as usual.
Flexbox defines how flex items are laid out inside a flex container.
Flex items are positioned inside a flex container along a flex line.
By default there is only one flex line per flex container.<br>
It is also possible to change the direction of the flex line.
If we set the direction property to rtl (right-to-left), the text is drawn right to left, and also the flex line changes direction, which will change the page layout
</div>
</div>
答案 6 :(得分:0)
position: sticky
上的元素(在滚动时应保持原状)在类似情况下对我有用。
https://www.w3schools.com/css/tryit.asp?filename=trycss_position_sticky
position: sticky;
top: 0px;