具体实现步骤:
1 创建一个外部div:outer 用来设置轮播图在网页上的位置并设置overflow: hidden将多余图片先隐藏
2 创建一个内部div:inner 用来存放图片并设置position: absolute以便之后通过设置left值来改变位置以显示图片
3 并且设置transition: all 1s可以使图片切换跟顺畅
4 在JS中创建一个对象数组imgCollection保存图片的src数据
5 然后在JS中动态创建img元素使用 var chil = document.createElement(‘img’)
6 并设置其属性
chil.setAttribute(‘src’, imgCollection[i].src)
chil.setAttribute(‘alt’, i)
chil.setAttribute(‘id’, i + 1)
7 然后将其添加为inner的子元素 par.appendChild(chil)
8 最后创建两个click函数来完成切换功能
1.html:
<div class="outer">
<div id="inner"></div>
<div class="controlLeft">
<i class="fa fa-arrow-left" onclick="changePrev()"></i>
</div>
<div class="controlRight">
<i class="fa fa-arrow-right" onclick="changeNext()"></i>
</div>
</div>
2.css:
* {
padding: 0;
margin: 0;
}
img {
width: 500px;
height: 300px;
float: left;
}
.outer {
overflow: hidden;
width: 500px;
height: 300px;
position: relative;
margin: 0 auto;
border-radius: 10px;
}
#inner {
width: 3000px;
position: absolute;
height: 300px;
left: 0;
top: 0;
transition: left 1s;
}
.controlLeft {
cursor: pointer;
color: gray;
position: absolute;
font-size: 30px;
top: 135px;
left: 0;
transition: all 0.5s;
}
.controlLeft:hover {
color: black;
}
.controlRight {
cursor: pointer;
color: gray;
position: absolute;
font-size: 30px;
top: 135px;
right: 0;
transition: all 0.5s;
}
.controlRight:hover {
color: black;
}
3.js:
var imgCollection = [
{
id: 1,
src: '../img/AsunaOne.jpg'
},
{
id: 2,
src: '../img/AsunaTwo.jpg'
},
{
id: 3,
src: '../img/AsunaThree.jpg'
},
{
id: 4,
src: '../img/AsunaFour.jpg'
}
] //设置图片数据为对象数组
window.onload = function() {
var par = document.getElementById('inner')
for (let i = 0; i < imgCollection.length; ++i) {
var chil = document.createElement('img')
chil.setAttribute('src', imgCollection[i].src)
chil.setAttribute('alt', i)
chil.setAttribute('id', i + 1)
par.appendChild(chil)
}
} //在页面加载前先将图片加载至inner盒子内
var cur = 1
var distance = 500
function changeNext() {
var inn = document.getElementById('inner')
cur++
if (cur == 5) {
cur = 1
inn.style.left = distance * (1 - cur) + 'px'
} else {
inn.style.left = distance * (1 - cur) + 'px'
}
} //切换下一张
function changePrev() {
var inn = document.getElementById('inner')
cur--
if (cur == 0) {
cur = 4
inn.style.left = distance * (1 - cur) + 'px'
} else {
inn.style.left = distance * (1 - cur) + 'px'
}
} //切换上一张