随窗体滑动的小插件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 相关文章推荐
jQuery 学习第五课 Ajax 使用说明
May 17 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
Nov 07 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
原生js实现轮播图
Feb 27 Javascript
js实现简单的获取验证码按钮效果
Mar 03 Javascript
简单实现js上传文件功能
Aug 21 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
js实现tab栏切换效果
Aug 02 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
实用函数9
2007/11/08 PHP
php连接数据库代码应用分析
2011/05/29 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
显示、隐藏密码
2006/07/01 Javascript
学习jquery之一
2007/04/27 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
javascript实现点击小图显示大图
2020/11/29 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
python如何安装下载后的模块
2020/07/03 Python
python实现按日期归档文件
2021/01/30 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
建筑安全责任书范本
2014/07/24 职场文书
医生见习报告范文
2014/11/03 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
在人间读书笔记
2015/06/30 职场文书
护理心得体会范文
2016/01/22 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
Python装饰器的练习题
2021/11/23 Python