Make scrollbars only visible when a Div is hovered over?

后端 未结 10 1931
庸人自扰
庸人自扰 2020-12-02 15:04

I am trying to figure out how to have a scrollable div that only shows its scrollbars when Hovered.

Example is Google Image search, in the image below you can see

相关标签:
10条回答
  • 2020-12-02 15:45

    This will help you to overcome overflow: overlay issues as well.

    .div{
          height: 300px;
          overflow: auto;
          visibility: hidden;
        }
    
    .div-content,
    .div:hover {
      visibility: visible;
    }
    
    0 讨论(0)
  • 2020-12-02 15:47

    Answer by @Calvin Froedge is the shortest answer but have an issue also mentioned by @kizu. Due to inconsistent width of the div the div will flick on hover. To solve this issue add minus margin to the right on hover

    #div { 
         overflow:hidden;
         height:whatever px; 
    }
    #div:hover { 
         overflow-y:scroll; 
         margin-right: -15px; // adjust according to scrollbar width  
    }
    
    0 讨论(0)
  • 2020-12-02 15:47
    .div::-webkit-scrollbar-thumb {
        background: transparent;
    }
    
    .div:hover::-webkit-scrollbar-thumb {
        background: red;
    }
    
    0 讨论(0)
  • 2020-12-02 15:51

    One trick for this, for webkit browsers, is to create an invisible scrollbar, and then make it appear on hover. This method does not affect the scrolling area width as the space needed for the scrollbar is already there.

    Something like this:

    body {
      height: 500px;
      &::-webkit-scrollbar {
        background-color: transparent;
        width: 10px;
      }
      &::-webkit-scrollbar-thumb {
        background-color: transparent;
      }
    }
    
    body:hover {
      &::-webkit-scrollbar-thumb {
        background-color: black;
      }
    }
    
    .full-width {
      width: 100%;
      background: blue;
      padding: 30px;
      color: white;
    }
    some content here
    
    <div class="full-width">does not change</div>

    0 讨论(0)
  • 2020-12-02 15:52

    I think something like

    $("#leftDiv").mouseover(function(){$(this).css("overflow","scroll");});
    $("#leftDiv").mouseout(function(){$(this).css("overflow","hidden");});
    
    0 讨论(0)
  • 2020-12-02 15:53

    div {
      height: 100px;
      width: 50%;
      margin: 0 auto;
      overflow: hidden;
    }
    
    div:hover {
      overflow-y: scroll;
    }
    <div>
      <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It
        has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
        publishing software like Aldus PageMaker including versions of Lorem Ipsum.
      </p>
    </div>

    Would something like that work?

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