使用css溢出自动隐藏垂直滚动条

时间:2013-04-10 05:35:59

标签: css

我遇到了使用css overflow来自动隐藏垂直滚动条的问题。我在一些文章中读到使用css hover伪类来实现这种行为,好的是我在某种程度上是成功的。

我使用'scroll'和'auto'作为overflow-y属性。使用滚动它就像一个魅力,但是“滚动”问题就是即使不需要显示滚动条,它也是可见的,我觉得'auto'非常好。

但是再次使用'auto'问题是右侧有一个16px(我假设)的差距。可能是滚动条的宽度。我想要全宽。我用背景来解释我的问题。

这是小提琴。 http://jsfiddle.net/9scJE/

div.autoscroll {
    height: 200px;
    width: 400px;
    overflow: hidden;
    border: 1px solid #444;
    margin: 3em;
}

div.autoscroll:hover {
    /* overflow-y: scroll; */
    overflow-y: auto;
}

感谢任何帮助。

4 个答案:

答案 0 :(得分:18)

这实际上对我来说似乎是一个浏览器错误,但如果你在悬停时添加padding-right: 1px,它似乎就像你想要的那样。

div.myautoscroll:hover {
     overflow: auto;
     padding-right: 1px;
}

http://jsfiddle.net/ExplosionPIlls/9scJE/1/

答案 1 :(得分:2)

您应该使用填充补偿滚动条。

div.autoscroll:hover {
    /* overflow-y: scroll; */
    overflow-y: scroll;
padding-right: 16px;

}

然而,最好使用javascript进行此操作,因为滚动条宽度在浏览器之间可能略有不同。我成功地使用了这个解决方案:How to calculate the width of the scroll bar?

答案 2 :(得分:1)

::-webkit-scrollbar{
     opacity:0;
     background: transparent;
}
::-webkit-scrollbar:hover{
     opacity: 1;
}
.container:hover::-webkit-scrollbar-thumb{
     background: red;
}

答案 3 :(得分:0)

将鼠标悬停在div上时,您可以添加width: 100%;

 div.myautoscroll:hover {
     overflow: auto;
     width: 100%;
 }

Working Demo