基于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 相关文章推荐
jquery 新浪网易的评论块制作
Jul 01 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
node的process以及child_process模块学习笔记
Mar 06 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
JavaScript中的类型检查
Feb 03 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 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
十天学会php之第十天
2006/10/09 PHP
人大复印资料处理程序_补充篇
2006/10/09 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP pear安装配置教程
2016/05/14 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Django实现基于类的分页功能
2019/10/31 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
python代码区分大小写吗
2020/06/17 Python
python入门教程之基本算术运算符
2020/11/13 Python
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
航空大学应届生求职信
2013/11/10 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
Nginx 匹配方式
2022/05/15 Servers