学习--jquery 自定义插件 页面按照模块 垂直滚动
来源:互联网 发布:淘宝卖家入驻的流程 编辑:程序博客网 时间:2024/06/05 15:20
(function ($) { /** * 编写鼠标滚动事件 */ function scroll_scroll(event) { event = event || window.event; // 浏览器兼容(是否是IE ) if ($.browser.msie) { // IE 7 || IE 8 if (($.browser.version == 7.0) || ($.browser.version == 8.0)) { // 取消事件的默认动作 这个很重要 event.returnValue = false; } else if ($.browser.version == 9.0) { // IE 9 // 取消事件的默认动作 这个很重要 event.preventDefault(); } } else { // 兼容 Opera/Chrome/Safari/Firefox // 取消事件的默认动作 这个很重要 event.preventDefault(); } // 判断当前动画是否结束 if (!$.fn.my_scroll.defaults.isScrolling) { var modelIndex = $.fn.my_scroll.defaults.modelIndex; // 兼容 IE/Opera/Chrome/Safari if (event.wheelDelta) { switch (event.wheelDelta) { case 120: scroll_scrolling(scroll_up(modelIndex)); break; case -120: scroll_scrolling(scroll_down(modelIndex)); break; default: break; } } else if (event.detail) { // 兼容 firefox switch (event.detail) { case -3: scroll_scrolling(scroll_up(modelIndex)); break; case 3: scroll_scrolling(scroll_down(modelIndex)); break; default: break; } } } } /** * 向上滚动 计算index位置 * @param modelIndex */ function scroll_up(modelIndex) { if (modelIndex <= 0) { modelIndex = 0; } else { modelIndex--; } return modelIndex; } /** * 向下滚动 计算index位置 * @param modelIndex */ function scroll_down(modelIndex) { var modelLength = $.fn.my_scroll.defaults.obj.length - 1; if (modelIndex >= modelLength) { modelIndex = modelLength; } else { modelIndex++; } return modelIndex; } /** * 滚动到指定的模板位置 * @param modelIndex */ function scroll_scrolling(modelIndex) { // 标识动画开始 $.fn.my_scroll.defaults.isScrolling = true; // 取得所有模块对象 var poistionArry = $.fn.my_scroll.defaults.obj; // 当前模块对象的 位置 var num = $(poistionArry[modelIndex]).offset().top; $('html, body').stop().animate({'scrollTop': num - 90}, $.fn.my_scroll.defaults.scrollSpeed, function () { // 标识动画结束 $.fn.my_scroll.defaults.isScrolling = false; // 动画结束后重置当前index位置 $.fn.my_scroll.defaults.modelIndex = modelIndex; }); /** * 导航条动画效果 * @param modelIndex */ navigate_animate(modelIndex); } /** * 导航条 div 标签 * @param modelIndex */ function navigate_div() { var div = $('<div class="clx-swim-nav"></div>'); return div; } /** * 导航条 ul 标签 * @param modelIndex */ function navigate_ul() { var ul = $('<ul></ul>'); return ul; } /** * 导航条 li 标签 * @param modelIndex */ function navigate_li(text) { var li = $('<li></li>'); var li_b = $('<b></b>'); var li_a = $('<a href="javascript:;"></a>'); li_b.appendTo(li); li_a.appendTo(li); li_b.html(text); return li; } /** * 导航条动画效果 * @param modelIndex */ function navigate_animate(modelIndex) { // 当前 li标签 var curren_li = $.fn.my_scroll.defaults.navigate[modelIndex]; // 将 li 标签转为 jquery 对象 var li = $(curren_li); li.stop().animate({width: '19px'}, $.fn.my_scroll.defaults.scrollSpeed).css({background: '#56b39d'}) .siblings().animate({width: '10px'}, $.fn.my_scroll.defaults.scrollSpeed).css({background: '#A5A5A5'}); } $.fn.my_scroll = { /** * @param obj 一组模板 */ scroll: function (obj, options) { $.fn.my_scroll.defaults.obj = obj; $.extend($.fn.my_scroll.defaults, options); /** * 注册鼠标滚轮事件 兼容Firefox */ if (document.addEventListener) { document.addEventListener('DOMMouseScroll', scroll_scroll, false); } // 注册鼠标滚轮事件 兼容 IE/Opera/Chrome/Safari window.document.onmousewheel = scroll_scroll; }, /** * 创建右侧导航, 将导航加入到 $.fn.my_scroll 中 * @param obj 一组模块对象 */ rightNavigate: function () { var div = navigate_div().appendTo('body'); var ul = navigate_ul().appendTo(div); // 根据模块数量 动态创建相匹配的导航 $.each($.fn.my_scroll.defaults.obj, function (k, v) { var li = navigate_li($(v).attr('modelName')).appendTo(ul); li.click(function () { // 页面滚动效果 scroll_scrolling($(this).index()); }); }); // 取得导航条中的li标签 $.fn.my_scroll.defaults.navigate = $('body > div.clx-swim-nav > ul > li'); // 导航条默认第一个被选中 navigate_animate($.fn.my_scroll.defaults.modelIndex); } }; $.fn.my_scroll.defaults = { obj: {}, // 模块对象 navigate: {}, // 导航对象 modelIndex: 0, // 模板元素第几组 isScrolling: false, // 开关 (当前动画是否结束) scrollSpeed: 1000 };})(jQuery);
0 0
- 学习--jquery 自定义插件 页面按照模块 垂直滚动
- jquery插件 - 自定义滚动条插件
- 介绍一个垂直滚动的jQuery插件,vTicker
- 自己写一个jQuery垂直滚动条插件(panel)
- jquery实现页面无限滚动插件
- 自定义垂直滚动条
- jquery垂直公告滚动
- jQuery自定义滚动条样式插件mCustomScrollbar
- jQuery自定义内容滚动条插件
- jQuery自定义滚动条样式插件mCustomScrollbar
- jQuery自定义滚动条样式插件mCustomScrollbar
- jQuery自定义内容滚动条插件
- Jquery滚动插件–Xslider:支持水平滚动和垂直滚动的多种效果
- Jquery滚动插件–Xslider:支持水平滚动和垂直滚动的多种效果!
- jquery插件开发学习笔记(六)——页面平滑滚动
- jquery插件开发学习笔记(七)——页面平滑滚动改进
- JQuery插件之-----Datatables(二)jQuery-UI风格的垂直滚动条
- 自定义的垂直滚动条
- Webkit之绘制Button分析
- 从当前页面跳转到其他页面的某个地方
- SpringMVC_非注解(注解)的处理器映射器和适配器
- 斐波纳挈数列的三种求法(java实现)
- 混合开发activity和html之间相互跳转
- 学习--jquery 自定义插件 页面按照模块 垂直滚动
- share总结
- 微信多客服开发
- Webkit之App层的分析
- 微信多客服开发
- (一)Course Learning Objectives【The Arduino Platform and C Pro】
- 安装git
- Webkit之DOM加载&创建
- ios 相册 UINavigationController