html - CSS - 垂直 dorp-down 菜单在移动设备上不起作用
问题描述
我正在尝试创建一个两层垂直下拉菜单。每个主菜单分别有 20 个项目(子菜单)。用 chrome 的切换设备工具栏查看是正常的。但是,它不适用于移动设备,超过一页的项目是不可见的。有没有办法解决这个问题?非常感谢。
$(function(){
$('.btn-primary ').click(function(){
$('ul').hide('fast');
$('ul',this).show('fast');
});
});
li{list-style: none;}
.btn-primary{
display:flex;
flex-direction: column;
color:white;
font-size:22px;
width:150px;
background-color: #353535;
position: relative;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active{
border-style:none;
background-color: #233858;
}
.submenu{
display:flex;
flex-direction: column;
position:absolute;
top:0;
left:80%;
width:150px;
display: none;
}
.btn{
margin-bottom:10px;
height:36px;
background-color:#233858;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<button class='btn-primary'>menu 1
<ul class="submenu">
<li class="btn">menu 1-01</li>
<li class="btn">menu 1-02</li>
<li class="btn">menu 1-03</li>
<li class="btn">menu 1-04</li>
<li class="btn">menu 1-05</li>
<li class="btn">menu 1-06</li>
<li class="btn">menu 1-07</li>
<li class="btn">menu 1-08</li>
<li class="btn">menu 1-09</li>
<li class="btn">menu 1-10</li>
<li class="btn">menu 1-11</li>
<li class="btn">menu 1-12</li>
<li class="btn">menu 1-13</li>
<li class="btn">menu 1-14</li>
<li class="btn">menu 1-15</li>
<li class="btn">menu 1-16</li>
<li class="btn">menu 1-17</li>
<li class="btn">menu 1-18</li>
<li class="btn">menu 1-19</li>
<li class="btn">menu 1-20</li>
</ul>
</button>
<button class='btn-primary'>menu 2
<ul class="submenu">
<li class="btn">menu 2-01</li>
<li class="btn">menu 2-02</li>
<li class="btn">menu 2-03</li>
<li class="btn">menu 2-04</li>
<li class="btn">menu 2-05</li>
<li class="btn">menu 2-06</li>
<li class="btn">menu 2-07</li>
<li class="btn">menu 2-08</li>
<li class="btn">menu 2-09</li>
<li class="btn">menu 2-10</li>
<li class="btn">menu 2-11</li>
<li class="btn">menu 2-12</li>
<li class="btn">menu 2-13</li>
<li class="btn">menu 2-14</li>
<li class="btn">menu 2-15</li>
<li class="btn">menu 2-16</li>
<li class="btn">menu 2-17</li>
<li class="btn">menu 2-18</li>
<li class="btn">menu 2-19</li>
<li class="btn">menu 2-20</li>
</ul>
</button>
<button class='btn-primary'>menu 3
<ul class="submenu">
<li class="btn">menu 3-01</li>
<li class="btn">menu 3-02</li>
<li class="btn">menu 3-03</li>
<li class="btn">menu 3-04</li>
<li class="btn">menu 3-05</li>
<li class="btn">menu 3-06</li>
<li class="btn">menu 3-07</li>
<li class="btn">menu 3-08</li>
<li class="btn">menu 3-09</li>
<li class="btn">menu 3-10</li>
<li class="btn">menu 3-11</li>
<li class="btn">menu 3-12</li>
<li class="btn">menu 3-13</li>
<li class="btn">menu 3-14</li>
<li class="btn">menu 3-15</li>
<li class="btn">menu 3-16</li>
<li class="btn">menu 3-17</li>
<li class="btn">menu 3-18</li>
<li class="btn">menu 3-19</li>
<li class="btn">menu 3-20</li>
</ul>
</button>
</div>
解决方案
ul
通过设置max-height
andoverflow
来添加一个 css toauto
永远不会超过max-width
,如果存在更多元素,它将自动添加滚动条。所以你不必担心滚动。
$(function() {
$('.btn-primary ').click(function() {
$('ul').hide('fast');
$('ul', this).show('fast');
});
});
li {
list-style: none;
}
.btn-primary {
display: flex;
flex-direction: column;
color: white;
font-size: 22px;
width: 150px;
background-color: #353535;
position: relative;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
border-style: none;
background-color: #233858;
}
.submenu {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 80%;
width: 150px;
display: none;
}
.btn {
margin-bottom: 10px;
height: 36px;
background-color: #233858;
}
ul{
max-height:250px;
overflow:auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<button class='btn-primary'>menu 1
<ul class="submenu">
<li class="btn">menu 1-01</li>
<li class="btn">menu 1-02</li>
<li class="btn">menu 1-03</li>
<li class="btn">menu 1-04</li>
<li class="btn">menu 1-05</li>
<li class="btn">menu 1-06</li>
<li class="btn">menu 1-07</li>
<li class="btn">menu 1-08</li>
<li class="btn">menu 1-09</li>
<li class="btn">menu 1-10</li>
<li class="btn">menu 1-11</li>
<li class="btn">menu 1-12</li>
<li class="btn">menu 1-13</li>
<li class="btn">menu 1-14</li>
<li class="btn">menu 1-15</li>
<li class="btn">menu 1-16</li>
<li class="btn">menu 1-17</li>
<li class="btn">menu 1-18</li>
<li class="btn">menu 1-19</li>
<li class="btn">menu 1-20</li>
</ul>
</button>
<button class='btn-primary'>menu 2
<ul class="submenu">
<li class="btn">menu 2-01</li>
<li class="btn">menu 2-02</li>
<li class="btn">menu 2-03</li>
<li class="btn">menu 2-04</li>
<li class="btn">menu 2-05</li>
<li class="btn">menu 2-06</li>
<li class="btn">menu 2-07</li>
<li class="btn">menu 2-08</li>
<li class="btn">menu 2-09</li>
<li class="btn">menu 2-10</li>
<li class="btn">menu 2-11</li>
<li class="btn">menu 2-12</li>
<li class="btn">menu 2-13</li>
<li class="btn">menu 2-14</li>
<li class="btn">menu 2-15</li>
<li class="btn">menu 2-16</li>
<li class="btn">menu 2-17</li>
<li class="btn">menu 2-18</li>
<li class="btn">menu 2-19</li>
<li class="btn">menu 2-20</li>
</ul>
</button>
<button class='btn-primary'>menu 3
<ul class="submenu">
<li class="btn">menu 3-01</li>
<li class="btn">menu 3-02</li>
<li class="btn">menu 3-03</li>
<li class="btn">menu 3-04</li>
<li class="btn">menu 3-05</li>
<li class="btn">menu 3-06</li>
<li class="btn">menu 3-07</li>
<li class="btn">menu 3-08</li>
<li class="btn">menu 3-09</li>
<li class="btn">menu 3-10</li>
<li class="btn">menu 3-11</li>
<li class="btn">menu 3-12</li>
<li class="btn">menu 3-13</li>
<li class="btn">menu 3-14</li>
<li class="btn">menu 3-15</li>
<li class="btn">menu 3-16</li>
<li class="btn">menu 3-17</li>
<li class="btn">menu 3-18</li>
<li class="btn">menu 3-19</li>
<li class="btn">menu 3-20</li>
</ul>
</button>
</div>