javascript跑马灯悬停放大效果实现代码


Posted in Javascript onDecember 12, 2012

用过qq空间的朋友应该对这个很熟悉吧,效果蛮炫的,不过它们是用flash实现的,那么javascript可不可以呢,我琢磨了三天,终于弄的差不多了,不过还是有些地方不完善,还望大家多多谅解,我会在以后将其完善的.

先说下思路:
首先动态创建一个html结构

<div style="overflow-x:hidden;"> 
<table border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"><img src="4.jpg">.............</td> 
<td></td> 
</tr> 
</table> 
</div>

这个很关键,然后设置一个计时器来模拟img的移动,并且绑定外层div的onmouseenter和onmouseleave事件.最后将外层的div对象返回.

下面看代码

sx.activex.dynamicpic={ 
init:function(imga,border,margin,w,h,step,speed){ 
var demo=document.createElement("div"); 
var tbody=document.createElement("tbody"); 
var demo1=document.createElement("td"); 
var demo2=document.createElement("td"); 
var table=document.createElement("<table border=/"0/" cellspacing=/"0/" cellpadding=/"0/">"); 
var tr=document.createElement("tr"); 
demo.style.position="absolute"; 
demo.style.height=h+"px"; 
demo.style.width=w+"px"; 
demo.style.overflowX="hidden"; 
for(var i=0;i<imga.length;i++){ 
var img=document.createElement("img") 
img.src=imga[i]; 
img.style.height=h+"px"; 
img.style.width=parseInt(w/imga.length)+"px"; 
demo1.appendChild(img) 
} 
tr.appendChild(demo1); 
tr.appendChild(demo2); 
tbody.appendChild(tr); 
table.appendChild(tbody); 
demo.appendChild(table); 
var c=demo1.all; 
for(var i=0;i<c.length;i++){ 
c[i].style.marginLeft=margin+"px"; 
c[i].style.border=border; 
} 
demo2.innerHTML = demo1.innerHTML 
function Marquee(){ 
if(demo2.offsetWidth-demo.scrollLeft<=0){ 
//alert(demo.scrollLeft); 
demo.scrollLeft-=demo1.offsetWidth;} 
else{ 
demo.scrollLeft+=step; 
} 
} 
var MyMar = setInterval(Marquee,speed); 
demo.onmouseenter = function(){ 
clearInterval(MyMar); 
var t=document.elementFromPoint(window.event.clientX,window.event.clientY); 
if(t.tagName!="IMG") 
return; 
if(t.offsetHeight>demo.offsetHeight+10) 
return; 
//alert(t.src); 
var d=document.createElement("img"); 
d.style.height=t.offsetHeight+50+"px"; 
d.style.width=t.offsetWidth+50+"px"; 
d.style.position="absolute"; 
d.style.top="-25px"; 
if(t.parentNode==demo2){ 
d.style.left=t.offsetLeft+demo1.offsetWidth-20+"px"; 
//alert(1); 
//demo.scrollLeft-=demo1.offsetWidth; 
}else{ 
d.style.left=t.offsetLeft-25+"px";} 
//alert(d.style.left); 
//alert(window.event.clientX); 
//alert(t.offsetLeft-demo.scrollLeft+demo.offsetWidth-25); 
d.src=t.src; 
d.onmouseleave=function(){ 
d.parentNode.removeChild(d); 
MyMar = setInterval(Marquee,speed) 
} 
//alert(1); 
//demo.style.overflow="visible"; 
demo1.appendChild(d); 
//alert(m.innerHTML); 
} 
demo.onmouseleave = function(){MyMar = setInterval(Marquee,speed)} 
return demo; 
} 
}

函数参数的imga是你要传入img地址的数组,border是图片的边框属性,margin是图片间的距离,w是外层div的width,h同理,step是计时器执行一次图片移动的步数,speed是计时器的时间间隔.
上面的计时器代码借用了网上的一段代码,不过我自己做了些改进.
下面给出调用代码:
<html> 
<head> 
<title>Untitled Document</title> 
</head> 
<body> 
<script src="kongjian.js"></script> 
<script> 
var a=sx.activex.dynamicpic.init(["1 (1).jpg","1.jpg","1 (2).jpg","1 (3).jpg"],"2px red solid",5,500,100,2,10); 
document.body.appendChild(a); 
</script> 
</body> 
</html>

好了,基本搞定,有什么问题还请多多交流啊!
Javascript 相关文章推荐
JavaScript触发器详解
Mar 10 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
javascript常用方法总结
May 14 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
Mar 02 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
Aug 19 Javascript
ES6 Promise对象的应用实例分析
Jun 27 Javascript
JS实现星星海特效
Dec 24 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 #Javascript
javascript采用数组实现tab菜单切换效果
Dec 12 #Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 #Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 #Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 #Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 #Javascript
用js判断页面是否加载完成实现代码
Dec 11 #Javascript
You might like
PHP中的Memcache详解
2014/04/05 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
初学JavaScript第二章
2008/09/30 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
详解Python中的动态属性和特性
2018/04/07 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python 常见的反爬虫策略
2020/09/27 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
10个示例带你掌握python中的元组
2020/11/23 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
企业军训感想
2014/02/07 职场文书
中学教师教育感言
2014/02/21 职场文书
2014年幼师工作总结
2014/11/22 职场文书
储备店长岗位职责
2015/04/14 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
生日宴会家属答谢词
2015/09/29 职场文书