CSS webkit scrollbar show/hide

后端 未结 5 954
萌比男神i
萌比男神i 2021-01-31 21:47

I\'m using -webkit-scrollbar and what I want to happen is the scrollbar hidden on page load, and it stays hidden until you hover over the container div it is attached to. When y

相关标签:
5条回答
  • 2021-01-31 22:28

    I seem to have got through the auto hide thing in css. I somehow did it on my app, and was searching how I got it. Here it is, a modification to the existing fiddle by @tim

    http://jsfiddle.net/4RSbp/165/

    This does the trick:

    body {overflow-y:hidden;}
    body:hover {overflow-y:scroll;}
    
    0 讨论(0)
  • 2021-01-31 22:31

    I ended up going with the slimscroll javascript plugin. It would be cool to have an all-css solution, but this plugin is done very well, and allows the focus-shown/hidden idea.

    http://rocha.la/jQuery-slimScroll

    0 讨论(0)
  • 2021-01-31 22:37

    You can use simple CSS to achieve this.

    Eg. if you have a div #content-wrapperthat scrolls with background-color: rgb(250, 249, 244);

    #content-wrapper::-webkit-scrollbar-thumb {
      background-color: rgb(250, 249, 244); /* Matches the background color of content-wrapper */
    }
    
    #content-wrapper:hover::-webkit-scrollbar-thumb {
      background-color: gray;
    }
    

    F.Y.I. You could set the thumb's opacity to zero (instead of matching the background color), but the opacity seems to then apply to other scrollbars on the page as well.

    P.S. This assumes that you're ::-webkit-scrollbar-track's background color also matches the #content-wrapper's background color.

    0 讨论(0)
  • 2021-01-31 22:44

    see this working demo: http://jsfiddle.net/trpeters1/4RSbp/3/ which was derived from here:

    http://css-tricks.com/examples/WebKitScrollbars/

    0 讨论(0)
  • 2021-01-31 22:52

    Hiding the scrollthumb in webkit is non-intuitive! My page needed to hide all default browser scroll features in order to implement our own 'infinite scroll' effects. The only thing that was hard was the webkit "thumb" overlay, which only shows up while the screen is in motion (like scrolling with the mousewheel).

    In order to hide this webkit scrollthumb we had to apply some styles to "all" scrollthumbs, and then apply the hiding effects to my specific thumbs (we have to do this programmatically because we're not sure if the content is long enough to do our custom scroll effects until the page has loaded).

    These are the styles we used:

    ::-webkit-scrollbar { /* required, although an apparent no-op */
        color: inherit;
    }
    ::-webkit-scrollbar-thumb { /* leave most bars alone */
        background-color: grey;
    }
    #customScrollDiv::-webkit-scrollbar-thumb { /* this is the one we care about */
        background-color: grey;
    }
    .hideThumb::-webkit-scrollbar-thumb { /* we apply the style to actually hide it*/
        display: none; 
    }       
    .hideThumb { /* required, although an apparent no-op */
        background-color: white;
    }
    

    then, when i determine that i want to programmatically hide that thumbHandle i can do it with jquery: $('#customScrollDiv').toggleClass('hideThumb');

    The tricky part is that you need a lot of "defaulting" of CSS styles that you normally got out of the box, but once you start specifying even one of these webkit styles above then you need THEM ALL or they won't be applied.

    0 讨论(0)
提交回复
热议问题