我无法像我想要的那样设计布局样式。我有一个内容区#content
(示例图片中可以看到的灰色),里面有一个黄色元素。这个div是position:static;height:100%;
。现在我还有一个#left-panel
div,position:fixed;height:100%;
。问题是,如果内容区域没有足够的空间,则会出现水平滚动条。这将与固定div重叠。对我而言,这完全符合逻辑,但我不知道如何解决这个问题。 #content
- 元素的滚动条应该在窗口的整个宽度上可见。因此,如果面板处于可见范围内,仅减小内容的宽度对我来说不是一个解决方案。
整个css:
#content{
width:100%;
height:100%;
background:grey;
}
#left-panel{
position:fixed;
top:0;
left:0;
width:300px;
height:100%;
overflow-y:auto;
}
有人可以帮我用纯CSS解决这个问题吗?
答案 0 :(得分:5)
你的包装元素是position:fixed;
我认为你在谈论左边有导航面板的叠加层。好吧,我有类似的情况,并发现,如果您的父元素也是position:fixed;
,则无法使用position:fixed;
。这将与父包装器(叠加层)的滚动条重叠。
因此您必须使用position:absolute;
或使用此开源插件从元素中删除滚动条的宽度/高度:
<强> Scrollbar Fixer 强>
答案 1 :(得分:0)
首先,您不必添加“position:static;”样式进入你的div,因为它默认是静态的。有两种方法可以解决您的问题:
添加“position:relative;”进入#content选择器并在HTML中的#left-panel之后声明#content。
<div id="left-panel"></div>
<div id="content"></div>
#content{
position: relative;
width:100%;
height:100%;
background:grey;
}
Codepen:http://codepen.io/anon/pen/yoHxl
或者将“position:relative; z-index:1”(#content的z-index应该是#left-panel的较高者)添加到#content selector中。
<div id="content"></div>
<div id="left-panel"></div>
#content{
position: relative;
width:100%;
height:100%;
background:grey;
z-index: 1;
}
Codepen:http://codepen.io/anon/pen/HgwDx
最佳, 马立克
答案 2 :(得分:0)
也许你的问题出现在这个代码中
<div style="width:110%;border-right:10px solid black;height:200px;background:yellow;"></div>
删除width:110%;
,它应该是好的。
我想我之前误解了问题是什么。
因为在您的情况下,您使用position: fixed;
#wrapper
和#left-panel
,并且都使用stlye left: 0
,他们的位置将在视口左侧相互重叠,您基本上需要将left
的{{1}}放置在与#wrapper
不同的位置,因此您需要将其添加到#left-panel
#wrapper
并删除
left:200px; /* the width of #left-panel (if left panel has border, add it to this too )*/
right:0;
以确保它符合您的要求,尝试将width:100%;
内div
的样式更改为#content
并添加width:200%;
击>
margin:20px;
相互重叠的原因是因为你在scrollbar
使用position: fixed
,因此不会在{#wrapper
中创建scrollbar
1}},然后在body
中添加overflow:auto
,导致为#wrapper
创建scrollbar
,而不是#wrapper
,因此您需要将body
的{{1}}更改为此
CSS
我没有包含高度,因为对于#wrapper
,#wrapper{
background:gray;
}
基于其中的子项,因此您无法看到灰色背景,除了您添加一些{{1对它来说。