菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育
标题:
前端-张悕可-20230523
[打印本页]
作者:
小胖
时间:
2023-5-24 17:39
标题:
前端-张悕可-20230523
let imgData = [
{ id: 1, src: 'imgs/01.jpg', title: '这是文字' },
{ id: 2, src: 'imgs/02.jpg', title: '这是文字' },
{ id: 3, src: 'imgs/03.jpg', title: '这是文字' },
{ id: 4, src: 'imgs/04.png', title: '这是文字' },
{ id: 5, src: 'imgs/05.png', title: '这是文字' },
]
// 1.创建ul中li和ol中li
const box = document.querySelector('.box')
box.style.overflow = 'hidden'
const ul = box.querySelector('ul')
const ol = box.querySelector('ol')
let imgStr = ''
imgData.forEach(item => {
imgStr += `
<li>
<a href="javascript:;"><img src="${item.src}" alt=""></a>
</li>
`
})
ul.innerHTML = imgStr
let circleStr = ''
imgData.forEach(item => {
circleStr += `
<li><a href="javascript:;"></a></li>
`
})
ol.innerHTML = circleStr
// 2.鼠标移入箭头显示,离开箭头隐藏
const prev = box.children[2]
const next = box.children[3]
// 3.点击右箭头图片正向切换
const circle = [...ol.children]
circle[0].classList.add('current')
const imgWidth = document.querySelector('ul li img').offsetWidth
let num = 0
let temp = 0
let flag = true
ul.appendChild(ul.children[0].cloneNode(true))
next.addEventListener('click', () => {
if (flag) {
flag = false
if (num == ul.children.length - 1) {
ul.style.left = 0
num = 0
}
num++
temp++
if (temp == circle.length) {
temp = 0
}
animate(ul, -num * imgWidth, function () {
flag = true
})
document.querySelector('ol li.current').classList.remove('current')
circle[temp].classList.add('current')
}
})
// 4.点击左箭头图片方向切换
prev.addEventListener('click', () => {
if (flag) {
flag = false
if (num == 0) {
num = ul.children.length - 1
ul.style.left = -num * imgWidth + 'px'
}
num--
animate(ul, -num * imgWidth, function () {
flag = true
})
if (temp == 0) {
temp = circle.length
}
temp--
document.querySelector('ol li.current').classList.remove('current')
circle[temp].classList.add('current')
}
})
// 5.点击小圆点切换图片,改变当前小圆点样式
circle.forEach((item, index) => {
item.style.cursor = 'pointer'
item.addEventListener('click', () => {
document.querySelector('ol li.current').classList.remove('current')
item.classList.add('current')
temp = index
num = index
animate(ul, -temp * imgWidth)
})
})
// 6.自动播放
let timer = setInterval(() => {
next.click()
}, 2000)
box.addEventListener('mouseenter', () => {
prev.style.display = 'block'
next.style.display = 'block'
clearInterval(timer)
timer = null
})
box.addEventListener('mouseleave', () => {
prev.style.display = 'none'
next.style.display = 'none'
timer = setInterval(() => {
next.click()
}, 2000)
})
欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/)
Powered by Discuz! X3.4