麻烦老师解答
来源:2-4 代码编写(2)
Cap卡卡卡普
2022-05-16 17:22:04
相关代码:
(function () {
//得到元素
var carousel_list = document.getElementById('carousel_list');
var left_btn = document.getElementById('left_btn');
var right_btn = document.getElementById('right_btn');
var circle_ol = document.getElementById('circle_ol');
var circle_lis = circle_ol.getElementsByTagName('li')
//克隆第一张li
var clone_li = carousel_list.firstElementChild.cloneNode(true);
//上树
carousel_list.appendChild(clone_li);
//当前显示的图片序号,从0开始的
var idx = 0;
//右按钮事件监听
right_btn.onclick = function () {
//加上过渡
carousel_list.style.transition = 'transform .5s ease 0s';
//右按钮+
idx++;
//拉动
carousel_list.style.transform = 'translate(' + -16.66 * idx + '%)';
//判断是否是最后一张,如果是最后一张,就要瞬间移动回来
if (idx > 4) {
setTimeout(function () {
//去掉过渡
carousel_list.style.transition = 'none';
//删除transform属性
carousel_list.style.transform = 'none';
//全局的图片序号变为0
idx = 0;
}, 500);
}
//设置小圆点
setCircles();
}
//左按钮的事件监听
left_btn.onclick = function () {
//左按钮要先写if语句,而不是idx--
if (idx == 0) {
//瞬间拉动到最后
carousel_list.style.transition = 'none';
carousel_list.style.transform = 'translate(' + -16.66 * 5 + '%)';
//改变idx的值
idx = 4;
//延时0毫秒再加上过渡
setTimeout(function () {
//加上过渡
carousel_list.style.transition = 'transform .5s ease 0s';
//动画
carousel_list.style.transform = 'translate(' + -16.66 * 4 + '%)';
}, 0);
} else {
idx--;
carousel_list.style.transform = 'translate(' + -16.66 * idx + '%)';
}
//设置小圆点
setCircles();
}
//设置小圆点的current,序号为idx的小圆点才有current的类名
function setCircles() {
//遍历0、1、2、3、4,每遍历一个数字都要和idx比一下,如果相等,就把这项设置类名为current,否则去掉类名
for (var i = 0; i <= 4; i++) {
if (i == idx % 5) {
circle_lis[i].className = 'current';
} else {
circle_lis[i].className = '';
}
}
}
})();问题描述:
麻烦老师看下问题出在哪小圆点不能变化
1回答
好帮手慕慕子
2022-05-16
同学你好,是指点击左右按钮切换图片时,小圆点没有变化吗?如果是的话,那么猜测可能是设置小圆点激活样式的代码书写有误
建议检查下css文件中,针对current样式设置的代码中,选择器书写是否有误,源码如下:

如果不是的话,可以详细描述具体是什么问题,并将你的html和css代码全部粘贴过来,老师帮助测试下。
祝学习愉快~
相似问题