基于jQuery实现水平轮播效果

    技术2022-07-11  106

    效果图

    方法:使用动画效果,让第一幅图的宽度逐渐变为0px,然后将第一幅图添加至父元素末尾

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>标题</title> <link rel="stylesheet" href="../css/reset.css"> <script src="./jquery-3.4.1.min.js"></script> <style type="text/css"> #box{ width: 800px; height: 300px; margin: 200px auto; position: relative; overflow: hidden; } #box ul{ width: 3200px; height: 300px; position: absolute; top: 0px; left: -800px; } #box ul li{ width: 800px; height: 300px; float: left; } #box ul li img{ width: 800px; height: 300px;; } </style> <script> $(function(){ // 滚动播放函数 function gunDongBoFang(){ $("#box ul li:first").animate({width:"0px"}, 1000, function(){ $("#box ul").append($("#box ul li:first").width("800px")); }); }; // 定时器,每2秒执行一次 var time = setInterval(gunDongBoFang, 2000); // 鼠标移入#box元素中,停止定时器 $("#box").mouseenter(function(){ clearInterval(time); }); // 鼠标移出#box元素后,开始定时器 $("#box").mouseleave(function(){ // setInterval(gunDongBoFang, 1000); 错误写法,鼠标移入移出定时器会累加 //鼠标移出时,开始定时器,并将定时器赋值给time变量,而当鼠标再次移入时,则刚好删除上次的定时器,不会累加 time = setInterval(gunDongBoFang, 2000); }); }); </script> </head> <body> <div id="box"> <ul> <li> <a href="#"> <img src="https://www.51zxw.net/NewAn/UploadFiles/20200609/202006090520504133.jpg"> </a> </li> <li> <a href="#"> <img src="https://www.51zxw.net/NewAn/UploadFiles/20200608/202006080410588630.jpg"> </a> </li> <li> <a href="#"> <img src="https://www.51zxw.net/NewAn/UploadFiles/20200608/202006080408097382.jpg"> </a> </li> <li> <a href="#"> <img src="https://www.51zxw.net/NewAn/UploadFiles/20200624/202006240832286533.jpg"> </a> </li> </ul> </div> </body> </html>

    reset.css

    *{margin: 0; padding: 0; box-sizing: border-box;} body{font-size:16px; font-family:"微软雅黑"; color: #333;} b{font-weight: normal;} i{font-style: normal;} a, a:hover, a:active{text-decoration: none; color: #333;} input,textarea,select{outline: none;} img{border: none; vertical-align: middle;} li{list-style-type: none;} .fl{float: left;} .fr{float: right;} .cl{clear: both;} .clearfix::after{ content: ""; display: table; clear: both; }
    Processed: 0.011, SQL: 9