onmouseover 事件缩略图片滑动 修正版

本文介绍了一个使用HTML、CSS和JavaScript实现的网页设计案例,主要内容包括一个带有动画效果的导航栏和轮播图。通过鼠标悬停事件触发元素移动,实现了平滑过渡效果。
1
#slideshow{ width : 100px ; height : 100px ; position : relative overflow : hidden ;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
< html  lang = "en" >
< head >
< meta  charset = "utf-8" >
< title >Web Design</ title >
< script  src = "addLoadEvent.js" ></ script >
< link  rel = "stylesheet"  type = "text/css"  href = "10.2.css"  >
< script  src = "10.2.js" ></ script
</ head >
< body >
< h1 >Web Design</ h1 >
< p >These are the things you should know.</ p >
< ol  id = "linklist" >
< li >< a  href = "structure.html" >Structure</ a ></ li >
< li >< a  href = "presentation.html" >Presentation</ a ></ li >
< li >< a  href = "behavior.html" >Behavior</ a ></ li >
</ ol >
< div  id = "slideshow" >
< img  src = "topics.gif"  alt = "building bolcks of web design"  id = "preview"  />
</ div >
</ body >
</ html >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function  addLoadEvent(func){     //不管在页面加载完毕执行多少个函数,都应付自如
var  oldonload = window.onload;
if ( typeof  window.onload !=  'function' ){
window.onload = func;
} else {
window.onload =  function (){
oldonload();
func();
}
}
}
function  moveElement(elementID,final_x,final_y,interval){
if (!document.getElementById)  return  false ;
if (!document.getElementById(elementID))  return  false ;
var  elem = document.getElementById(elementID);
if (elem.movement){             
clearTimeout(elem.movement);       //进行复位,防止动画效果产生滞后
}
var  xpos = parseInt(elem.style.left);  //parseInt(string)把字符串里面的数值信息提取出来,因为后面要进行很多算术比较操作。
var  ypos = parseInt(elem.style.top);   //parseFloat(string)可以把带小数的数值(也就是浮点数)提取出来。
if (xpos == final_x && ypos == final_y){
return  true ;
}
if (xpos < final_x){ xpos++;}        //如果xpos小于终点的left,给它加1.
if (xpos > final_x){ xpos--;}        //如果xpos大于终点的left,给它减1.
if (ypos < final_y){ ypos++;}        //如果ypos小于终点的left,给它加1.
if (ypos > final_y){ ypos--;}        //如果ypos大于终点的left,给它减1.
elem.style.left = xpos +  "px" ;
elem.style.top = ypos +  "px" ;
//var  repeat = function() {moveElement(elementID, final_x,final_y,interval)} 
var  repeat =  "moveElement('"  + elementID +  "',"  + final_x +  ","  + final_y +  ","  + interval +  ")"
elem.movement = setTimeout(repeat,interval);  //为元素创建属性movement,element.property = value;
 
}
 
 
function  prepareSlideshow(){
//确保浏览器支持DOM方法。
if (!document.getElementsByTagName)  return  false ;
if (!document.getElementById)  return  false ;
//确保元素存在。
if (!document.getElementById( "linklist" ))  return  false ;
if (!document.getElementById( "preview" ))  return  false ;
//为图片应用样式。
var  preview = document.getElementById( "preview" );
preview.style.position =  "absolute" ;
preview.style.left =  "0px" ;
preview.style.top =  "0px" ;
//取得列表中所有链接。
var  list = document.getElementById( "linklist" );
var  links = list.getElementsByTagName( "a" );
//为mouseover事件添加动画效果。
links[0].onmouseover =  function (){
moveElement( "preview" ,-100,0,10);
}
links[1].onmouseover =  function (){
moveElement( "preview" ,-200,0,10);
}
links[2].onmouseover =  function (){
moveElement( "preview" ,-300,0,10);
}
}
 
addLoadEvent(prepareSlideshow);

本次案例素材:

wKiom1dIRUjDofk4AAAO8DE9jPI584.gif-wh_50

浏览器效果:

wKioL1dIRmaTRgJuAAAkeB6sH9k822.jpg-wh_50

本文转自  小旭依然  51CTO博客,原文链接:http://blog.51cto.com/xuyran/1783925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值