HTML/Html-Javascript/轮播图/index-类.html
2023-05-01 19:37:40 +08:00

174 lines
4.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#app {
box-sizing: border-box;
width: 820px;
height: 380px;
background-color: pink;
margin: 100px auto;
overflow: hidden;
}
.top {
height: 340px;
position: relative;
}
.box-content {
display: flex;
position: absolute;
left: 0;
/* 轮播 */
transition: .4s;
/* 过度 */
}
.bottom {
display: flex;
height: 40px;
line-height: 40px;
color: #424242;
font-size: 14px;
}
.bottom .item {
width: 20%;
background-color: #E3E2E2;
text-align: center;
cursor: pointer;
}
.bottom .item.active {
color: #cea861;
border-bottom: solid 2px #cea861;
}
</style>
</head>
<body>
<div id="app">
<div class="top">
<div class="box-content">
<img src="https://ossweb-img.qq.com/upload/adw/image/977/20220107/e88d7dae2f753763c940d13ef795af56.jpeg"
alt="">
<img src="https://ossweb-img.qq.com/upload/adw/image/977/20220107/647cf82ec515d2e3baef10c4de5f2495.jpeg"
alt="">
<img src="https://ossweb-img.qq.com/upload/adw/image/977/20220107/47a44be9c9a38ef77f2f7c2a349c90be.jpeg"
alt="">
<img src="https://ossweb-img.qq.com/upload/adw/image/977/20220101/b0f2ef7d103992e703941e99a4108010.jpeg"
alt="">
<img src="https://ossweb-img.qq.com/upload/adw/image/977/20211104/023cfa33cf08b513ae430d89740b56f6.jpeg"
alt="">
</div>
</div>
<div class="bottom">
<div class="item active">2022 新赛季新征程</div>
<div class="item">2022 新赛季新征程</div>
<div class="item">2022 新赛季新征程</div>
<div class="item">2022 新赛季新征程</div>
<div class="item">2022 新赛季新征程</div>
</div>
</div>
<script>
class Lbt {
constructor() {
this._indexNew = 0;
this.time = null;
// dom
this.item = document.querySelectorAll(".bottom .item");
this.boxContent = document.querySelector(".box-content");
this.app = document.querySelector("#app");
// 添加点击事件
this.item.forEach((el, i) => {
el.onclick = () => {
// 更改新旗帜
this.indexNew = i;
}
})
// 自动轮播
this.zdlb();
// 移除定时器
this.app.onmouseenter = () => {
clearInterval(this.time);
}
// 加上定时器
this.app.onmouseleave = () => {
this.zdlb();
}
// 被监听 属性 不要放在最前头
this.indexNew = 0;
}
// 视图
view = function (i, lodI) {
// 旧的样式得删掉
this.item[lodI].classList.remove("active");
// 添加样式
this.item[i].classList.add("active");
// 让图片动
this.boxContent.style.left = `${820 * i * -1}px`;
}
// 自动轮播方法
zdlb = () => {
this.time = setInterval(() => {
let i = this.indexNew;
i++;
// 边界值处理
if (i >= this.item.length) {
i = 0;
}
// 更改新旗帜
this.indexNew = i;
}, 1000);
}
set indexNew(val) {
// 更改新旗帜
this.view(val, this._indexNew);
this._indexNew = val;
}
get indexNew() {
return this._indexNew;
}
}
let l = new Lbt();
// // 旗帜
// let indexNew = 0; // 现在
// let indexLod = indexNew; // 过去
</script>
</body>
</html>