【问题标题】:How do I make a sidenav scrollbar?如何制作 sidenav 滚动条?
【发布时间】:2025-12-12 01:35:01
【问题描述】:

我有一个使用<ul> 标签的sidenav。如何让sidenav自动显示滚动条?

Example 我的 sidenav 的样子

html:

<section class="sticky-top">
    <ul class="nav flex-column bg-secondary p-3 rounded-right col-md-3 col-lg-2 text-center min-vh-100">
        <li class="nav-item">
            <a class="nav-link" href="#">Test 1</a>
        </li>
        <li class="nav-item">
            <a class="nav-link " href="#">Test 2 </a>
        </li>
        <li class="nav-item">
            <a class="nav-link " href="#">Test 3</a>
        </li>
    </ul>
</section>

css:

.nav {
    position: absolute;
    z-index : 3;
}


.navbar {
    z-index         : 3;
    background-color: var(--white);
}

【问题讨论】:

    标签: html css bootstrap-4


    【解决方案1】:

    当我通过将&lt;ul&gt; 元素包含在&lt;div&gt; 元素中来应用sidebar 样式时,我得到了想要的结果。悬停侧边栏(发生悬停事件时)会打开滚动条。

    <div class="sidebar">
        <ul class="nav flex-column bg-secondary p-3 rounded-right col-md-3 col-lg-2 text-center min-vh-100">
            <!-- sidebar items -->
        </ul>
    </div>
    
    .sidebar{
        position: fixed;
        top: 0;
        bottom: 0;
        background: #6C757D;
        width: 140px;
    }
    
    .sidebar:hover{
        overflow-y: auto
    }
    

    可执行的 sn-p 在下面可用。 .sidebar:hover 块中定义的overflow-y: auto; 样式注释行已自动显示滚动条;将overflow-y: auto; 样式添加到.sidebar 块。

    .sidebar {
      position: fixed;
      top: 0;
      bottom: 0;
      background: #6C757D;
      width: 140px;
      overflow-y: auto;
    }
    .sidebar:hover {
    /* overflow-y: auto */
    }
    
    .nav {
      position: absolute;
      z-index: 3;
    }
    .navbar {
      z-index: 3;
      background-color: var(--white);
    }
    .nav-link {
      color: #ffffff;
      font-size: 12px;
    
      &:hover {
        transition: color 0.4s ease-in;
        background: rgba(255, 255, 255, 0.04);
        color: #ffffff;
      }
      
      &.active {
        background-color: #007bff;
      }
    }
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    </head>
    <body>
      <section class="sticky-top">
        <div class="sidebar">
          <ul class="nav flex-column bg-secondary p-3 rounded-right col-md-3 col-lg-2 text-center min-vh-100">
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
            <li class="nav-item"><a class="nav-link" href="#">Test</a></li>
          </ul>
        </div>
      </section>
    </body>

    【讨论】: