/** * jquery.dlmenu.js v1.0.1 * http://www.codrops.com * * Licensed under the MIT license. * http://www.opensource.org/licenses/mit-license.php * * Copyright 2013, Codrops * http://www.codrops.com */;( function( $, window, undefined ) {'use strict';// globalvar Modernizr = window.Modernizr, $body = $( 'body' );$.DLMenu = function( options, element ) {this.$el = $( element );this._init( options );};// the options$.DLMenu.defaults = {// classes for the animation effectsanimationClasses : { classin : 'dl-animate-in-1', classout : 'dl-animate-out-1' },// callback: click a link that has a sub menu// el is the link element (li); name is the level nameonLevelClick : function( el, name ) { return false; },// callback: click a link that does not have a sub menu// el is the link element (li); ev is the event objonLinkClick : function( el, ev ) { return false; }};$.DLMenu.prototype = {_init : function( options ) {// optionsthis.options = $.extend( true, {}, $.DLMenu.defaults, options );// cache some elements and initialize some variablesthis._config();var animEndEventNames = {'WebkitAnimation' : 'webkitAnimationEnd','OAnimation' : 'oAnimationEnd','msAnimation' : 'MSAnimationEnd','animation' : 'animationend'},transEndEventNames = {'WebkitTransition' : 'webkitTransitionEnd','MozTransition' : 'transitionend','OTransition' : 'oTransitionEnd','msTransition' : 'MSTransitionEnd','transition' : 'transitionend'};// animation end event namethis.animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ] '.dlmenu';// transition end event namethis.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ] '.dlmenu',// support for css animations and css transitionsthis.supportAnimations = Modernizr.cssanimations,this.supportTransitions = Modernizr.csstransitions;this._initEvents();},_config : function() {this.open = false;this.$trigger = this.$el.children( '.dl-trigger' );this.$menu = this.$el.children( 'ul.dl-menu' );this.$menuitems = this.$menu.find( 'li:not(.dl-back)' );this.$el.find( 'ul.dl-submenu' ).prepend( '<li class="dl-back"><a href="#">back</a></li>' );this.$back = this.$menu.find( 'li.dl-back' );},_initEvents : function() {var self = this;this.$trigger.on( 'click.dlmenu', function() {if( self.open ) {self._closeMenu();} else {self._openMenu();}return false;} );this.$menuitems.on( 'click.dlmenu', function( event ) {event.stopPropagation();var $item = $(this),$submenu = $item.children( 'ul.dl-submenu' );if( $submenu.length > 0 ) {var $flyin = $submenu.clone().css( 'opacity', 0 ).insertAfter( self.$menu ),onAnimationEndFn = function() {self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classout ).addClass( 'dl-subview' );$item.addClass( 'dl-subviewopen' ).parents( '.dl-subviewopen:first' ).removeClass( 'dl-subviewopen' ).addClass( 'dl-subview' );$flyin.remove();};setTimeout( function() {$flyin.addClass( self.options.animationClasses.classin );self.$menu.addClass( self.options.animationClasses.classout );if( self.supportAnimations ) {self.$menu.on( self.animEndEventName, onAnimationEndFn );}else {onAnimationEndFn.call();}self.options.onLevelClick( $item, $item.children( 'a:first' ).text() );} );return false;}else {self.options.onLinkClick( $item, event );}} );this.$back.on( 'click.dlmenu', function( event ) {var $this = $( this ),$submenu = $this.parents( 'ul.dl-submenu:first' ),$item = $submenu.parent(),$flyin = $submenu.clone().insertAfter( self.$menu );var onAnimationEndFn = function() {self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classin );$flyin.remove();};setTimeout( function() {$flyin.addClass( self.options.animationClasses.classout );self.$menu.addClass( self.options.animationClasses.classin );if( self.supportAnimations ) {self.$menu.on( self.animEndEventName, onAnimationEndFn );}else {onAnimationEndFn.call();}$item.removeClass( 'dl-subviewopen' );var $subview = $this.parents( '.dl-subview:first' );if( $subview.is( 'li' ) ) {$subview.addClass( 'dl-subviewopen' );}$subview.removeClass( 'dl-subview' );} );return false;} );},closeMenu : function() {if( this.open ) {this._closeMenu();}},_closeMenu : function() {var self = this,onTransitionEndFn = function() {self.$menu.off( self.transEndEventName );self._resetMenu();};this.$menu.removeClass( 'dl-menuopen' );this.$menu.addClass( 'dl-menu-toggle' );this.$trigger.removeClass( 'dl-active' );if( this.supportTransitions ) {this.$menu.on( this.transEndEventName, onTransitionEndFn );}else {onTransitionEndFn.call();}this.open = false;},openMenu : function() {if( !this.open ) {this._openMenu();}},_openMenu : function() {var self = this;// clicking somewhere else makes the menu close$body.off( 'click' ).on( 'click.dlmenu', function() {self._closeMenu() ;} );this.$menu.addClass( 'dl-menuopen dl-menu-toggle' ).on( this.transEndEventName, function() {$( this ).removeClass( 'dl-menu-toggle' );} );this.$trigger.addClass( 'dl-active' );this.open = true;},// resets the menu to its original state (first level of options)_resetMenu : function() {this.$menu.removeClass( 'dl-subview' );this.$menuitems.removeClass( 'dl-subview dl-subviewopen' );}};var logError = function( message ) {if ( window.console ) {window.console.error( message );}};$.fn.dlmenu = function( options ) {if ( typeof options === 'string' ) {var args = Array.prototype.slice.call( arguments, 1 );this.each(function() {var instance = $.data( this, 'dlmenu' );if ( !instance ) {logError( "cannot call methods on dlmenu prior to initialization; " "attempted to call method '" options "'" );return;}if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {logError( "no such method '" options "' for dlmenu instance" );return;}instance[ options ].apply( instance, args );});} else {this.each(function() {var instance = $.data( this, 'dlmenu' );if ( instance ) {instance._init();}else {instance = $.data( this, 'dlmenu', new $.DLMenu( options, this ) );}});}return this;};} )( jQuery, window );
下载Jquery 页面切换效果实例源码(很炫)用户还喜欢
- 18480 文章数
- 500万+ 热度
作者专栏
编辑推荐
- 淡抹u2引擎,修复内容较多,物有所值
- 界域传说·经典巨作=传世单机(一键安装)
- 丸子版本(175个传世版本大集合)
- GS版本:神话公益服务端+客户端
- 图片放大工具(放大图片不模糊)
- 剪映无限制VIP版
- 传奇世界客户端下载器,史上最全传世客户端
- 传世GS20220920商业引擎注册+登录配置器 解压密码是1
- U2官方排行榜游戏网关 支持元神,支持传家宝
- GS开战传世客户端+服务端
- (淡漠夕阳)u2引擎合区工具
- 传世GS引擎消除“你的游戏客户端版本号过旧,请及时更新”提示
- 传世一机多区双线路配置器--免密码版本
- 传世凤凰登陆器劫持修复软件
- SQLite3 for Navicat
- 传奇世界npc对话框编辑工具
- 传世GS落霞铭文服务器端
- gs_20210409引擎包+注册机(无限制)
- 传奇世界NPC对话封包查看器[支持时长版和极速版]
- 彩虹引擎传世脚本编辑工具1.7版来了,支持函数脚本翻译
评论