How do I add a scroll to this drop down menu? Currently, the menu overflows when it is in drop down mode and some of the menu items can't be seen. It is meant to scroll when the menu exceeds the screen height to reveal all the menu items. I used overflow:scroll on the li element but it did not create the desired result. What's the best way to achieve a scroll on the menu. Thanks.
This is the HTML
<html>
<head>
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<header class="site-header menu-text">
<a href="#" id='drop'><i class="fa fa-bars"></i></a>
<nav>
<ul>
<li>Menu 1</li>
<li>Menu 2</li>
<li>Menu 3</li>
<li>Menu 4</li>
<li>Menu 5</li>
<li>Menu 6</li>
<li>Menu 7</li>
<li>Menu 8</li>
<li>Menu 9</li>
<li>Menu 10</li>
</ul>
</nav>
</header>
<div class="container"></div>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js'></script>
<script src="script.js"></script>
</body>
</html>
This is the script.js
(function($){
var dropper = $("a#drop"),
menu = $("nav>ul"),
subMenu = $("nav>ul>li.submenu"),
link = menu.find("li");
dropper.on("click" , function(e){
$( this ).toggleClass( 'active' );
menu.slideToggle();
e.preventDefault();
});
$(window).resize(function(){
var winWidth = $(this).width();
if(winWidth > 920 && menu.is(":hidden")){
menu.removeAttr("style");
}
});
link.on("click" , function(){
var winWidth = $(window).width();
if(winWidth < 920 && !$(this).hasClass("submenu")){
menu.slideToggle();
}
});
subMenu.hover(function(){
$(this).children("ul").stop().slideDown();
},function(){
$(this).children("ul").stop().slideUp();
});
})(jQuery);
And this is the style.css
.site-header {
width: 100%;
height: 75px;
position: fixed;
top: 0;
z-index: 12;
overflow: visible;
background-color: purple;
}
.site-header a#drop {
background-color: white;
padding: 20px 15px;
margin: 10px 15px;
float: right;
display: block;
}
@media screen and (min-width: 920px) {
.site-header a#drop {
display: none;
}
}
.site-header nav {
float: right;
margin-bottom: 100px;
width: 100%;
margin-top: 5px;
background-color: green;
opacity:0.7;
}
@media screen and (min-width: 920px) {
.site-header nav {
float: none;
margin-top: 0px;
}
}
.site-header nav ul {
display: none;
padding: 0;
margin-top: 20px;
overflow: scroll;
}
@media screen and (min-width: 920px) {
.site-header nav ul {
float: right;
display: block;
margin-top: 0px;
overflow: hidden;
}
}
.site-header nav ul li {
position: relative;
z-index: 2;
float: left;
display: block;
text-align: left;
text-indent: 10px;
width: 100%;
margin-left: 0;
height: auto;
padding: 12px 0 12px;
color:white;
font-weight:bold;
}
@media screen and (min-width: 920px) {
.site-header nav ul li {
display: inline-block;
margin: 0;
text-align: center;
padding: 0 8px;
height: 76px;
width: auto;
text-indent: 0;
}
}
.container{
background-image:repeating-linear-gradient(#f8ea00, #f8ea00 30px, #005bf7 10px, #005bf7 70px);
height:600px;
}
Via Active questions tagged javascript - Stack Overflow https://ift.tt/SHV0ArW
Comments
Post a Comment