基于jquery的一个浮动框(扩展性比较好 )


Posted in Javascript onAugust 27, 2010
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
<style type="text/css"> 
body 
{ 
height:2000px; 
} 
.float_mx{ 
background:#CCC; 
width:100px; 
height:100px; 
display:none; 
} 
</style> 
</head> 
<body> 
<div class="float_mx"> 
在此添加内容 
</div> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
(function($) { 
$.fn.scrollBox = function(options){ 
var defaultOptions = { 
speed: 0.1, //加速 
time: 16, //移动速度 
top: 200, //默认顶部 
align: 'right', //浮动位置,可选左、右 
mix: 0 //边距 
}; 
var options = $.extend(defaultOptions, options); 
this.each(function(){ 
var obj = $(this); 
init(); 
function init(){ 
obj.css('display', 'block'); 
obj.css('position', 'absolute'); 
obj.css(options.align, options.mix); 
obj.css('top', options.top+'px'); 
obj.css('z-index', '99'); 
move(); 
} 
function back() { 
acceleration = options.speed; 
time = options.time; 
var x1 = 0; 
var y1 = 0; 
var x2 = 0; 
var y2 = 0; 
if (document.documentElement) { 
x1 = document.documentElement.scrollLeft || 0; 
y1 = document.documentElement.scrollTop || 0; 
} 
if (document.body) { 
x2 = document.body.scrollLeft || 0; 
y2 = document.body.scrollTop || 0; 
} 
var x = Math.max(x1, x2); 
var y = Math.max(y1, y2); 
var speed = acceleration; 
return { 
l: x, 
t: y, 
s: speed 
}; 
}; function move(){ 
var tip = obj; 
var old = options.top; 
var pos = back().t; 
pos = pos - $(tip).Coordinate().y + options.top; 
pos = $(tip).Coordinate().y + pos / 10; 
if (pos < options.top) { 
pos = options.top; 
} 
if (pos != old) { 
tip.css('top',pos + "px"); 
} 
old = pos; 
window.setTimeout(function(){move();}, options.time); 
}; 
}); 
}; 
$.fn.Coordinate = function(){ 
var E = $(this)[0]; 
var C = E.offsetTop; 
var B = E.offsetLeft; 
var A = E.offsetWidth; 
var D = E.offsetHeight; 
while (E = E.offsetParent) { 
C += E.offsetTop; 
B += E.offsetLeft; 
} 
return { 
x: B, 
y: C, 
w: A, 
h: D 
}; 
}; 
})(jQuery); 
$('.float_mx').scrollBox(); 
</script> 
</body> 
</html>

把下面这段代理放到单独的js文件中,代码中的css代码可以删掉,display设为none,是为了避免在页面未加载完,显示不正确的问题。
(function($) { 
$.fn.scrollBox = function(options){ 
var defaultOptions = { 
speed: 0.1, //加速 
time: 16, //移动速度 
top: 200, //默认顶部 
align: 'right', //浮动位置,可选左、右 
mix: 0 //边距 
}; 
var options = $.extend(defaultOptions, options); 
this.each(function(){ 
var obj = $(this); 
init(); 
function init(){ 
obj.css('display', 'block'); 
obj.css('position', 'absolute'); 
obj.css(options.align, options.mix); 
obj.css('top', options.top+'px'); 
obj.css('z-index', '99'); 
move(); 
} 
function back() { 
acceleration = options.speed; 
time = options.time; 
var x1 = 0; 
var y1 = 0; 
var x2 = 0; 
var y2 = 0; 
if (document.documentElement) { 
x1 = document.documentElement.scrollLeft || 0; 
y1 = document.documentElement.scrollTop || 0; 
} 
if (document.body) { 
x2 = document.body.scrollLeft || 0; 
y2 = document.body.scrollTop || 0; 
} 
var x = Math.max(x1, x2); 
var y = Math.max(y1, y2); 
var speed = acceleration; 
return { 
l: x, 
t: y, 
s: speed 
}; 
}; function move(){ 
var tip = obj; 
var old = options.top; 
var pos = back().t; 
pos = pos - $(tip).Coordinate().y + options.top; 
pos = $(tip).Coordinate().y + pos / 10; 
if (pos < options.top) { 
pos = options.top; 
} 
if (pos != old) { 
tip.css('top',pos + "px"); 
} 
old = pos; 
window.setTimeout(function(){move();}, options.time); 
}; 
}); 
}; 
$.fn.Coordinate = function(){ 
var E = $(this)[0]; 
var C = E.offsetTop; 
var B = E.offsetLeft; 
var A = E.offsetWidth; 
var D = E.offsetHeight; 
while (E = E.offsetParent) { 
C += E.offsetTop; 
B += E.offsetLeft; 
} 
return { 
x: B, 
y: C, 
w: A, 
h: D 
}; 
}; 
})(jQuery);
Javascript 相关文章推荐
Javascript select下拉框操作常用方法
Nov 09 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
JavaScript数组去重的6个方法
Jan 21 Javascript
Vue.js -- 过滤器使用总结
Feb 18 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
Jun 13 Javascript
node thread.sleep实现示例
Jun 20 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
TS 类型兼容教程示例详解
Sep 23 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
Aug 27 #Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 #Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
Aug 27 #Javascript
jquery 插件开发备注
Aug 27 #Javascript
Jquery + Ajax调用webService实例代码(asp.net)
Aug 27 #Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
Aug 26 #Javascript
ExtJs GridPanel简单的增删改实现代码
Aug 26 #Javascript
You might like
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
10条php编程小技巧
2015/07/07 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
加速IE的Javascript document输出的方法
2010/12/02 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
原生js实现日历效果
2020/03/02 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
浅谈Python协程
2020/06/17 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
人力资源经理自我评价
2014/01/04 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
探亲假请假条
2014/04/11 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
SQL Server中锁的用法
2022/05/20 SQL Server