jQuery floating menu
A simple navigation menu that “follows” page scrolling and expands on mouse over, made with css and jquery.
download Get all files related to post
The code
The css
body{margin:0px; padding:0px;} #fl_menu{position:absolute; top:50px; left:0px; z-index:9999; width:150px; height:50px;} #fl_menu .label{padding-left:20px; line-height:50px; font-family:"Arial Black", Arial, Helvetica, sans-serif; font-size:14px; font-weight:bold; background:#000; color:#fff; letter-spacing:7px;} #fl_menu .menu{display:none;} #fl_menu .menu .menu_item{display:block; background:#000; color:#bbb; border-top:1px solid #333; padding:10px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12px; text-decoration:none;} #fl_menu .menu a.menu_item:hover{background:#333; color:#fff;}
The jQuery library and plugins inside head tag
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script> <script src="jquery.easing.1.3.js" type="text/javascript"></script>
The floating menu markup
<div id="fl_menu"> <div class="label">MENU</div> <div class="menu"> <a href="#" class="menu_item">An menu item</a> <a href="#" class="menu_item">A long menu item</a> <a href="#" class="menu_item">Item 3</a> <a href="#" class="menu_item">Another one</a> <a href="#" class="menu_item">A really, really long menu item</a> <a href="#" class="menu_item">Menu item 6</a> <a href="#" class="menu_item">And one more</a> <a href="#" class="menu_item">A tiny</a> </div> </div>
The floating menu script is inserted in the end of the document, right before the closing body tag
<script> //config $float_speed=1500; //milliseconds $float_easing="easeOutQuint"; $menu_fade_speed=500; //milliseconds $closed_menu_opacity=0.75; //cache vars $fl_menu=$("#fl_menu"); $fl_menu_menu=$("#fl_menu .menu"); $fl_menu_label=$("#fl_menu .label"); $(window).load(function() { menuPosition=$('#fl_menu').position().top; FloatMenu(); $fl_menu.hover( function(){ //mouse over $fl_menu_label.fadeTo($menu_fade_speed, 1); $fl_menu_menu.fadeIn($menu_fade_speed); }, function(){ //mouse out $fl_menu_label.fadeTo($menu_fade_speed, $closed_menu_opacity); $fl_menu_menu.fadeOut($menu_fade_speed); } ); }); $(window).scroll(function () { FloatMenu(); }); function FloatMenu(){ var scrollAmount=$(document).scrollTop(); var newPosition=menuPosition+scrollAmount; if($(window).height()<$fl_menu.height()+$fl_menu_menu.height()){ $fl_menu.css("top",menuPosition); } else { $fl_menu.stop().animate({top: newPosition}, $float_speed, $float_easing); } } </script>
Under //config
comment you can set some configuration options for the menu.
Enjoy 🙂
License
This work is released under the MIT License.
You are free to use, study, improve and modify it wherever and however you like.
https://opensource.org/licenses/MIT
Donating helps greatly in developing and updating free software and running this blog 🙂
Hi,
Your floating menu does exactly what I would like but is not working on my page
I’ve just copied your code, not personalysed the menu entries yet
https://www.rudyv.be/Aquarium/RVRT/RVRTtest.php
Can you have a look ?
Thanks
Your demo works fine on your site but not on mine
https://www.rudyv.be/Aquarium/RVRT/jquery-floating-menu.html
I embedded an image in this floating div. How can I add a CLOSE button to this div so that user can close if not interested??
Love it! Thank you. Nice clean code and easy to implement on any website. 🙂
hi
it’s really helpful
thanks
Hi
I know this post is old, but I hope someone can help. The menu works great on desktops, but it does not close one mobile devices. Does anyone know what needs to be changed/added to get the menu to close once a user wants to close the menu (either by clicking somewhere else on the screen or by a time out?
thanks
Is it possible to create drop down menus within the floating menu? Would it just consist of a nav tag w/ multiple list tags?
Hey mate thanks for this wonderful floating menu script. I tried embedding a live chat inside your floating menu div and it worked perfect for me. Thanks again