基于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 相关文章推荐
JS 面向对象之神奇的prototype
Feb 26 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
Jan 17 Javascript
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
使用重写url机制实现验证码换一张功能
Aug 01 Javascript
Vue常用指令详解分析
Aug 19 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
自定义javascript验证框架示例【附源码下载】
May 31 Javascript
vue中利用Promise封装jsonp并调取数据
Jun 18 Javascript
layui switch 开关监听 弹出确定状态转换的例子
Sep 21 Javascript
JavaScript利用html5新方法操作元素类名详解
Nov 27 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
第十五节--Zend引擎的发展
2006/11/16 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
利用python爬取散文网的文章实例教程
2017/06/18 Python
python web基础之加载静态文件实例
2018/03/20 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
交通安全教育制度
2014/02/02 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书