随窗体滑动的小插件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 相关文章推荐
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
JavaScript基于对象去除数组重复项的方法
Oct 09 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
Javascript实现异步编程的过程
Jun 18 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
php简单生成随机数的方法
2015/07/30 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
在python里从协程返回一个值的示例
2019/02/19 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
什么是python的自省
2020/06/21 Python
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
厂长助理岗位职责
2013/12/27 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
红旗渠导游词
2015/02/09 职场文书
初三英语教学反思
2016/02/15 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis
tree shaking对打包体积优化及作用
2022/07/07 Java/Android