Template:Team:HokkaidoU Japan/JS
From 2014.igem.org
(Difference between revisions)
Line 11: | Line 11: | ||
/* | /* | ||
- | + | jQuery MegaMenu Plugin | |
- | + | Author: GeekTantra | |
- | + | Author URI: http://www.geektantra.com | |
- | + | */ | |
- | + | var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1; | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | jQuery.fn.megamenu = function(options) { | |
- | + | options = jQuery.extend({ | |
- | + | activate_action: "mouseover", | |
- | + | deactivate_action: "mouseleave", | |
- | + | show_method: "slideDown", | |
- | + | hide_method: "slideUp", | |
- | + | justify: "left", | |
- | + | enable_js_shadow: true, | |
- | + | shadow_size: 3, | |
- | + | mm_timeout: 250 | |
- | + | }, options); | |
- | + | var $megamenu_object = this; | |
- | + | if( options.activate_action == "click" ) options.mm_timeout = 0; | |
- | + | $megamenu_object.children("li").each(function(){ | |
- | + | jQuery(this).addClass("mm-item"); | |
- | + | jQuery(".mm-item").css({ 'float': options.justify }); | |
- | })( | + | |
+ | jQuery(this).find("div:first").addClass("mm-item-content"); | ||
+ | jQuery(this).find("a:first").addClass("mm-item-link"); | ||
+ | var $mm_item_content = jQuery(this).find(".mm-item-content"); | ||
+ | var $mm_item_link = jQuery(this).find(".mm-item-link"); | ||
+ | $mm_item_content.hide(); | ||
+ | |||
+ | jQuery(document).bind("click", function(){ | ||
+ | jQuery(".mm-item-content").hide(); | ||
+ | jQuery(".mm-item-link").removeClass("mm-item-link-hover"); | ||
+ | }); | ||
+ | jQuery(this).bind("click", function(e){ | ||
+ | e.stopPropagation(); | ||
+ | }); | ||
+ | $mm_item_content.wrapInner('<div class="mm-content-base"></div>'); | ||
+ | if(options.enable_js_shadow == true) { | ||
+ | $mm_item_content.append('<div class="mm-js-shadow"></div>'); | ||
+ | } | ||
+ | var $mm_timer = 0; | ||
+ | // Activation Method Starts | ||
+ | jQuery(this).bind(options.activate_action, function(e){ | ||
+ | e.stopPropagation(); | ||
+ | var mm_item_link_obj = jQuery(this).find("a.mm-item-link"); | ||
+ | var mm_item_content_obj = jQuery(this).find("div.mm-item-content"); | ||
+ | clearTimeout($mm_timer); | ||
+ | $mm_timer = setTimeout(function(){ //Emulate HoverIntent | ||
+ | mm_item_link_obj.addClass("mm-item-link-hover"); | ||
+ | mm_item_content_obj.css({ | ||
+ | 'top': ($mm_item_link.offset().top + $mm_item_link.outerHeight()) - 1 +"px", | ||
+ | 'left': ($mm_item_link.offset().left) - 5 + 'px' | ||
+ | }) | ||
+ | |||
+ | if(options.justify == "left"){ | ||
+ | var mm_object_right_end = $megamenu_object.offset().left + $megamenu_object.outerWidth(); | ||
+ | // Coordinates of the right end of the megamenu object | ||
+ | var mm_content_right_end = $mm_item_link.offset().left + $mm_item_content.outerWidth() - 5 ; | ||
+ | // Coordinates of the right end of the megamenu content | ||
+ | if( mm_content_right_end >= mm_object_right_end ) { // Menu content exceeding the outer box | ||
+ | mm_item_content_obj.css({ | ||
+ | 'left': ($mm_item_link.offset().left - (mm_content_right_end - mm_object_right_end)) - 2 + 'px' | ||
+ | }); // Limit megamenu inside the outer box | ||
+ | } | ||
+ | } else if( options.justify == "right" ) { | ||
+ | var mm_object_left_end = $megamenu_object.offset().left; | ||
+ | // Coordinates of the left end of the megamenu object | ||
+ | var mm_content_left_end = $mm_item_link.offset().left - mm_item_content_obj.outerWidth() + | ||
+ | $mm_item_link.outerWidth() + 5; | ||
+ | // Coordinates of the left end of the megamenu content | ||
+ | if( mm_content_left_end <= mm_object_left_end ) { // Menu content exceeding the outer box | ||
+ | mm_item_content_obj.css({ | ||
+ | 'left': mm_object_left_end + 2 + 'px' | ||
+ | }); // Limit megamenu inside the outer box | ||
+ | } else { | ||
+ | mm_item_content_obj.css({ | ||
+ | 'left': mm_content_left_end + 'px' | ||
+ | }); // Limit megamenu inside the outer box | ||
+ | } | ||
+ | } | ||
+ | if(options.enable_js_shadow == true) { | ||
+ | mm_item_content_obj.find(".mm-js-shadow").height( mm_item_content_obj.height() ); | ||
+ | mm_item_content_obj.find(".mm-js-shadow").width( mm_item_content_obj.width() ); | ||
+ | mm_item_content_obj.find(".mm-js-shadow").css({ | ||
+ | 'top': (options.shadow_size) + (isIE6 ? 2 : 0) + "px", | ||
+ | 'left': (options.shadow_size) + (isIE6 ? 2 : 0) + "px", | ||
+ | 'opacity': 0.5 | ||
+ | }); | ||
+ | } | ||
+ | switch(options.show_method) { | ||
+ | case "simple": | ||
+ | mm_item_content_obj.show(); | ||
+ | break; | ||
+ | case "slideDown": | ||
+ | mm_item_content_obj.height("auto"); | ||
+ | mm_item_content_obj.slideDown('fast'); | ||
+ | break; | ||
+ | case "fadeIn": | ||
+ | mm_item_content_obj.fadeTo('fast', 1); | ||
+ | break; | ||
+ | default: | ||
+ | mm_item_content_obj.each( options.show_method ); | ||
+ | break; | ||
+ | } | ||
+ | }, options.mm_timeout); | ||
+ | }); | ||
+ | // Activation Method Ends | ||
+ | // Deactivation Method Starts | ||
+ | jQuery(this).bind(options.deactivate_action, function(e){ | ||
+ | e.stopPropagation(); | ||
+ | clearTimeout($mm_timer); | ||
+ | var mm_item_link_obj = jQuery(this).find("a.mm-item-link"); | ||
+ | var mm_item_content_obj = jQuery(this).find("div.mm-item-content"); | ||
+ | // mm_item_content_obj.stop(); | ||
+ | switch(options.hide_method) { | ||
+ | case "simple": | ||
+ | mm_item_content_obj.hide(); | ||
+ | mm_item_link_obj.removeClass("mm-item-link-hover"); | ||
+ | break; | ||
+ | case "slideUp": | ||
+ | mm_item_content_obj.slideUp( 'fast', function() { | ||
+ | mm_item_link_obj.removeClass("mm-item-link-hover"); | ||
+ | }); | ||
+ | break; | ||
+ | case "fadeOut": | ||
+ | mm_item_content_obj.fadeOut( 'fast', function() { | ||
+ | mm_item_link_obj.removeClass("mm-item-link-hover"); | ||
+ | }); | ||
+ | break; | ||
+ | default: | ||
+ | mm_item_content_obj.each( options.hide_method ); | ||
+ | mm_item_link_obj.removeClass("mm-item-link-hover"); | ||
+ | break; | ||
+ | } | ||
+ | if(mm_item_content_obj.length < 1) mm_item_link_obj.removeClass("mm-item-link-hover"); | ||
+ | }); | ||
+ | // Deactivation Method Ends | ||
+ | }); | ||
+ | this.find(">li:last").after('<li class="clear-fix"></li>'); | ||
+ | this.show(); | ||
+ | }; | ||
Line 259: | Line 166: | ||
$(document).ready(function(){ | $(document).ready(function(){ | ||
- | $(". | + | $(".mega-menu").megamenu( |
".mega-menu",{ | ".mega-menu",{ | ||
width: "100%" // | width: "100%" // |
Revision as of 07:34, 28 August 2014