使 overflow-y 显示在 <ul> 边框内
Make overflow-y show inside <ul> borders
标题说明了一切。有没有办法制作一个下拉导航栏,它将使用 <ul>
s,然后,在悬停其中一个主要 <li>
s 时,它会显示一个 <ul>
,它总是有 scroll-bar(overflow-y),它在所说的 <ul>
边界内?
你是对的。这确实可以通过组合 max-height
和 overflow-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>
标题说明了一切。有没有办法制作一个下拉导航栏,它将使用 <ul>
s,然后,在悬停其中一个主要 <li>
s 时,它会显示一个 <ul>
,它总是有 scroll-bar(overflow-y),它在所说的 <ul>
边界内?
你是对的。这确实可以通过组合 max-height
和 overflow-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>