简体   繁体   中英

Responsive menu using jquery

I'm working on the responsive menu. when we resize the screen menu items will be appear down is working fine but the problem is onClick on red button is working fine. When I refresh the page all items visible. I want before it will be hidden on click the red button then the menu will appear. It is coming like this i want to hide overflow menu在此处输入图片说明

onClick working fine. Before the click, it will be hidden在此处输入图片说明

I have taken inspiration from here

 var h = 30; var val = 0; $('.click').click(function() { if ($('ul li.menu-item').hasClass('show')) { $('ul li.menu-item').removeClass('show'); $('ul li.menu-item').removeClass('drop') return; } val = 0; $('ul li.menu-item').each(function() { var of = $(this).offset().top - $('ul li.menu-item').offset().top; if ( of > 20) { $(this).addClass('drop').css('opcaity', '1');; $(this).css('top', 'calc(100% + ' + val + 'px)'); val += h; } $('ul li.menu-item').addClass('show'); }) })
 .primary-menu { position: relative; width: 64%; margin: 0 auto; max-height: 50px; overflow: hiddin; background: #ccc; } ul.menu-item { box-sizing: border-box; position: relative; } .menu-item { display: inline-block; text-decoration: none; color: #000000; font-size: 20px; padding: 10px; text-transform: capitalize; list-style: none; background-color: #88c0c7; position: relative; } li.drop { display: block; position: absolute; right: 0; } ul.sub-menu { flex-direction: column; position: absolute; top: 52px; display: none; background-color: #000; color: #fff; } .menu-item:hover ul.sub-menu { display: block; } .drop ul.sub-menu { position: absolute; top: 36%; left: -72%; } .click { position: absolute; opacity: 0; background: red; right: -5%; top: -2%; width: 40px; height: 40px; margin: 4px; z-index: 2; } .hide { opacity: 0; } /* Small Desktop Resolution and iPad Landscape ======================================================================== */ @media only screen and (min-width: 960px) and (max-width: 1024px) { .click { opacity: 1; right: 2%; } } /* iPad Portrait ======================================================================== */ @media only screen and (min-width: 768px) and (max-width: 959px) { .click { opacity: 1; right: 2%; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="primary-menu"> <ul> <li class="menu-item">Home <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">About us</li> <li class="menu-item">Service <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">product</li> <li class="menu-item">packages</li> <li class="menu-item">contact</li> <li class="menu-item">menu7</li> <li class="menu-item">menu8</li> <li class="menu-item">menu9</li> <li class="menu-item">menu10</li> <li class="menu-item">menu11 <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">menu12</li> <li class="menu-item">menu13</li> <li class="menu-item">menu14 <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> </ul> <div class="click"></div> </div>

hope this will be useful.

 var h = 30; var val = 0; $('ul li.menu-item').each(function() { var of = $(this).offset().top - $('ul li.menu-item').offset().top; if ( of > 20) { $(this).addClass('hide'); } }) $('.click').click(function() { if ($('ul li.menu-item').hasClass('hide')) { $('ul li.menu-item').removeClass('hide'); } $('ul li.menu-item').each(function() { if($(this).hasClass('drop')){ $(this).addClass('hide'); } }); if ($('ul li.menu-item').hasClass('show')) { $('ul li.menu-item').removeClass('show'); $('ul li.menu-item').removeClass('drop') return; } val = 0; $('ul li.menu-item').each(function() { var of = $(this).offset().top - $('ul li.menu-item').offset().top; if ( of > 20) { $(this).addClass('drop').css('opcaity', '1');; $(this).css('top', 'calc(100% + ' + val + 'px)'); val += h; } $('ul li.menu-item').addClass('show'); }) })
 .primary-menu { position: relative; width: 100%; margin: 0 auto; max-height: 50px; overflow: hiddin; background: #ccc; } ul.menu-item { box-sizing: border-box; position: relative; } .menu-item { display: inline-block; text-decoration: none; color: #000000; font-size: 20px; padding: 10px; text-transform: capitalize; list-style: none; background-color: #88c0c7; position: relative; } li.drop { display: block; position: absolute; right: 0; } ul.sub-menu { flex-direction: column; position: absolute; top: 52px; display: none; background-color: #000; color: #fff; } .menu-item:hover ul.sub-menu { display: block; } .drop ul.sub-menu { position: absolute; top: 36%; left: -72%; } .click { position: absolute; opacity: 0; background: red; right: -5%; top: -2%; width: 40px; height: 40px; margin: 4px; z-index: 2; } .hide { opacity: 0; } /* Small Desktop Resolution and iPad Landscape ======================================================================== */ @media only screen and (min-width: 960px) and (max-width: 1024px) { .click { opacity: 1; right: 2%; } } /* iPad Portrait ======================================================================== */ @media only screen and (min-width: 768px) and (max-width: 959px) { .click { opacity: 1; right: 2%; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="primary-menu"> <ul> <li class="menu-item">Home <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">About us</li> <li class="menu-item">Service <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">product</li> <li class="menu-item">packages</li> <li class="menu-item">contact</li> <li class="menu-item">menu7</li> <li class="menu-item">menu8</li> <li class="menu-item">menu9</li> <li class="menu-item">menu10</li> <li class="menu-item">menu11 <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> <li class="menu-item">menu12</li> <li class="menu-item">menu13</li> <li class="menu-item">menu14 <ul class="sub-menu"> <li class="sub-item">menu1</li> <li class="sub-item">menu2</li> <li class="sub-item">menu3</li> </ul> </li> </ul> <div class="click"></div> </div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM