没事写着玩的轮播器

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title></title>
	<style>
		*{
			margin:0;
			padding:0;
		}
		li{
			list-style-type: none;
		}
		#scroll{
			position: relative;
			overflow:hidden;
		}
		#scroll>ul{
			width:500%;
			height:300px;
		}
		#scroll>ul>li{
			width:20%;
			height:100%;
			display: inline-block;
			float:left;
		}
		#scroll>ul>li:nth-child(1){
			background:red;
		}
		#scroll>ul>li:nth-child(2){
			background:yellow;
		}
		#scroll>ul>li:nth-child(3){
			background:green;
		}
		#scroll>ul>li:nth-child(4){
			background:gray;
		}
		#scroll>ul>li:nth-child(5){
			background:orange;
		}

		#scroll>#left,#scroll>#right{
			font-size:50px;
			position: fixed;
			cursor: pointer;
		}
		#scroll>#left{
			top:100px;
			left:50px;
		}
		#scroll>#right{
			top:100px;
			right:50px;
		}
	</style>
</head>
<body>
	<div id="scroll">
		<span id="left"><</span>
		<ul>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
		</ul>
		<span id="right">></span>
	</div>
</body>

   <script>
		var div = document.getElementById("scroll");
		var left = document.getElementById("left");
		var right = document.getElementById("right");
		var li  = div.querySelectorAll("ul li");
		var lock = true;
		let sleep = 10;//步长
		var innerWidth = window.innerWidth;
		
		left.onclick = function(){
			if(lock){
				lock = false;
				let liLength = li.length;
				if(div.scrollLeft / innerWidth == 0){
					let sleep2 = sleep * liLength;
					let index = 0;
					let returnLast = setInterval(()=>{
						 index += sleep2;
						 console.log(div.scrollLeft)
						 div.scrollLeft += sleep2;
						if(index >= innerWidth * liLength - 1){
							clearInterval(returnLast);
							lock = true;
						}
					},1)
				}else{
					move("left");
				}
			}
		}
		
		right.onclick = function(){
			if(lock){
				lock = false;
				let liLength = li.length;
				if(div.scrollLeft / innerWidth == liLength - 1){
					let sleep2 = sleep * liLength;
					let index = div.scrollLeft;
					let returnFirst = setInterval(()=>{
						index -= sleep2;
						div.scrollLeft -= sleep2;
						if(index <= 0){
							clearInterval(returnFirst);
							lock = true;
						}
					},1)
				}else{
					move("right");
				}
			}
		}
		
		function move(state){
			if(!state) throw new Error("请传入参数");
			let index = 0;
			if(state == "right"){
				let rightInterVal = setInterval(()=>{
					dir("right",rightInterVal);
				},1)
			}
			
			if(state == "left"){
				let leftInterVal = setInterval(()=>{
					dir("left",leftInterVal);
				},1)
			}
			
			
			function dir(dirState,fn){
				var thisSleep = sleep;
				index += thisSleep;
				
				if(index > innerWidth){
					thisSleep += innerWidth - index;  //-8
				}
				
				if(dirState == "left"){
					div.scrollLeft-= thisSleep;
				}else if(dirState == "right"){
					div.scrollLeft+= thisSleep;
				}

				if(index >= innerWidth){
					clearInterval(fn);
					lock = true;
				}
			}
		}
		
		
		setInterval(()=>{
			simulateClick(right);  //模拟事件点击
		},5000)
		
      function simulateClick(element) { // 模拟 浏览器的鼠标点击事件
        const event = new MouseEvent('click', {
          view: window,
          bubbles: true,
          cancelable: true
        });
        element.dispatchEvent(event);      
      }
		
   </script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值