随窗体滑动的小插件sticky源码


Posted in Javascript onJune 21, 2013
     $.fn.stickyfloat = function(options, lockBottom) {
                var $obj                 = this;
                var parentPaddingTop     = parseInt($obj.parent().css('padding-top'));
                var startOffset         = $obj.parent().offset().top;
                var opts                 = $.extend({ startOffset: startOffset, offsetY: parentPaddingTop, duration: 200, lockBottom:true }, options);                $obj.css({ position: 'absolute' });
                if(opts.lockBottom){
                    var bottomPos = $obj.parent().height() - $obj.height() + parentPaddingTop;
                    if( bottomPos < 0 )
                        bottomPos = 0;
                }
                $(window).scroll(function () {
                    $obj.stop();

                    var pastStartOffset            = $(document).scrollTop() > opts.startOffset;   
                    var objFartherThanTopPos    = $obj.offset().top > startOffset;   
                    var objBiggerThanWindow     = $obj.outerHeight() < $(window).height();   
                    if( (pastStartOffset || objFartherThanTopPos) && objBiggerThanWindow ){
                        var newpos = ($(document).scrollTop() -startOffset + opts.offsetY );
                        if ( newpos > bottomPos )
                            newpos = bottomPos;
                        if ( $(document).scrollTop() < opts.startOffset )
                            newpos = parentPaddingTop;
                        $obj.animate({ top: newpos }, opts.duration );
                    }
                });
            };

使用方法很简单:只要在页面中引入该插件,然后用选择器调用:
$('#menu15').stickyfloat({ duration: 500 });
$('#menu14').stickyfloat({ duration: 500 });
$('#menu13').stickyfloat({ duration: 500 });
$('#menu12').stickyfloat({ duration: 500 });

后面的duration参数表示滑动的速度,越大越慢。

Javascript 相关文章推荐
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
javascript 中关于array的常用方法详解
May 05 Javascript
Vue编写多地区选择组件
Aug 21 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
微信小程序使用字体图标的方法
May 23 Javascript
vue的路由映射问题及解决方案
Oct 14 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
jquery中文乱码的多种解决方法
Jun 21 #Javascript
js单向链表的具体实现实例
Jun 21 #Javascript
javascript setTimeout和setInterval计时的区别详解
Jun 21 #Javascript
js简易namespace管理器 实例代码
Jun 21 #Javascript
JavaScript中的this关键字介绍与使用实例
Jun 21 #Javascript
js验证模型自我实现的具体方法
Jun 21 #Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 #Javascript
You might like
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
python访问纯真IP数据库的代码
2011/05/19 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
几款好用的python工具库(小结)
2020/10/20 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
开放系统互连参考模型
2016/06/29 面试题
婚礼主持结束词
2014/03/13 职场文书
抵押贷款承诺书
2014/05/30 职场文书
历史学专业求职信
2014/06/19 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
请客吃饭开场白
2015/06/01 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
Flask response响应的具体使用
2021/07/15 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技