左按钮有问题 我听不懂老师说的 一会是-- 一会又删掉 一会又++ 一会又是纯数字
<!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>
* {
margin: 0;
padding: 0;
}
.carousel {
position: relative;
width: 650px;
height: 360px;
border: 1px solid #000;
margin: 50px auto;
overflow: hidden;
}
.carousel ul {
list-style: none;
width: 5000px;
position: relative;
left: 0px;
transition: left 0.6s ease 0s;
}
.carousel ul li {
float: left;
}
.carousel .leftbtn {
position: absolute;
left: 20px;
top: 50%;
width: 50px;
height: 50px;
margin-top: -25px;
border-radius: 50%;
background-color: #eee;
}
.carousel .rightbtn {
position: absolute;
right: 20px;
top: 50%;
width: 50px;
height: 50px;
margin-top: -25px;
border-radius: 50%;
background-color: #eee;
}
</style>
</head>
<body>
<div id="carousel" class="carousel">
<ul id="list">
<li><img src="./images/beijing0.jpg" alt="" /></li>
<li><img src="./images/beijing1.jpg" alt="" /></li>
<li><img src="./images/beijing2.jpg" alt="" /></li>
<li><img src="./images/beijing3.jpg" alt="" /></li>
<li><img src="./images/beijing4.jpg" alt="" /></li>
</ul>
<a href="JavaScript:;" class="leftbtn" id="leftbtn"></a>
<a href="JavaScript:;" class="rightbtn" id="rightbtn"></a>
<script>
// 得到按钮和ul-ul整体进行运动
var leftbtn = document.getElementById("leftbtn");
var rightbtn = document.getElementById("rightbtn");
var list = document.getElementById("list");
var cloneLi = list.firstElementChild.cloneNode(true); //深克隆
list.appendChild(cloneLi);
// 当前ul显示到第几张了,从0开始数
var idx = 0;
// 右按钮事件监听
rightbtn.onclick = function () {
list.style.transition = "left .6s ease 0s";
idx++;
if (idx > 3) {
setTimeout(function () {
list.style.transition = "none";
list.style.left = 0;
idx = 0;
}, 600);
}
list.style.left = -idx * 650 + "px";
};
// 左按钮事件监听
leftbtn.onclick = function () {
if (idx == 0) {
list.style.transition = "none";
list.style.left = -5 * 650 + "px";
setTimeout(function () {
list.style.transition = "left .6s ease 0s";
}, 0);
idx = 4;
list.style.left = -idx * 650 + "px";
}
};
</script>
</div>
</body>
</html>15
收起
正在回答 回答被采纳积分+1
1回答
樱桃小胖子
2022-09-18 15:58:49
同学你好,左右按钮代码中的相关问题如下:


老师帮你给代码写了注释,可以结合注释再理解一下:
<script>
// 得到按钮和ul-ul整体进行运动
var leftbtn = document.getElementById("leftbtn");
var rightbtn = document.getElementById("rightbtn");
var list = document.getElementById("list");
var cloneLi = list.firstElementChild.cloneNode(true); //深克隆
list.appendChild(cloneLi);
// 当前ul显示到第几张了,从0开始数
var idx = 0;
// 右按钮事件监听
rightbtn.onclick = function () {
// 上一轮结尾时清除了过渡,所以这里需要重新添加过渡效果
list.style.transition = "left .6s ease 0s";
// 图片自增
idx++;
// 设置判断条件
// if (idx > 3) {
if (idx > 4) {
// 设置一个延时器,延时器的功能:瞬间将ul拉回0的位置,恢复idx初始值0,自动完成以上操作,不需要手动触发
setTimeout(function () {
// 取消掉过渡,让图片从克隆来的最后一张“瞬间”回到第一张
list.style.transition = "none";
list.style.left = 0;
idx = 0;
}, 600);
}
// 切换下一张图片
list.style.left = -idx * 650 + "px";
};
// 左按钮事件监听
leftbtn.onclick = function () {
// 判断是不是第0张,如果是,就要瞬间用克隆的替换真的
if (idx == 0) {
// 取消掉过渡,因为要瞬间移动
list.style.transition = "none";
// 直接瞬间移动到最后的克隆的片上
list.style.left = -5 * 650 + "px";
// 设置一个延时器,这个延时器的延时事件可以是0毫秒,功能:瞬间恢复前面取消掉的过渡。
setTimeout(function () {
// 加过渡
list.style.transition = "left .6s ease 0s";
// 来到克隆的图片后不做停留,直接过渡到最后一张真图片上,使其看起来的效果就是从第一张到最后一张真图片无缝衔接
idx = 4;
list.style.left = -idx * 650 + "px";
}, 0);
} else {
// 自减
idx--;
// 切换下一张图片
list.style.left = -idx * 650 + 'px';
}
};
</script>如果还有不懂的,可以具体描述是哪句代码不理解哦,祝学习愉快!

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星