,,原生JavaScript实现幻灯片效果

,,原生JavaScript实现幻灯片效果

本文主要介绍了原生JavaScript实现幻灯片效果,文中的安装步骤非常详细,有一定的参考价值。感兴趣的朋友可以参考一下。

我们在制作一个页面,尤其是一个主页的时候,一般会设计一个可以链接到整个网站其他主页面的导航栏,或者一个网站的介绍性文字会包含这个页面的跳转。通常我们会使用title属性给这些跳转链接添加一些说明性的文字,但是我们可以通过制作一个幻灯片演示来提升用户的体验。当用户的鼠标移动到某个链接时,下面会出现相应的图片预览,美化了页面,大大增加了整个网站的互动性。让我们一起制作一个漂亮的幻灯片脚本。

准备工作:在制作脚本之前,你需要制作一张图片,图片要展示所有的预览效果,如下图:

index.html

制作一个有序列表,并添加一些页面链接。

身体

H1简单动画/h1

p连接跳转目标演示/p

ol id='list '

a href='list1.html '优先/a

/李

a href='list2.html '秒/a

/李

a href='list3.html '第三个/a

/李

/ol

!-动态添加图片显示区-

script src='script.js'/script

/body

style.css

给这个导航栏添加一些样式。

ol{

左填充:20px

}

ol李{

显示:内嵌;

右边距:10px

}

#查看{

宽度:600px

高度:200px

位置:绝对;

}

#幻灯片放映{

宽度:200px

高度:200px

溢出:隐藏;

位置:相对;

}

script.js

实现思路:

在设置剧本之前,我们先理清思路,确定我们要做的事情。

1.创建一些新节点来显示预览图片。

2.为标记添加onmouseover事件

3.动画效果是通过setTimeout()函数和图片元素的左上偏移量的移位来完成的(获取set left top属性时要转换成整数)。

/*共享负载*/

函数addLoadEvent(fun){

var oldLoad=window.onload

if(旧负载类型!='函数'){

window.onload=fun

}否则{

window.onload=function(){

old load();

fun();

}

}

}

/*insertAfter*/

函数insertAfter(newNode,oldNode){

var parent=old node . parent node;

if(parent.lastChild==oldNode){

parent . append child(new node);

}否则{

parent.insertBefore(newNode,old node . next sibling);

}

}

函数显示(){

/*向后兼容性*/

如果(!document.getElementById)返回false

如果(!document.getElementsByTagName)返回false

如果(!document.createElement)返回false

/*获取列表列表*/

var list=document . getelementbyid(' list ');

/*创建图片显示区域*/

/*外部分区*/

var div=document . createelement(' div ');

div.setAttribute('id ',' slide show ');

/*img*/

var img=document . createelement(' img ');

img.setAttribute('id ',' view ');

img.setAttribute('src ',' image . jpg ');

Img.setAttribute('alt ','图片预览');

/*使用insertAfter()函数添加以确保div遵循list list */

insertAfter(div,list);

div . appendchild(img);

/*绑定事件*/

var a=list . getelementsbytagname(' a ');

答[0]。onmouseover=function(){

moveElement('view ',0,0,10);

};

答[1]。onmouseover=function(){

moveElement('view ',-200,0,10);

};

答[2]。onmouseover=function(){

moveElement('view ',-400,0,10);

};

}

/*移动

*参数含义:图片所在元素的ID;图片应该向左移动的偏移量;上限偏移量;时间

*/

函数moveElement(elementID,left,top,interval){

/*向后兼容性*/

如果(!document.getElementById)返回false

如果(!document . getelementbyid(elementID))返回false

/*获取图片*/

var img=document . getelementbyid(element id);

/*确定当前元素是否已经在动画函数中。

*防止动画堆积。

*/

if(img.moveNow){

/*明确堆栈中的动画*/

clear time out(img . move now);

}

/*确定元素是否有left和top*/set */

如果(!img.style.left){

img . style . left=' 0px ';

}

如果(!img.style.top){

img . style . top=' 0px ';

}

/*获取图片的当前位置

*此时获得的值为字符串格式,使用parseInt () */strong制转换为字符串

var old left=parse int(img . style . left);

var old top=parse int(img . style . top);

/*将当前位置与目标位置进行比较*/

if(oldLeft==left oldTop==top){

返回true

}

/*为了保证用户体验,长距离移动时要快一点。

*移动距离小时,可以慢一点。

*根据差距判断移动距离,每次移动为差距的1/10。

*/

/*dist变量用于存储当前偏移量和目标偏移量之间的距离*/

var dist=0;

if(oldLeft left){

/*ceil()向上舍入以防止小数和小于1的情况*/

dist=math . ceil((left-old left)/10);

oldLeft=oldLeft距离;

}

if(oldLeft left){

dist=math . ceil((old left-left)/10);

old left=old left-dist;

}

if(oldTop top){

dist=math . ceil((top-old top)/10);

oldTop=oldTop dist

}

if(oldTop top){

dist=math . ceil((old top-top)/10);

old top=old top-dist;

}

/*移动*/

img . style . left=old left ' px ';

img . style . top=old top ' px ';

/*调用函数*/

var result=' move element(' element id ' ',' left ',' top ',' interval ')';

/*将执行动画的函数设置为该元素的属性*/

img.moveNow=setTimeout(结果,间隔);

}

addLoadEvent(show);

最终执行效果

此时,当我们将鼠标移动到不同的列表项时,列表下的图片会移动到相应的预览位置。

至此,一个简单的幻灯片演示完成。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: