带圆形进度条按钮的banner图

清除样式代码:

1 * { box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; -o-box-sizing: border-box;  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
2 body, li, ul { margin: 0; padding: 0; }
3 ul { list-style: none; }
4 img, a img { font-size: 0; border: 0; vertical-align: middle; }

html代码:

 1 <head>
 2     <meta charset="UTF-8">
 3     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 4     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 5     <title>banner</title>
 6     <style>
 7         .container {position:relative;padding:43px 0 0;width:100%;height:530px;}
 8         .banner-img {position:absolute;left:0;top:0;width:100%;height:530px;}
 9         .banner-img li {width:100%;height:530px;position:absolute;display:none;}
10         .banner-img li:first-child {display:block;}
11         .banner-img img {width:100%;height:100%;}
12         .container .banner-circle img {width:32px;height:32px;z-index:99;cursor:pointer;}
13         .container .banner-circle span {margin:0px 9px;color:#FFFFFF;font-size:12px;vertical-align:middle;}
14         .container .banner-circle {position:absolute;right:20.3%;bottom:47px;z-index:97;}
15         .container .banner-circle .outer {position:absolute;top:0;left:0;z-index:96;}
16         .container .banner-circle .circle-button {position:relative;width:34px;height:34px;cursor:pointer;}
17         .container .banner-circle .wrapper {position:absolute;top:-1px;width:17px;height:34px;font-size:0;overflow:hidden;}
18         .container .banner-circle .wrapper-l {left:-1px;}
19         .container .banner-circle .wrapper-r {right:1px;}
20         .banner-circle .circleProgress {width:34px;height:34px;position:absolute;top:0;border-top:3px solid #1a8cff;border-bottom:3px solid #1a8cff;transform:rotate(-180deg);}
21         .banner-circle .circle-button .left-circle {border-left:3px solid #1a8cff;border-radius:50%;clip:rect(0 17px 34px 0);animation-delay:2s;animation-iteration-count:1;}
22         .banner-circle .circle-button .right-circle {border-right:3px solid #1a8cff;border-radius:50%;left:-17px;clip:rect(0 34px 34px 17px);animation-iteration-count:1;animation-fill-mode:forwards;}
23         .load-animation {animation:circleLoad 2s linear infinite;} 
24         @keyframes circleLoad {
25             0% {transform:rotate(-180deg);}
26             100% {transform:rotate(0deg);}
27         }
28     </style>
29 </head>
30 
31 <body>
32     <div class="container">
33         <ul class="banner-img">
34             <li><a href="#"><img src="../images/lb1.png" alt=""></a></li>
35             <li><a href="#"><img src="../images/lb2.png" alt=""></a></li>
36             <li><a href="#"><img src="../images/lb3.png" alt=""></a></li>
37             <li><a href="#"><img src="../images/lb4.png" alt=""></a></li>
38         </ul>
39         <div class="banner-circle">
40             <div class="outer arrow-left">
41                 <div class="circle-button">
42                     <div class="wrapper wrapper-l">
43                         <div class="circleProgress left-circle"></div>
44                     </div>
45                     <div class="wrapper wrapper-r">
46                         <div class="circleProgress right-circle"></div>
47                     </div>
48                 </div>
49             </div>
50             <img src="../images/left-page.png" alt="" class="arrow-left">
51             <span class="arrow-mid">1/4</span>
52             <img src="../images/right-page.png" alt="" class="arrow-right">
53         </div>
54     </div>
55 </body>

js代码:

 1 // banner图
 2 var index = 0;
 3 var timer;
 4 $(document).on("mouseenter", ".banner-circle img", function () {   // 鼠标悬停时有一个白色透明背景的效果,这里用新的图片替换
 5     let newSrc = $(this).attr("src").replace("page", "page-hover");  
 6     $(this).attr("src", newSrc);
 7 }).on("mouseleave", ".banner-circle img", function () {
 8     let newSrc = $(this).attr("src").replace("page-hover", "page");
 9     $(this).attr("src", newSrc);
10 }).on("mouseenter", ".outer", function () {
11     let newSrc = $(this).next().attr("src").replace("page", "page-hover");
12     $(this).next().attr("src", newSrc);
13 }).on("mouseleave", ".outer", function () {
14     let newSrc = $(this).next().attr("src").replace("page-hover", "page");
15     $(this).next().attr("src", newSrc);
16 }).on("click", ".arrow-right", function () {   // 点击向右切换按钮
17     bannerToRight();
18     resetCircleLoading();  // 每次切换后让loading进度从头开始
19 }).on("click", ".arrow-left", function () {    // 点击向左切换按钮
20     bannerToLeft();
21     resetCircleLoading();
22 })
23 bannerTimeOut();
24 // 向前切换
25 function bannerToLeft() {
26     index--;
27     if (index < 0) {
28         index = $(".banner-img li").length - 1;
29     }
30     $(".banner-img li").eq(index).fadeIn(1000).siblings().fadeOut(1000);
31     $(".arrow-mid").text(`${index+1}/${$(".banner-img li").length}`)  // 修改按钮中间数字
32     clearInterval(timer);  // 每次切换时清除之前的定时器
33 }
34 // 向后切换
35 function bannerToRight() {
36     index++;
37     if (index >= $('.banner-img li').length) {
38         index = 0;
39     }
40     $(".banner-img li").eq(index).fadeIn(1000).siblings().fadeOut(1000);
41     $(".arrow-mid").text(`${index+1}/${$(".banner-img li").length}`);
42     clearInterval(timer);
43 }
44 // 切换按钮loading效果
45 function bannerTimeOut() {
46     if (timer) {
47         clearInterval(timer);
48     }
49     $(".circle-button").find(".circleProgress").addClass("load-animation")
50     timer = setInterval(() => {
51         $(".circle-button").find(".circleProgress").removeClass("load-animation")
52         bannerToRight()  // 定时器时间到了后自动切换到下一张
53         bannerTimeOut()  // 切换完成后再次调用loading定时器(即函数自己)
54     }, 4000);
55 }
56 // 重置loading效果
57 function resetCircleLoading() {
58     $(".circle-button").find(".circleProgress").removeClass("load-animation")
59     setTimeout(() => {
60         bannerTimeOut()
61     }, 100);
62 }

效果如下:

猜你喜欢

转载自www.cnblogs.com/cnlisiyiii-stu/p/12055204.html