js实现轮播图制作方法

本文实例为大家分享了js实现轮播图展示的具体代码,供大家参考,具体内容如下

效果如图所示

代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<style type="text/css">

* {

padding: 0;

margin: 0;

}

.container {

position: relative;

width: 600px;

height: 300px;

margin: 30px auto;

overflow: hidden;

}

.left {

display: none;

position: absolute;

top: 50%;

left: -20px;

transform: translateY(-50%);

width:50px;

height: 50px;

border-top-right-radius: 50%;

border-bottom-right-radius: 50%;

background-color: rgba(0,0,0,0.5);

z-index: 999;

}

.left i {

display: block;

margin-top: 10px;

margin-left: 20px;

width: 30px;

height: 30px;

background: url(img/left.png) no-repeat;

background-size: 30px 30px;

}

.right {

display: none;

position: absolute;

top: 50%;

right: -20px;

transform: translateY(-50%);

width:50px;

height: 50px;

border-top-left-radius: 50%;

border-bottom-left-radius: 50%;

background-color: rgba(0,0,0,0.5);

z-index: 999;

}

.right i {

display: block;

margin-top: 10px;

margin-right: 20px;

width: 30px;

height: 30px;

background: url(img/right.png) no-repeat;

background-size: 30px 30px;

}

ul li,ol li {

list-style: none;

}

.picture {

position: absolute;

}

.list {

position: absolute;

bottom: 10px;

left: 10px;

}

.list li {

float: left;

margin-right: 10px;

width: 10px;

height: 10px;

border-radius: 10px;

background-color: rgba(0,0,0,0.5);

cursor: pointer;

}

.list .current {

background-color: #fff;

}

.picture li {

position: absolute;

width: 600px;

height: 300px;

}

img {

width: 100%;

height: 100%;

}

</style>

</head>

<body>

<div class="container">

<span class="left"><i></i></span>

<span class="right"><i></i></span>

<ul class="picture">

<li><img src="img/1.jpg" ></li>

<li><img src="img/2.jpg" ></li>

<li><img src="img/3.jpg" ></li>

<li><img src="img/4.jpg" ></li>

<li><img src="img/5.jpg" ></li>

</ul>

<ol class="list">

</ol>

</div>

<script type="text/javascript">

var picture = document.querySelector('.picture');

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

var num=0;

var circle=0;

for (i=0;i<picture.children.length;i++)

{

// 设置图片的位置

picture.children[i].style.left = i*600 + 'px';

// 自动生成有序列表

var li = document.createElement('li');

li.setAttribute('index',i);

list.appendChild(li);

// 给li添加点击事件

li.addEventListener('click',function () {

for (var i=0;i<list.children.length;i++) {

list.children[i].className = '';

}

this.className = 'current';

var index = this.getAttribute('index');

num = index;

circle = index;

animate(picture,-index*600);

})

}

// 设置第一个ol孩子的类名

list.children[0].className = 'current';

var left = document.querySelector('.left');

var right = document.querySelector('.right');

var container = document.querySelector('.container');

// 设置鼠标经过离开事件

container.addEventListener('mouseover',function () {

left.style.display = 'block';

right.style.display = 'block';

clearInterval(timer)

timer = null;

})

container.addEventListener('mouseleave',function () {

left.style.display = 'none';

right.style.display = 'none';

timer = setInterval(function () {

right.click();

},1000);

})

// js动画函数

function animate (obj,target,callback) {

clearInterval(obj.timer)

obj.timer = setInterval(function () {

var step = (target - obj.offsetLeft)/10;

step = step > 0 ? Math.ceil(step) : Math.floor(step);

if(obj.offsetLeft == target) {

clearInterval(obj.timer);

if (callback) {

callback();

}

}

obj.style.left = obj.offsetLeft + step + 'px';

},15)

}

var first = picture.children[0].cloneNode(true);

picture.appendChild(first);

picture.lastChild.style.left = (picture.children.length-1)*600 + 'px';

//右侧点击事件

right.addEventListener('click',function () {

if (num==picture.children.length-1) {

picture.style.left = 0;

num = 0;

}

num++;

animate(picture,-num*600);

circle ++;

if (circle == list.children.length) {

circle = 0;

}

for (var i = 0;i<list.children.length;i++) {

list.children[i].className = '';

}

list.children[circle].className = 'current';

})

// 左侧点击事件

left.addEventListener('click',function () {

if (num==0) {

picture.style.left = -(picture.children.length-1)*600 +'px';

num = picture.children.length-1;

}

num--;

animate(picture,-num*600);

circle --;

if (circle < 0) {

circle = list.children.length-1;

}

for (var i = 0;i<list.children.length;i++) {

list.children[i].className = '';

}

list.children[circle].className = 'current';

})

var timer = setInterval(function () {

// 手动调用

right.click();

},1000);

</script>

</body>

</html>

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

以上是 js实现轮播图制作方法 的全部内容, 来源链接: utcz.com/p/220859.html

回到顶部