原生js实现简单轮播的淡入淡出效果

实现这种淡入淡出的轮播关键在于css的一种设置  首先它不能像传统的轮播显示隐藏 或者左右浮动

他应该让其固定定位使其重叠在一起  达到这种效果  然后设置c3动画属性 transition:1s;

具体代码如下 请君欣赏

 

 1 * {
 2   margin: 0;
 3   padding: 0;
 4   list-style: none;
 5 }
 6 
 7 body {
 8   width: 100%;
 9   height: 100%;
10   background-color: #666;
11 }
12 
13 .container {
14   width: 650px;
15   height: 236px;
16   margin: 100px auto;
17   position: relative;
18 }
19 
20 .container ul {
21   width: 650px;
22   height: 236px;
23 }
24 
25 .container ul li {
26   width: 100%;
27   height: 100%;
28   position: absolute;
29   left: 0;
30   top: 0;
31   transition: 2s;
32   opacity: 0;
33 }
34 
35 .container ul li img {
36   width: 100%;
37   height: 100%;
38 }
39 
40 .container ul li:nth-child(1) {
41   opacity: 100;
42 }
43 
44 .container ol {
45   position: absolute;
46   left: 50%;
47   bottom: 10px;
48   transform: translate(-50%, 0);
49 }
50 
51 .container ol li {
52   float: left;
53   margin: 0 10px;
54 }
55 
56 .container ol li a {
57   width: 15px;
58   height: 15px;
59   background-color: #666;
60   display: inline-block;
61   border-radius: 50%;
62 }
63 
64 .container ol a.active {
65   background: yellow;
66 }

HTML部分

 1 <body>
 2     <div class="container">
 3         <ul>
 4             <li><img src="./img/1.jpg" alt=""></li>
 5             <li><img src="./img/2.jpg" alt=""></li>
 6             <li><img src="./img/3.jpg" alt=""></li>
 7             <li><img src="./img/4.jpg" alt=""></li>
 8             <li><img src="./img/5.jpg" alt=""></li>
 9             <li><img src="./img/6.jpg" alt=""></li>
10         </ul>
11         <ol>
12             <li><a  class="active" href="#1"></a></li>
13             <li><a href="#1"></a></li>
14             <li><a href="#1"></a></li>
15             <li><a href="#1"></a></li>
16             <li><a href="#1"></a></li>
17             <li><a href="#1"></a></li>
18         </ol>
19     </div>
20     <script src="./js/index.js"></script>
21     <script>
22         new Container();
23     </script>
24 </body>

JS部分

 1 class Container{
 2     constructor(){
 3         this.oli=document.querySelectorAll("ul li");
 4         this.ball=document.querySelectorAll("a");
 5         this.box=document.querySelector(".container");
 6         this.timer=null;
 7         this.count=0;
 8         this.init()
 9     }
10     init(){
11         this.autoplay();
12         this.click();
13         this.mouse()
14     }
15     autoplay(){
16         this.timer=setInterval(()=>{
17             this.count++;
18             if(this.count==this.oli.length){
19                 this.count=0;
20             }
21             this.change(this.count);
22         },2000)
23     }
24     change(index){
25         this.oli.forEach((item,i)=>{
26             item.style.opacity=0;
27            
28             this.ball[i].classList.remove("active");
29            
30            
31         });
32     
33          this.oli[index].style.opacity=1;
34        
35         this.ball[index].classList.add("active")
36     }
37     click(){
38         //小圆点的点击事件
39         this.ball.forEach((item,index)=>{
40             item.οnclick=()=>{
41                 this.count=index
42                 this.change(index)
43             }
44         })
45     }
46     mouse(){
47         //鼠标移入停止定时器 离开继续
48         this.box.οnmοuseοver=()=>{
49             clearInterval(this.timer)
50         }
51         this.box.οnmοuseοut=()=>{
52             this.autoplay()
53         }
54     }
55 }

 

转载于:https://www.cnblogs.com/cq1715584439/p/10553605.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个用HTML,CSS和JavaScript编写的简单轮播图,其中图片切换时包含淡入淡出效果实现: HTML: ```html <div class="slideshow-container"> <div class="slide fade"> <img src="img1.jpg"> </div> <div class="slide fade"> <img src="img2.jpg"> </div> <div class="slide fade"> <img src="img3.jpg"> </div> <a class="prev" onclick="plusSlides(-1)">❮</a> <a class="next" onclick="plusSlides(1)">❯</a> </div> ``` CSS: ```css .slideshow-container { position: relative; margin: auto; } .slide { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .fade { animation-name: fade; animation-duration: 1.5s; } @keyframes fade { from { opacity: 0; } to { opacity: 1; } } .prev, .next { position: absolute; top: 50%; width: auto; margin-top: -22px; padding: 16px; color: white; font-weight: bold; font-size: 18px; transition: 0.6s ease; border-radius: 0 3px 3px 0; user-select: none; } .next { right: 0; border-radius: 3px 0 0 3px; } .prev:hover, .next:hover { background-color: rgba(0, 0, 0, 0.8); } ``` JavaScript: ```javascript var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("slide"); var dots = document.getElementsByClassName("dot"); if (n > slides.length) { slideIndex = 1 } if (n < 1) { slideIndex = slides.length } for (i = 0; i < slides.length; i++) { slides[i].classList.remove("fade"); slides[i].style.display = "none"; } slides[slideIndex - 1].style.display = "block"; slides[slideIndex - 1].classList.add("fade"); } ``` 这个轮播图有一个包含淡入淡出效果的动画,通过CSS中的“fade”类实现。在JavaScript中,“showSlides”函数用于显示当前幻灯片,它将所有幻灯片的显示方式设置为“none”,然后将要显示的幻灯片的显示方式设置为“block”,并将其“fade”类添加到其类列表中,以触发淡入淡出效果。同时,“plusSlides”函数和“currentSlide”函数用于向前或向后移动幻灯片,或直接转到指定幻灯片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值