js实现最简单轮播图效果代码,js实现轮播图原理及示例

js实现最简单轮播图效果代码,js实现轮播图原理及示例,用js实现轮播图效果

本文主要介绍用js实现轮播地图,播放上一张图片,下一张图片,可以选择哪张图片等效果。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

今天就来说说用js实现轮播效果,供大家参考。具体内容如下

思路

1.首先,我们需要得到我们需要的元素。

div class=all id=box

div class=screen

!-无序列表-

保险商实验所

liimg src=。/wf1 . jpg width= 500 height= 200 //Li

liimg src=。/wf2 . jpg width= 500 height= 200 //Li

liimg src=。/wf3 . jpg width= 500 height= 200 //Li

liimg src=。/wf4 . jpg width= 500 height= 200 //Li

liimg src=。/wf5 . jpg width= 500 height= 200 //Li

/ul

!-有序列表-

开环(同Open Loop)

/ol

/div

div id=arrspan id=leftlt。/spanspan id=rightgt。/span/div

/div

2.我们希望轮播地图无论走到哪里都被执行,并且颜色发生变化。

3.在转盘上添加左右方向键,可以上下切换。

4.让旋转木马自己移动。

操作

1.先获取到元素,和需要用到的轮播图效果

1.首先获取需要使用的ul(照片)、ol(点击框)和nth(左右按钮)。

var ul=document . query selector( ul )

var ol=document . query selector( ol )

