Lua777m 2023-04-18 12:40 采纳率: 100%
浏览 81
已结题

原生js实现用按钮操作图片轮播

问题:点击button1实现图片向左移动后,点击button2无法触发图片向右移动。
(程序中的图片请随便用找图片代替!)

<!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;
        }

        #block1{
            height:191px;
            width: 912px;
            border: 1px solid #000;
            margin: 50px auto;
            font-size: 0px;
            overflow: hidden;
        }
        #block1 ul{
            width: 2000px;
            position: relative;
            
        }
        #block1 ul li{
            display: inline-block;            
        }
    </style>
</head>
<body>
    <div id="block1">
        <ul id="ul1">
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group1.png" alt=""></li>
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group2.png" alt=""></li>
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group3.png" alt=""></li>
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group4.png" alt=""></li>
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group5.png" alt=""></li>
            <li><img src="xiaomuweb/xiaomupic/assets/Mask group6.png" alt=""></li>
        </ul>
    </div>
    
    
        <input type="button" id="toL" value="ToLeft">
        <input type="button" id="toR" value="ToRight">
    

    <script>
        var block1=document.getElementById('block1');
        var ul1=document.getElementById('ul1');

        ul1.innerHTML+=ul1.innerHTML;// 复制多一遍所有的li

        var left=0;
        var right=912;
        var timer;

        var bntL=document.getElementById('toL');
        var bntR=document.getElementById('toR');

        function moveL(){
            clearInterval(timer);

            timer=setInterval(function(){
                left-=12;

                if(left<=-912) left=0;

                ul1.style.left=left+'px';
            },25)

        }//向左移动

        function moveR(){
            clearInterval(timer);

            timer=setInterval(function(){
                right-=12

                if(right<=0) right=912;

                ul1.style.right=right+'px';
            },25)

        }//向右移动

        bntL.onclick=moveL;//触发向左移动的函数
        bntR.onclick=moveR;//触发向右移动的函数


        


    </script>
</body>
</html>

  • 写回答

7条回答 默认 最新

  • 乘风xs 2023-04-18 13:38
    关注

    出现这个问题的原因是,你在点击向左按钮后,就给ul的style里面添加了一个“left”的值,然后你再去按向右的按钮时,虽然这个时候ul的style里面right值在发生变化,但是它的left值是固定的,而在相对定位中,left的值比right值具有更高的优先级,所以在moveR函数中单单修改right值是不够的,要把left值删掉,改成这样:

            function moveR(){
                clearInterval(timer);
    
                timer=setInterval(function(){
                    right-=12
    
                    if(right<=0) right=912;
                    ul1.style = `right: ${right}px`; // 直接修改style,把left值删掉
                },25)
    
            }//向右移动
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助