在滚动条轨道悬停时显示滚动条

时间:2013-04-05 23:26:30

标签: javascript jquery css css3

我通过CSS使用自定义滚动条样式在webkit中实现自定义滚动条。如果其他浏览器已经实现了前缀或未加前缀的版本/版本,请告诉我。

但是,关于我的问题。有没有办法让滚动条显示在滚动条轨道的悬停上?

有点像Mac OS X Lion和Mountain Lion?

这是我自定义滚动条的CSS“

::-webkit-scrollbar {
    width: 12px;
}

/* Track */
::-webkit-scrollbar-track {
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 
    -webkit-border-radius: 10px;
    border-radius: 10px;
}

/* Handle */
::-webkit-scrollbar-thumb {
    -webkit-border-radius: 10px;
    border-radius: 10px;
    background: rgba(255,0,0,0.8); 
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); 
}

2 个答案:

答案 0 :(得分:1)

编辑:对于当前浏览器,此答案不再有效

使用overflow-y属性并使用body:hover伪类显示它是一件简单的事情。我还添加了一些在悬停时隐藏的填充,这样当滚动条显示为填充时,当隐藏滚动条占用该空间时,文本不会改变位置。
小提琴:http://jsfiddle.net/J4gc9/1
CSS:

::-webkit-scrollbar {
    width: 12px;
}
body{
    overflow-y:hidden;
    padding-right:12px;
}
body:hover{
    overflow-y:scroll;
    padding-right:0px;
}
/* Track */
::-webkit-scrollbar-track {
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 
    -webkit-border-radius: 10px;
    border-radius: 10px;
}

/* Handle */
::-webkit-scrollbar-thumb {
    -webkit-border-radius: 10px;
    border-radius: 10px;
    background: rgba(255,0,0,0.8); 
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); 
}

答案 1 :(得分:1)

这是一个jquery解决方案,因为你提到它需要它显示你何时悬停在它上面。 请检查此fiddle

var bodywidth = $('body').width();
var scrollwidth = 10;
$('body').mousemove(function(e){
    var x = e.pageX - this.offsetLeft;

    if(x>bodywidth-scrollwidth)
        $('body').addClass("auto");
    else
        $('body').removeClass("auto");
});

body
{
    margin:0;
    overflow:hidden;
}
.auto
{
    overflow:auto;
}