使控件悬浮在页面上不随滚动条变化的JQUERY插件
实现HTML控件始终可以悬浮在页面上,当滚动条上下滚动超过荧屏时,控件显示在顶端,不会被隐藏。可以拖动控件,拖动后控件会一直悬停在当前位置,不会随滚动条变动。参考了网上写法,原创。
上代码:
//功能:实现HTML控件始终可以悬浮在页面上,当滚动条上下滚动超过荧屏时,控件显示在顶端,不会被隐藏 // 可以拖动控件。拖动后控件会一直悬停在当前位置,不会随滚动条变动。WUZHU //参数:top:初始状态时控件离顶端距离。 // left:初始状态时控件离左端距离。 // ismove:是否可拖动控件,默认为true。 //引用:需引用本插件文件,当然还有必须的JQUERY。 //例子: // $("#back").floatdiv({ // top:6, // left:250, // ismove: false // }); //备注:未全方面测试过。 (function ($) { var floatObj = {}; floatObj.x = 0; floatObj.y = 0; floatObj.move = false; var Method = { init: function (options) { return this.each(function () { var $this = $(this); var settings = $this.data("FloatDiv"); if (typeof settings === "undefined") { //默认配置 var defaults = { top: 800, left: 200, ismove: true }; settings = $.extend({}, defaults, options[0]); $this.data("FloatDiv", settings); } else { settings = $.extend({}, settings, options[0]); } $this.css({ ‘top‘: settings.top, ‘left‘: settings.left, ‘position‘: ‘absolute‘, "z-index": "999" }); if (settings.ismove) { $this.css({ cursor: ‘move‘ }); $this.bind("mousedown", function (e) { floatObj.move = true; floatObj.x = e.pageX - parseInt($this.css("left")); floatObj.y = e.pageY - parseInt($this.css("top")); $this.setCapture && $this.setCapture(); return false; }); $(document).bind("mouseup", function (e) { floatObj.move = false; $this.fadeTo("fast", 1); if ($this[0].releaseCapture != undefined) $this[0].releaseCapture(); e.cancelBubble = true; }); $(document).bind("mousemove", function (e) { if (floatObj.move) { var e = e || window.event; var _x = e.pageX - floatObj.x; var _y = e.pageY - floatObj.y; $this.fadeTo(20, 0.25); $this.css({ top: _y, left: _x }); return false; } }); } $(window).bind("scroll", function () { var stickyTop = $this.offset().top; var stickyLeft = $this.offset().left; var scrollTop = $(window).scrollTop(); if (scrollTop > stickyTop) { $this.css({ ‘top‘: ‘0‘, ‘position‘: ‘fixed‘, ‘left‘: stickyLeft }).addClass(‘fxd‘); } else { // $this.css({ ‘top‘: stickyTop, ‘position‘: ‘absolute‘, ‘left‘: stickyLeft }).removeClass(‘fxd‘); } return false; }); return this; }); } }; $.fn.floatdiv = function () { var m = arguments[0]; if (Method[m]) { m = Method[m]; arguments = Array.prototype.slice.call(arguments, 1); } else if (typeof m === "object" || !m) { m = Method.init; } else { $.error("方法" + m + "不存在"); return this; } return m.call(this, arguments); } })(jQuery)
OK啦。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。