div位置绝对... overflow-y:auto然后垂直滚动条覆盖了一些内容

时间:2013-06-20 16:06:40

标签: javascript html css

我有一个绝对位置的div

在其他一些div中。

http://jsfiddle.net/d8GYk/

 <div style="position: absolute; 
display: block; 
outline: 0px;
 margin: 0px; 
 padding: 0px; 
 top: 0; 
 text-align: left;
 font-size: 11px; 
 font-family: arial; 
 cursor: default; 
 border: 1px solid rgb(170, 170, 170); 
 overflow-x: hidden; white-space: pre; 
 overflow-y: auto; 
 left: 0px; 
 height: 132px;"><div>a                             a END</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div><div>ab</div></div>

正如您所看到的,第一个div并不完全可见 那是因为垂直滚动条覆盖了它。

如果我设置overflow-y:滚动。问题消失了。

但是我不想这样做,因为这个div是自动生成的(通过javascript),在很多情况下我不需要垂直滚动条(例如,如果列表有一个或两个或三个项目)

有人可以建议如何解决这个问题吗?

4 个答案:

答案 0 :(得分:0)

杜你真的需要“白空间:预先;”? 如果你删除这部分,我认为它会起作用

答案 1 :(得分:0)

将此添加到css

{padding-right: 20px;}

原因:滚动的边框覆盖了div文本。你需要给它一些空间。

http://jsfiddle.net/d8GYk/3/

答案 2 :(得分:0)

对容器内的每个div使用margin-right:

.container div{margin:0 20px 0 0}

http://jsfiddle.net/Karzin/d8GYk/2/

答案 3 :(得分:0)

如果滚动条可能显示或未显示,请使用带有可能滚动或不滚动的包装的内容容器。 HTML:

<div class="container">
   <div class="entries">
       <div>ab                          a</div>
       <div>ab</div>
       ...
   </div>
</div>

和css:

.container {
    height: 100px;
    overflow-y: auto;
}

.entries div {
    white-space: pre;
}

示威者:http://jsfiddle.net/gFrbM

也就是说,如果您绝对需要pre空格处理,并且您的线条很长,那么您需要打开两个方向的滚动,而不仅仅是y,这是一个很好地表明你试图呈现内容的方式并不是一个很好的方法。用户体验的用户体验很差,并且根据您在这些条目div中列出的内容,将有更好的方式来显示这些数据。