DOM6-3跑马灯轮播图的疑问

来源:1-1 课程简介

applefishfish

2022-01-14 09:42:27

跟着老师写了一下这个code但是还是有很多疑问,请老师解答,谢谢


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        *{

            margin:0;

            padding:0;

        }

        .carousel{

            width: 500px;

            height: 300px;

            border: 1px solid #000;

            margin: 50px auto;

            position: relative;

            overflow: hidden;

        }

        .carousel ul {

            list-style: none;

            width: 6000px;

            position: relative;

            left:0px;

           /* tansition属性这个没看明白,eft 1s ease 0s什么意思,为什么要加这个transition属性*/

            transition:left 1s ease 0s



        }

        .carousel ul li {

            float: left;

        }

        .carousel ul li img {

            width:500px;

            height:300px;


        }

        .carousel .leftbtn {

            position: absolute;

            left:20px;

            top:50%;

            margin-top: -25px;

            width:50px;

            height:50px;

            background-color: aquamarine;

            border-radius: 50%;



        }

        .carousel .rightbtn {

            position: absolute;

            top: 50%;

            margin-top: -25px;

            right:20px;


            width:50px;

            height:50px;

            background-color: orange;

            border-radius: 50%;



        }




    </style>

</head>

<body>

<div class ="carousel">

    <ul id="list">

        <li><img src = "./images/banner1.jpg" ></li>


        <li><img src = "./images/banner2.jpg"></li>


        <li><img src = "./images/banner3.jpg" ></li>


        <li><img src = "./images/banner4.jpg" ></li>


        <li><img src = "./images/banner5.jpg" ></li>


    </ul>

    <button href="javascript:;" class="leftbtn" id="leftbtn"></button>

    <button href="javascript:;" class="rightbtn" id="rightbtn"></button>

</div>

<script>

   var leftbtn = document.getElementById('leftbtn');

   var rightbtn= document.getElementById('rightbtn');

   var list= document.getElementById('list');

   var cloneli = list.firstElementChild.cloneNode(true);

   list.appendChild(cloneli);

   var idx = 0;

   rightbtn.onclick = function (){

       list.style.transition = 'left .5s ease 0s';

       //idx ++是什么意思

       idx ++;

       if (idx > 4) {

           setTimeout(function () {

               list.style.transition ='none';

               list.style.left = 0;

               idx = 0;

           }, 500);

       }

       //不懂,list.style.color = orange是不是说list颜色是橘色, 那么这个list.style.left = left +'px';什么意思,尤其left +'px'没明白.老师又改成了list.style.left = -idx * 500 +'px';也没看明白,应该是style属性在JS中不清晰,能讲解一下吗?

       list.style.left = -idx * 500 +'px';

   };

//这里设置了左边按钮,但是我跟着老师写code结果页面 不运行了,但是不知道错在哪里

   leftbtn.onclick = function(){

       if(idx == 0){

           list.style.transition = 'none';

           //下面这一行没有理解什么意思

           list.style.left = -6 * 500 +'px'


           setTimerout(function(){

               //下面这这段没有理解什么意思

               list.style.transition = 'left .5s ease 0s';

               idx=5;

               list.style.left = -idx * 500 + 'px';


           },0);


       }else{

           idx --;

           list.style.left = -idx * 500 + 'px';

       }


   }




</script>


</body>

</html>


写回答

1回答

好帮手慕小李

2022-01-14

同学你好,解答如下:

1、transition: left 1s ease 0s; 这句话中,各个属性含义如下:
transition:用来设置过渡效果
left:作用于left属性
1s:设置过渡效果的时间为1秒
ease:设置过渡效果是ease
0s:设置过渡效果何时开始

例:如让一个宽为100px的盒子,当鼠标移入到盒子上时,通过过渡效果1秒钟后变成宽为300px的盒子。

https://img.mukewang.com/climg/61e0ddf109bc974406030418.jpg

同学尝试一下上面代码的效果,是不是可以发现有了过渡效果后,效果就不再那么生硬了。这里视频中老师加的transition: left 1s ease 0s;是为了给banner图向左向右移动时添加上过渡的效果。

2、idx++是控制当前我们可以看到的是哪张图片,当点击右侧按钮时,图片应移动到下一张图片,idx相等于计数器,每点一次都把当前可以看到的banner+1(下一张banner)同理idx--(上一张banner)。

3、list.style.color = orange; 这句话的意思是,给list元素的style中的color样式设置成orange。

4、list.style.left = left +'px';这句话的意思是,给list元素的style中的left样式设置成left + 'px'。其中的left+'px'是因为left值是个数值,例:list.style.left = 100 +'px';如果不加'px'那么是不生效的。

5、点击左侧按钮没有生效的原因是setTimeout拼写错了。如下:

https://img.mukewang.com/climg/61e0e0c10958e37205260110.jpg

6、list.style.left = -6(这个值同学想想对不对) * 500 + 'px';这句话的意思是,给list元素的style中的left样式设置成-6 * 500(每张图片的宽度)+'px'(单位)。

7、当点击左侧按钮时,如果idx已经到了第一张时,那么开启一个延时定时器,0秒后(立即执行不等待)直接给list.style.transition重新赋值(这里的重新赋值的原因是当用户点击左侧按钮,当idx=0时我们取消了list.style.transition中的值)。idx = 5;是指当用户点击左侧按钮时,当idx已经是第一张图片。那么当用户再次点击左侧按钮时,图片直接跳转到最后一张。list.style.left = -idx * 500 + 'px';的意思是当idx已经是第一张图片,当用户再次点击左侧按钮时,让list的left也变成最后一张图片的位置。

同学尝试理解一下,祝学习愉快!

0

0 学习 · 17877 问题

查看课程