原生js轮播图--点击左右轮播几张图片

自己尝试用原生js写,但是比较麻烦,自己封装了my$方法,最后还是用了jquery

想法:
1.外面的盒子有一个可视区域,里面的盒子大,点击移动(运用了定位,每次点击left改变)
2.当到达一定条件时,点击事件不可用
3.给ul加过渡属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
    <style type="text/css">
        *{ margin: 0; padding: 0; }
        ul{ list-style: none; }
        a{ text-decoration: none; }
        #warpper{ width: 800px; height: 600px; margin: 20px auto;}
        .container{ width: 100%; height: 100%; overflow: hidden; position: relative; overflow-x: scroll; }
        .imgList{ width: 4000px; position: absolute; z-index: 5; left:0;transition: left 0.5s ease}
        .imgList>li{ float: left; width: 200px; height: 600px; padding-right:100px;}
        .imgList>li>img{ width: 100%; height: 100%; }

        .pre,.next{ position: absolute; top: 275px; background: rgba(220,220,220,0.7); padding: 10px 0; z-index: 100; opacity: 0.6; filter: alpha(opacity=60); }
        .pre:hover,.next:hover{ cursor: pointer; opacity: 1; filter: alpha(opacity=100); }
        .pre{ left: 10px; }
        .next{ right: 10px; }

        .dollList{ width:180px;  position: absolute; z-index: 10; bottom: 20px; left: 310px ; }
        .dollList li{ float: left; margin-right: 10px; }
        .dollList li.sec a{ background: orange; }
        .dollList li a{ width: 15px; height: 15px; background: rgba(230,230,230,0.6); border-radius: 50%; display: inline-block;  }
        .noneClick{
            cursor: not-allowed;pointer-events:none
        }
    </style>
</head>
<body>
    <div id="warpper">
        <div class="container">
            <!-- 图片区域 -->
            <ul class="imgList">
                <li><img src="./images/img1.jpg" alt=""></li>
                <li><img src="./images/img2.jpg" alt=""></li>
                <li><img src="./images/img3.jpg" alt=""></li>
                <li><img src="./images/img4.jpg" alt=""></li>
                <li><img src="./images/img5.jpg" alt=""></li>
            </ul>
            <!-- 左右切换图标 -->
            <img src="./images/img5.jpg" width="40px" height="60px" class="pre">
            <img src="./images/img5.jpg" width="40px" height="60px" class="next">
            <!-- 下方控制图片按钮 -->       
            <ul class="dollList">
                <li class="sec"><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
            </ul>
        </div> 
    </div>
</body>
<script type="text/javascript">
	function my$(str){
		return document.getElementsByClassName(str)[0];
	}
	//左点击事件
	my$("pre").addEventListener('click',function(){
		var num = 0;
        var left = parseInt($(".imgList").css("left"))
		//点击往上走一张图片
		if(left>=0){
			num=0;
		}else{
			num = left+300
		}	
		var str = num+'px'
		$(".imgList").css("left",str);
        addclass(str);
	})
	//右点击事件
	my$("next").addEventListener('click',function(event){
		var num = 0;
		var left = parseInt($(".imgList").css("left"))
        console.log(left);
		//点击往右走一张图片
		if(left<=-600){
            num = -600;
		}else{
			num = left-300
		}		
		var str = num+'px'
		$(".imgList").css("left",str);
        addclass(str);
	})
    function addclass(left){
        if(left>=0){
            $(".pre").addClass("noneClick");
            $(".next").removeClass("noneClick");
    }else if(left<=-600){
        $(".pre").removeClass("noneClick");
            $(".next").addClass("noneClick");
        }else{
            $(".next").removeClass("noneClick");
            $(".pre").removeClass("noneClick");
        }
    }
</script>
</html>
问题:点击后,左右箭头并没有加上类名noneClick,但是功能却实现了,可以禁止点击事件,但类名没有绑上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值