麻烦老师解答

来源: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样式设置的代码中,选择器书写是否有误,源码如下:

https://img.mukewang.com/climg/62821b8e09dffac006440321.jpg

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

祝学习愉快~

0
hap卡卡卡普
hp>是这里的问题,已解决,谢谢老师

h022-05-16
共1条回复

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程