分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

jQuery scrollFix滚动定位插件

发布时间:2023-09-06 01:43责任编辑:郭大石关键词:jQuery

【插件功能】

当用户向上或向下滚动页面到一定位置时,目标元素开始固定定位(position:fixed),当回滚到原位置时目标元素恢复到原状态,可以定制触发滚动相对屏幕位置和触发滚动方向,兼容IE6

【插件参数】

$(".target_element").scrollFix( [ "top" | "bottom" | length(可以为负,表示相对bottom), [ "top" | "bottom" ] ]);

第一个参数: 可选,默认为"top",当目标元素到了屏幕相对的位置时开始触发固定,可以填一个数值,如100,-200 ,负值表示相对于屏幕下方

第一个参数: 可选,默认为"top",表示触发固定的滚动方向,"top"表示从上向下滚动时触发,"bottom"表示从下向上滚动时触发

【下载插件】

下载插件(download)

【代码示例】

$("#a").scrollFix(-200);
滚动到距离下面200px时开始固定,默认从上到下触发
 
$("#b").scrollFix(200,"bottom");
滚动到距离上面200px时开始固定,指定"bottom"从下到上触发
 
$("#c").scrollFix("top","top");
滚动到距离上面0时开始固定,指定"top"从上到下触发
 
$("#d").scrollFix("bottom","top");
滚动到距离下面0时开始固定,指定"bottom"从下到上触发
 
 
;(function($) { ?jQuery.fn.scrollFix = function(height, dir) { ???height = height || 0; ???height = height == "top" ? 0 : height; ???return this.each(function() { ?????if (height == "bottom") { ???????height = document.documentElement.clientHeight - this.scrollHeight; ?????} else if (height < 0) { ???????height = document.documentElement.clientHeight - this.scrollHeight + height; ?????} ?????var that = $(this), ???????oldHeight = false, ???????p, r, l = that.offset().left; ?????dir = dir == "bottom" ? dir : "top"; //默认滚动方向向下 ?????if (window.XMLHttpRequest) { //非ie6用fixed ???????function getHeight() { //>=0表示上面的滚动高度大于等于目标高度 ?????????return (document.documentElement.scrollTop || document.body.scrollTop) + height - that.offset().top; ???????} ???????$(window).scroll(function() { ?????????if (oldHeight === false) { ???????????if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) { ?????????????oldHeight = that.offset().top - height; ?????????????that.css({ ???????????????position: "fixed", ???????????????top: height, ???????????????left: l ?????????????}); ???????????} ?????????} else { ???????????if (dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) { ?????????????that.css({ ???????????????position: "static" ?????????????}); ?????????????oldHeight = false; ???????????} else if (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight) { ?????????????that.css({ ???????????????position: "static" ?????????????}); ?????????????oldHeight = false; ???????????} ?????????} ???????}); ?????} else { //for ie6 ???????$(window).scroll(function() { ?????????if (oldHeight === false) { //恢复前只执行一次,减少reflow ???????????if ((getHeight() >= 0 && dir == "top") || (getHeight() <= 0 && dir == "bottom")) { ?????????????oldHeight = that.offset().top - height; ?????????????r = document.createElement("span"); ?????????????p = that[0].parentNode; ?????????????p.replaceChild(r, that[0]); ?????????????document.body.appendChild(that[0]); ?????????????that[0].style.position = "absolute"; ???????????} ?????????} else if ((dir == "top" && (document.documentElement.scrollTop || document.body.scrollTop) < oldHeight) || (dir == "bottom" && (document.documentElement.scrollTop || document.body.scrollTop) > oldHeight)) { //结束 ???????????that[0].style.position = "static"; ???????????p.replaceChild(that[0], r); ???????????r = null; ???????????oldHeight = false; ?????????} else { //滚动 ???????????that.css({ ?????????????left: l, ?????????????top: height + document.documentElement.scrollTop ???????????}) ?????????} ???????}); ?????} ???}); ?};})(jQuery);

原文地址:https://www.cnblogs.com/Hodor/archive/2012/07/25/2607831.html

jQuery scrollFix滚动定位插件

原文地址:https://www.cnblogs.com/hedianzhan/p/8459911.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved