Я пробовал этот метод ( их скрипку ), чтобы включить прокручиваемое меню с помощью Bootstrap, но при таком подходе прокручиваемое меню расширяет свой контейнер - скрипку - не прокручиваемое меню, правильно, не делает этого.
Как я могу это исправить? Также приветствуются предложения по другим подходам, совместимым с Bootstrap!
Для справки, вот HTML из скрипки первого метода:
<ul class="nav">
<li class="dropdown">
<a class="icon-key icon-white" data-toggle="dropdown" href="#" style=
"font-weight: bold"></a>
<div class="dropdown-menu" style="margin-left: 2em">
<ul class="dropdown-menu">
<!-- static non-scrollable menu header 1 -->
</ul>
</div>
<div class="dropdown-menu" style="margin-left: 2em">
<ul class="dropdown-menu">
<li class="disabled">
<a href="#"><i class="icon-group"></i> <b>My Groups</b></a>
</li>
<li>
<div class="dropdown-menu scroll-menu scroll-menu-2x"
style="margin-left: 2em">
<ul class="dropdown-menu scroll-menu scroll-menu-2x">
<li>
<a href="#">User</a>
</li>
<li>
<a href="#">Administrators</a>
</li>
<li>
<a href="#">Some Other Group</a>
</li>
</ul>
</div>
<ul class="dropdown-menu scroll-menu scroll-menu-2x">
<!-- Additional menu items omitted for brevity -->
</ul>
</li>
</ul>
</div>
<div class="dropdown-menu" style="margin-left: 2em">
<ul class="dropdown-menu">
<!-- static non-scrollable menu header 2 -->
</ul>
</div>
<div class="dropdown-menu" style="margin-left: 2em">
<ul class="dropdown-menu">
<li class="disabled">
<a href="#"><i class="icon-user"></i> <b>My Roles</b></a>
</li>
<li>
<div class="dropdown-menu scroll-menu scroll-menu-2x"
style="margin-left: 2em">
<ul class="dropdown-menu scroll-menu scroll-menu-2x">
<li>
<a href="#">Core Users</a>
</li>
<li>
<a href="#">Admin</a>
</li>
<li>
<a href="#">Some Other Role</a>
</li>
</ul>
</div>
<ul class="dropdown-menu scroll-menu scroll-menu-2x">
<!-- Additional menu items omitted for brevity -->
</ul>
</li>
</ul>
</div>
<div class="dropdown-menu" style="margin-left: 2em">
<ul class="dropdown-menu">
<!-- static non-scrollable menu footer -->
</ul>
</div>
<ul class="dropdown-menu">
<li class="disabled">
<a href="#"><i class="icon-chevron-up pull-left"></i> <i class="icon-chevron-up pull-right"></i></a>
</li>
</ul>
</li>
</ul>
И CSS:
/* So we wont impact the original bootstrap menu or it's pseudo call-out
arrow the menu is wrapped in a sub dropdown-menu with a chained scroll-menu */
ul.scroll-menu {
position:relative;
display:inherit!important;
overflow-x:auto;
-webkit-overflow-scrolling:touch;
-moz-overflow-scrolling:touch;
-ms-overflow-scrolling:touch;
-o-overflow-scrolling:touch;
overflow-scrolling:touch;
top:0!important;
left:0!important;
width:100%;
height:auto;
max-height:500px;
margin:0;
border-left:none;
border-right:none;
-webkit-border-radius:0!important;
-moz-border-radius:0!important;
-ms-border-radius:0!important;
-o-border-radius:0!important;
border-radius:0!important;
-webkit-box-shadow:none;
-moz-box-shadow:none;
-ms-box-shadow:none;
-o-box-shadow:none;
box-shadow:none
}
css
twitter-bootstrap
scrollable
Элиашдезр
источник
источник
Ответы:
Я думаю, вы можете упростить это, просто добавив необходимые свойства CSS в свой специальный класс прокручиваемого меню.
CSS:
.scrollable-menu { height: auto; max-height: 200px; overflow-x: hidden; }
HTML
<ul class="dropdown-menu scrollable-menu" role="menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Action</a></li> .. <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> </ul>
Рабочий пример: https://www.bootply.com/86116
Бутстрап 4
Другой пример для Bootstrap 4 с использованием flexbox
источник
.pre-scrollable
должен быть принятым ансеромВы можете использовать встроенный CSS-класс с возможностью предварительной прокрутки в начальной загрузке 3 внутри элемента span в раскрывающемся списке, и он будет работать немедленно, без реализации пользовательского CSS.
<ul class="dropdown-menu pre-scrollable"> <li>item 1 </li> <li>item 2 </li> </ul>
источник
Для CSS я обнаружил, что максимальная высота 180 лучше для мобильного телефона в альбомной ориентации 320 при отображении Chrome в браузере.
.scrollable-menu { height: auto; max-height: 180px; overflow-x: hidden; }
Кроме того, чтобы добавить видимые полосы прокрутки, этот CSS должен помочь:
.scrollable-menu::-webkit-scrollbar { -webkit-appearance: none; width: 4px; } .scrollable-menu::-webkit-scrollbar-thumb { border-radius: 3px; background-color: lightgray; -webkit-box-shadow: 0 0 1px rgba(255,255,255,.75); }
Изменения отражены здесь: https://www.bootply.com/BhkCKFEELL
источник
Делайте все, что указано в теге UL
<ul class="dropdown-menu scrollable-menu" role="menu" style="height: auto;max-height: 200px; overflow-x: hidden;"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Action</a></li> .. <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> </ul>
источник
Я просто исправляю эту проблему в своем проекте-
CSS код
.scroll-menu{ min-width: 220px; max-height: 90vh; overflow: auto; }
HTML код
<ul class="dropdown-menu scroll-menu" role="menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Action</a></li> .. <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> </ul>
источник
Надеюсь, этот код работает хорошо, попробуйте это.
добавить файл css.
.scrollbar { height: auto; max-height: 180px; overflow-x: hidden; }
HTML код:
<div class="col-sm-2 scrollable-menu" role="menu"> <div> <ul> <li><a class="active" href="#home">Tutorials</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> </ul> </div> </div>
источник