背景图跟随鼠标移动的Mootools插件实现代码


Posted in Javascript onDecember 12, 2011

效果演示:
背景图跟随鼠标移动的Mootools插件实现代码
源代码:

<script style="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js"></script> 
</head> 
<body id='a'> 
<h2 class='a'>Single images</h2> 
<div id='bsfdimg' style='background:url("/upload/201112/20111212204031245.jpg") no-repeat scroll -50px -50px transparent;width:260px;height:200px;' w='392' h='600'></div> 
<script type='text/javascript'> 
var MoveBKimg=new Class({ 
initialize:function(){ 
this.$L=0; 
this.$T=0; 
}, 
Todo:function(i,opt){ 
this.opt={ 
bw:opt.bw || 0, //容器宽度 
bh:opt.bh || 0, 
iw:opt.iw || 0, //图像宽度 
ih:opt.ih || 0, 
X:opt.X || 0, //鼠标的clientX坐标 
Y:opt.Y || 0 
};o=this.opt; 
if(!i || !o.iw || !o.ih || !o.bw || !o.bh){return false;} 
o.iw=o.iw-o.bw; //图像实际可被移动的x轴范围 
o.ih=o.ih-o.bh; 
var P=i.getStyle('background-position');P=P.split(" ");//取得目前背景图的position值,并拆分转为Int型 
P[0]=P[0].toInt();P[0]=(P[0].abs()>o.iw)?((P[0]<0)?-o.iw:o.iw):P[0];//背景图目前的X偏移,并对值进行2次修正 
P[1]=P[1].toInt();P[1]=(P[1].abs()>o.ih)?((P[1]<0)?-o.ih:o.ih):P[1]; 
console.log(o.X+'|'+o.Y); 
if(o.X>this.$L){//往右移鼠标图片往左跑 




this.$L=o.X; 
P[0]=(o.iw<(P[0]-10))?o.iw:(P[0]-10); 
} 
if(o.X<this.$L){//往左移鼠标图片往右跑 





this.$L=o.X; 
P[0]=((P[0]+10)>0)?0:(P[0]+10); 
} 
if(o.Y>this.$T){//往下移鼠标图片往上跑 





this.$T=o.Y; 
P[1]=(o.ih<(P[1]-10))?o.ih:(P[1]-10); 
} 
if(o.Y<this.$T){//往上移鼠标图片往下跑 





this.$T=o.Y; 
P[1]=((P[1]+10)>0)?0:(P[1]+10); 
} 
i.setStyle('background-position',''+P[0]+'px '+P[1]+'px');//重新给背景图的position赋值 
} 
}); 
El=$('bsfdimg'); 
var MoveBKimg=new MoveBKimg(); 
El.addEvent('mousemove',function(event){ 
MoveBKimg.Todo(El,{bw:260,bh:200,iw:392,ih:600,X:event.client.x,Y:event.client.y}); 
}) 
</script>
Javascript 相关文章推荐
javascript 动态创建表格
Jan 08 Javascript
如何防止JavaScript自动插入分号
Nov 05 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
详解VueJs中的V-bind指令
May 03 Javascript
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
微信小程序 组件的外部样式externalClasses使用详解
Sep 06 Javascript
js实现拾色器插件(ColorPicker)
May 21 Javascript
js实现翻牌小游戏
Jul 31 Javascript
用Mootools获得操作索引的两种方法分享
Dec 12 #Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 #Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 #Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 #Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 #Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 #Javascript
FireFox下XML对象转化成字符串的解决方法
Dec 09 #Javascript
You might like
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php异常处理使用示例
2014/02/25 PHP
dedecms中使用php语句指南
2014/11/13 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
详解各版本React路由的跳转的方法
2018/05/10 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python中JWT用户认证的实现
2020/05/18 Python
django queryset相加和筛选教程
2020/05/18 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
三好学生自我鉴定
2013/12/17 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python