随窗体滑动的小插件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 相关文章推荐
点击隐藏页面左栏或右栏实现js代码
Apr 01 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
JS动态修改iframe高度和宽度的方法
Apr 01 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
May 17 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
Javascript自定义事件详解
Jan 13 Javascript
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
浅谈vue首屏加载优化
Jun 28 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
jquery插件懒加载的示例
Oct 24 jQuery
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 表单数据的获取代码
2009/03/10 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
PHP内核探索:变量概述
2014/01/30 PHP
php中错误处理操作实例分析
2019/08/23 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
数据库基础的一些面试题
2012/02/25 面试题
机械专业毕业生自荐信
2013/11/02 职场文书
外语学院毕业生的自我鉴定
2013/11/28 职场文书
高二地理教学反思
2014/01/24 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
倡议书范文大全
2015/04/28 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
寒假生活随笔
2015/08/15 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers