使 overflow-y 显示在 <ul> 边框内

Make overflow-y show inside <ul> borders

标题说明了一切。有没有办法制作一个下拉导航栏,它将使用 <ul>s,然后,在悬停其中一个主要 <li>s 时,它会显示一个 <ul>,它总是有 scroll-bar(overflow-y),它在所说的 <ul> 边界内?

你是对的。这确实可以通过组合 max-heightoverflow-y: scroll 来实现,请参阅添加的示例。

body {
  font: bold 1em sans-serif;
  color: white;
}
.menu {
  position: relative;
  margin: 0;
  padding: 0;
  list-style: none;
}
.menu li {
  position: relative;
  float: left;
  background: tomato;
  padding: 1em;
}
.menu li ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: purple;
  margin: 0;
  padding: 1em;
  max-height: 200px;
  overflow-y: scroll;
}
.menu li:hover ul {
  display: block;
}
.menu li ul li {
  display: block;
  white-space: nowrap;
  background: purple;
}
<ul class="menu">
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
      <li>Item 4</li>
      <li>Item 5</li>
      <li>Item 6</li>
      <li>Item 7</li>
      <li>Item 8</li>
      <li>Item 9</li>
      <li>Item 10</li>
      <li>Item 11</li>
      <li>Item 12</li>
      <li>Item 13</li>
      <li>Item 14</li>
      <li>Item 15</li>
    </ul>
  </li>
  <li>Item 4</li>
</ul>