js轮播图

一、要求

1.鼠标不在图片上方时,进行自动轮播,并目左右箭头不会显示当鼠标放在图片上方时,停止轮播,并且左右箭头会显示;
2.图片切换之后,图片中下方的小圆点会同时进行切换,并且点击相应的小圆点可以切换到相应的图片上;
3点击左右箭头可以进行左右图片的切换
4.图片上需有介绍的文字,会随图片切换一起进行切换

二、实验原理

  1. 通过利用计时器,让图片一直向左边移动,到达临界点的时候,返回到第一张的位置即可完成
  2. 还利用鼠标事件,当鼠标移入的时候,显示左右左右跳转按键
  3. 再次利用for循环找到图片所在位置,从而进一步找到位置

三、效果图

轮播图

四、代码

	<!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>
	        *{
	            padding: 0%;
	            margin: 0;
	            list-style: none;
	            text-decoration: none;
	        }
	        .box{
	            width: 1440px;
	            height: 1080px;
	            margin: 100px auto;
	            box-shadow: 0 2px 10px rgba(0,0,0,.15);
	            overflow: hidden;
	            position: relative;
	        }
	        #imglist{
	            width: 14400px;
	            height: 1080px;
	        }
	        #imglist li{
	            height: 1080px;
	            width: 1440px;
	            float: left;
	            
	        }
	        
	        #btnlist{
	            position: absolute;
	            left: 1000px;
	            top: 1030px;
	        }
	        #btnlist>li{
	            float: left;
	            width: 40px;
	            height: 40px;
	            border-radius: 50%;
	            color: aqua;
	            font-size: 15px;
	            text-align: center;
	            background-color: #fff;
	            line-height: 40px;
	            margin-left: 8px;
	            cursor: pointer;
	        }
	        #piner button{
	            width: 150px;
	            height: 150px;
	            background-color: #999;
	            color: black;
	            position: absolute;
	            top: 48%;
	            opacity: 50%;
	            font-size: 35px;
	            cursor: pointer;
	            display: none;
	        }
	        #piner button:hover{
	            background-color: rgba(4, 195, 248, 0.906);
	        }
	        button:first-child{
	            left: -10px;
	            border-radius: 0 50% 50% 0;
	        }
	        button:nth-child(2) {
	            left: 1300px;
	            border-radius: 50% 0 0 50%;
	        }
	        
	    </style>
	</head>
	<body>
	    <div class="box">
	        <ul id="imglist">
	            <li><img src="./微信图片.1.jpg" alt=""></li>
	            <li><img src="./微信图片.2.jpg" alt=""></li>
	            <li><img src="./微信图片.3.jpg" alt=""></li>
	            <li><img src="./微信图片.4.jpg" alt=""></li>
	            <li><img src="./微信图片.5.jpg" alt=""></li>
	            <li><img src="./微信图片.6.jpg" alt=""></li>
	            <li><img src="./微信图片.7.jpg" alt=""></li>
	            <li><img src="./微信图片.8.jpg" alt=""></li>
	            <li><img src="./微信图片.9.jpg" alt=""></li>
	            <li><img src="./微信图片.1.jpg" alt=""></li>
	        </ul>
	        <ul id="btnlist">
	            <li>1</li>
	            <li>2</li>
	            <li>3</li>
	            <li>4</li>
	            <li>5</li>
	            <li>6</li>
	            <li>7</li>
	            <li>8</li>
	            <li>9</li>
	        </ul>
	        <ul id="piner">
	            <button id="btnL"><</button>
	            <button id="btnR">></button>
	        </ul>
	    </div>
	    <script>
	        var opiner = document.querySelector("#piner")
	        var oimglist = document.getElementById('imglist').getElementsByTagName("li")
	        var obtnlist = document.getElementById('btnlist').getElementsByTagName("li")
	        //初始化图片的位置于左侧顶端
	        var left = 0;
	        var timer;
	        imglist.style.marginLeft = left+"px"
	        //定一个函数让图片动起来
	        run()
	        function run(){
	            //设这条件让图片滚动不停
	            if(left <= -12960){
	                left=0;
	                imglist.style.marginLeft = left+"px"
	            }
	            //调用函数让其图片位置发生改变交换图片
	            changeImg()
	            left -= 10;
	             //当交换一张图片的时候就停止一秒
	             var n = (left % 1440 ==0)? 1000 : 10
	            
	             var m=Math.floor(-left/1440);
	            changeicon(m)
	            
	            timer = setTimeout(run,n)
	        }
	        function changeImg(){
	            imglist.style.marginLeft = left+"px"
	        }
	        function changeicon(m){
	            for(var i = 0; i<obtnlist.length;i++){
	                obtnlist[i].style.backgroundColor = ""
	            }
	            obtnlist[m].style.backgroundColor = "red"
	        }
	        for(var i = 0 ; i<oimglist.length; i++){
	            (function(i){
	                oimglist[i].onmousemove = function(){
	                    clearTimeout(timer);
	                    left = i*-1440
	                    changeImg()
	                    changeicon(i)
	                    btnL.style.display = "block"
	                    btnR.style.display = "block"
	                }
	                oimglist[i].onmouseout = function(){
	                    run()
	                    btnL.style.display = "none"
	                    btnR.style.display = "none"
	                }
	                
	            })(i)
	        }
	        for(var i = 0 ; i<obtnlist.length; i++){
	            (function(i){
	                obtnlist[i].onmousemove = function(){
	                    clearTimeout(timer);
	                    left = i*-1440
	                    changeImg()
	                    changeicon(i)
	                }
	                obtnlist[i].onmouseout = function(){
	                    run()
	                }
	            })(i)
	        }    
	    </script>
	</body>
	</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值