var nth=document . query selector(# arr)

var box=document . query selector(# box)

var left=document . query selector(# left)

var right=document . query selector(# right)

2.封装动画效果,后面会用到。

//进行位置动画封装调用。

函数动画(元素、偏移、设定值、时间){

//如果判断为真,则删除,防止多次触发。

if(element.jsq){

clearInterval(element.jsq)

}

//获取当前偏移量

var position=ul.offsetLeft

//决定如果移动位置小于当前位置,步长为负。

if(offsetposition){

设定值=-设定值

}

//启动间隙计时器

if(Math.abs(位置偏移)Math.abs(设定)){

element.jsq=setInterval(()={

位置=设定值

element . style . left=位置 px

//判断当前位值与预留位置之差不超过一步,则停止定时器。

if(Math.abs(位置偏移)Math.abs(设定)){

clearInterval(element.jsq)

element . style . left=偏移量 px

}

},次);

}

}

动画的步骤:

1.传入时,检查是否有定时器,如果有,将其清零,防止多个定时器共存。

2.确定要移动的位置是否大于原始位置。如果大于,将增加setp,如果小于,每次将减少步长。

3.启动计时器并移动它。

4.当当前位置与预定位置之间的距离小于步长时,结束定时器,并将位置设置到预定位置,以防止重复水平跳跃。

2.ol添加内容,加点击事件,图片移动,按钮变色

for(var I=0;iul . children . length;i ){

var Li=document . createelement( Li )

li.innerHTML=i 1

//为每个li设置自定义属性。

li.setAttribute(a ,I)

ol.appendChild(李)

//为ol下面的每个li设置click事件

ol.children[i]。onclick=function(){

//循环往复,所以李专思。

for(var I=0;iol.children .长度;i ){

ol.children[i]。className=

}

//将class属性添加到当前单击的元素中

“当前”

//获取当前点击的li的自定义属性的值,看点击的是哪个页面。

var index=this.getAttribute(a )

console.log(索引)

//检查每张照片的宽度

var imgwidth=ul.children[0]。偏移距离

//将数字乘以宽度,找出要移动的量。

offset=index*-imgwidth

//调用动画函数

动画(ul,偏移,50,30)

1.根据照片数量,使用for循环创建相同数量的按钮,使用setattribre( a ,I)创建新的自定义属性并添加到ol中,后面会用到。

for(var I=0;iul . children . length;i ){

var Li=document . createelement( Li )

li.innerHTML=i 1

//为每个li设置自定义属性。

li.setAttribute(a ,I)

ol.appendChild(李)

}

2.在这个循环中给所有按钮添加绑定事件,让当前按钮变色,其他没有颜色,独占思想。每次单击时,当前按钮可用,所有其他按钮都被清除。

for(var I=0;iul . children . length;i ){

var Li=document . createelement( Li )

li.innerHTML=i 1

//为每个li设置自定义属性。

li.setAttribute(a ,I)

ol.appendChild(李)

//新建

//为ol下面的每个li设置click事件

ol.children[i]。onclick=function(){

//循环往复,所以李专思。

for(var I=0;iol.children .长度;i ){

ol.children[i]。className=

}

//将class属性添加到当前单击的元素中

“当前”

3.获取当前单击的元素的自定义属性的值,保存它,并使用它来设置页面的偏移量。将当前点击的值与每张照片相乘,得到ul的偏移量。记得加个负号,应该是ul向左而不是viewport向左,然后调用我们之前写的动画函数。

for(var I=0;iul . children . length;i ){

var Li=document . createelement( Li )

li.innerHTML=i 1

//为每个li设置自定义属性。

li.setAttribute(a ,I)

ol.appendChild(李)

//为ol下面的每个li设置click事件

ol.children[i]。onclick=function(){

//循环往复,所以李专思。

for(var I=0;iol.children .长度;i ){

ol.children[i]。className=

}

//将class属性添加到当前单击的元素中

“当前”

//新建

//获取当前点击的li的自定义属性的值,看点击的是哪个页面。

var index=this.getAttribute(a )

console.log(索引)

//检查每张照片的宽度

var imgwidth=ul.children[0]。偏移距离

//将数字乘以宽度,找出要移动的量。

offset=index*-imgwidth

//调用动画函数

动画(ul,偏移,50,30)

获得结果

3.给轮播图添加上一张,下一张按钮

(这里就不写css的风格了。我最后会给的,我先补上。Css隐藏在开头)

1.我开始获取各种元素,现在不需要获取了。把事件分别写在入口和出口就行了。

//鼠标进入事件

box.onmousemove=function(){

nth.style.display=block

}

//鼠标左键事件

box.onmouseleave=function(){

nth.style.display=none

}

2.获取当前页面,设置click事件,next previous-,然后应用previous onclick效果。

for(var I=0;iul . children . length;i ){

var Li=document . createelement( Li )

li.innerHTML=i 1

//为每个li设置自定义属性。

li.setAttribute(a ,I)

ol.appendChild(李)

//为ol下面的每个li设置click事件

ol.children[i]。onclick=function(){

//循环往复,所以李专思。

for(var I=0;iol.children .长度;i ){

ol.children[i]。className=

}

//给当前点击的元素添加上班级属性

"当前"

//获取到当前点击里的自定属性的值看看是点击到第几张

var index=this.getAttribute(a )

console.log(索引)

//查看照片每一张的宽度

var imgwidth=ul.children[0].偏移距离

//根据宽度乘上第几张得出该移动多少

offset=index*-imgwidth

//调用动画函数

动画(ul,偏移,50,30)

//新

//点击事件,索引为当前点击的序号的自定义类名的值

left.onclick=function(){

if(index0){

索引-

}

ol.children[index].单击()

}

right.onclick=function(){

if(index4){

指数

}

ol.children[index].单击()

}

}

}

因为点击事件里面的值在外面获取不到,索性我就接着写

事件里面还可以调用事件如ol.children[index].单击()记得要加小括号,并且去掉在

3.在没有触发ol.onclick(没有点击下边的1,2,3,4,5)的时候,点击左右是不起效果的,所以在脚本上要添加一段代码

var Click=0

right.onclick=function(){

点击

if(Click==1){

儿童[1].单击()

}

}

这个时候就完成了第三部分的操作

4.让轮播图自己动起来

//自动移动

//1.首先我们要在一开始的时候给第一个按钮添加颜色

ol.children[0].当前

//2.开启计时器每5秒切换一次

setInterval(function(){

var position=ul.offsetLeft

var imgwidth=ul.children[0].偏移距离

var indexs=数学。ABS(位置/图像宽度)

//3.获取现在的位置,和图片的长度,相除得到下标

if(索引3){

指数=-1

}

儿童.单击()

//跳转的时候一定要加一

},5000)

1.首先我们要在一开始的时候给第一个按钮添加颜色,往后排他思想删除掉

2.得出下标,跳转要加1,要不然原地跳,第二圈开始的时候为-1,不是0,应为要+1操作

就可以的到我们想要的结果了

整体代码

!文档类型超文本标记语言

html lang=en

meta charset=UTF-8

meta name= viewport content= width=device-width,initial-scale=1.0

标题文档/标题

style type=text/css

* {

填充:0;

边距:0;

列表样式:无;

边框:0;

}。全部{

宽度:500像素

高度:200像素

填充:7px

边框:1px纯色# ccc

边距:100像素自动;

位置:相对;

}。屏幕{

宽度:500像素

高度:200像素

溢出:隐藏;

位置:相对;

}。屏幕李{

宽度:500像素

高度:200像素

溢出:隐藏;

浮动:左;

}。屏幕ul {

位置:绝对;

左:0;

top:0px;

宽度:3000像素

}。所有ol {

位置:绝对;

右:10px

底部:10px

行高:20px

文本对齐:居中;

}。所有ol李{

浮动:左;

宽度:20px

高度:20px

背景:# fff

边框:1px纯色# ccc

左边距:10px

光标:指针;

}。所有ol li.current {

背景:黄色;

}

#arr

显示:无;

z指数:1000;

}

#arr span {

宽度:40px

高度:40px

位置:绝对;

左:5px

top:50%;

边距-顶部:-20px;

背景:# 000;

光标:指针;

行高:40px

文本对齐:居中;

字体粗细:粗体;

字体系列: 黑体;

字体大小:30px

颜色:# fff

不透明度:0.3;

边框:1px固体# fff

}

#arr #right {

右:5px

左:自动;

}

/风格

/头

身体

div class=all id=box

div class=screen

!-无序列表-

保险商实验所

liimg src= ./wf1。jpg width= 500 height= 200 //Li

liimg src= ./wf2。jpg width= 500 height= 200 //Li

liimg src= ./wf3。jpg width= 500 height= 200 //Li

liimg src= ./wf4。jpg width= 500 height= 200 //Li

liimg src= ./wf5。jpg width= 500 height= 200 //Li

/ul

!-有序列表-

开环(同开环)

/ol

/div

div id=arrspan id=leftlt ./spanspan id=rightgt ./span/div

/div

脚本

//进行位置动画封装调用

函数动画(元素、偏移、设定值、时间){

//判断为真实的则删除,防止多个触发

if(element.jsq){

clearInterval(element.jsq)

}

//获取当前抵消

var position=ul.offsetLeft

//判定如果移动位置小于现在的位置,则步长为负数

if(offsetposition){

设定值=-设定值

}

//开启间隙定时器

if(Math.abs(位置偏移)Math.abs(设定)){

element.jsq=setInterval(()={

位置=设定值

元素。风格。左侧=位置px

//判断要是现在的位值和预订的位置相差不超过一步长,则停止计时器

if(Math.abs(位置偏移)Math.abs(设定)){

clearInterval(element.jsq)

元素。风格。左侧=偏移量px

}

},次);

}

}

//1.获取元素

var ul=文档。查询选择器(“ul”)

var ol=文档。查询选择器( ol )

var nth=文档。查询选择器(# arr)

var box=文档。查询选择器(#框)

var left=文档。查询选择器(#左侧)

var right=文档。查询选择器(#右)

//2.ol中添加点击元素

//在开环(同开环)循环添加里

for(var I=0;iul。孩子。长度;i ){

var Li=文档。createelement( Li )

li.innerHTML=i 1

//给每一个里设置上自定义属性

li.setAttribute(a ,I)

ol.appendChild(李)

//给开环(同开环)下面每一个里设置点击事件

ol .儿童[i].onclick=function(){

//循环所以里进行排他思想

for(var I=0;iol .儿童。长度;i ){

ol .儿童[i].className=

}

//给当前点击的元素添加上班级属性

"当前"

//获取到当前点击里的自定属性的值看看是点击到第几张

var index=this.getAttribute(a )

console.log(索引)

//查看照片每一张的宽度

var imgwidth=ul.children[0].偏移距离

//根据宽度乘上第几张得出该移动多少

offset=index*-imgwidth

//调用动画函数

动画(ul,偏移,50,30)

//点击事件,索引为当前点击的序号的自定义类名的值

left.onclick=function(){

if(index0){

索引-

}

ol.children[index].单击()

}

right.onclick=function(){

if(index4){

指数

}

ol.children[index].单击()

}

}

}

//鼠标进入事件

box.onmousemove=function(){

nth.style.display=block

}

//鼠标离开事件

box.onmouseleave=function(){

nth.style.display=none

}

//鼠标右边点击事件

var Click=0

right.onclick=function(){

点击

if(Click==1){

儿童[1].单击()

}

}

//自动移动

//1.首先我们要在一开始的时候给第一个按钮添加颜色

ol.children[0].当前

//2.开启计时器每5秒切换一次

setInterval(function(){

var position=ul.offsetLeft

var imgwidth=ul.children[0].偏移距离

var indexs=数学。ABS(位置/图像宽度)

//3.获取现在的位置,和图片的长度,相除得到下标

if(索引3){

指数=-1

}

儿童.单击()

//跳转的时候一定要加一

},5000)

/脚本

/body

/html

记得更改图片的路径。

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

js实现最简单轮播图效果代码,js实现轮播图原理及示例