轮播图-简单易懂

一些JS基础、CSS基础、HTML基础即可!!!!!!

功能介绍:

1、每隔四秒切换一张图片(效果为:左滑切换);

2、点击左右箭头可手动切换图片;

3、每显示一张图片时,对应的小圆点突出显示。

思路:

1、利用长图进行平移实现切换效果;

2、我们通过修改长图这个div元素的不同状态的class属性值进而改变元素的样式

3、实现连贯流畅的效果:

 

从上图可以看出我们,红色方框为我们正常显示的区域

为了让小伙伴理解的更加透彻

我暂且还未将长图的父级元素的overflow属性的属性值设为:hidden;

(上面说到的属性不必担心,将代码复制即可用!)

 那么,想要长图拥有连贯的切换效果,我们需要在最后加上一张和第一张图相同的图片

原理:

当我们切换到图四时,我们需要下一张连贯播放为图一

但是,毕竟是长图,无法像环形圈那样连续旋转!

我们只得先让图四切换到图五来代替切换图一的效果

我们只需要再切换到图五后,立马跳转到图一,从而得到连贯的闭环切换效果!

CSS部分:其中红色CSS为定义的长图的五种class属性值,也就是我们想要的五种状态!

<style type="text/css">
        *{
            margin: 0 auto;
        }
        #bigdiv{
            margin-top:100px;
            width:500px;
            height: 350px;
            position: relative;
            overflow: hidden;
        }
        #centerdiv{
            width:2500px;
            height: inherit;
            position: absolute;
        }
        .xioadiv{
            width:500px;
            height: inherit;
            float: left;
            text-align: center;
            line-height: 310px;
        }
        .centerdiv{
            left:0;
            transition:left 0.3s;
        }
        
        .centerdiv00{
            left:0;
        }
        .centerdiv01{
            left:-500px;
        }
        .centerdiv02{
            left:-1000px;
        }
        .centerdiv03{
            left:-1500px;
        }
        .centerdiv04{
            left:-2000px;
        }

        .leftOrRight{
            width:50px;
            heigth:50px;
            position:relative;
            z-index: 2;
            top: 180px;
            transition:opacity 0.1s;
            opacity: 0.5;
        }
        .leftOrRight:hover{opacity: 1;
        }
        .buttomdiv{
            width:100px;
            htigth:90px;
            background-color: red;
            float: left;
            margin-top:80px;
        }
        .radiusdiv{
            width:100px;
            height: 14px;
            position: absolute;
            left: 190px;
            top: 320px;
        }
        .xiaoradius{
            width:10px;
            height: 10px;
            border: solid 2px white;
            border-radius: 50%;
            float: left;
            margin-left: 10px;
            opacity: 0.5;
            background-color: white;
        }
        .imgs{
            width:inherit;
            height: inherit;
        }
    </style>

HTML的body部分:

<div id="bigdiv">
        <img id="leftmove" src="img/left.png" style="left:5px;" class="leftOrRight"/>
        <img id="rightmove" src="img/right.png"  style="left:390px;" class="leftOrRight"/>
        
        <div id="centerdiv" class="centerdiv">
            <div id="xiaodiv01" class="xioadiv" style="background-color: blue;">
                <img src="img/111.png" class="imgs"/>
            </div>
            <div id="xiaodiv02" class="xioadiv" style="background-color: red;">
                <img src="img/112.png"  class="imgs"/>
            </div>
            <div id="xiaodiv03" class="xioadiv" style="background-color: green;">
                <img src="img/113.png"  class="imgs"/>
            </div>
            <div id="xiaodiv04" class="xioadiv" style="background-color:cadetblue;">
                <img src="img/114.png"  class="imgs"/>
            </div>
            <div id="xiaodiv05" class="xioadiv" style="background-color: blue;">
                <img src="img/111.png"  class="imgs"/>
            </div>
        </div>
        
        <div class="radiusdiv">
            <div id="1" class="xiaoradius"></div>
            <div id="2" class="xiaoradius"></div>
            <div id="3" class="xiaoradius"></div>
            <div id="4" class="xiaoradius"></div>
        </div>
        
    </div>

javascript部分:

<script type="text/javascript">
        var centerDiv = document.getElementById("centerdiv");//获取id为:centerdiv的元素,也就是我们自己定义的长条div
        var locationNum = 0;//定义初始的状态值为:0
        var radiusArr = document.getElementsByClassName("xiaoradius");//获取四个小圆点元素
        
        
        
        torF();//一开始先调用一下torF()函数,确保第一个小圆点突出显示
        //定义一个小圆点随图片切换而对应突出显示的函数  ↓
        function torF (){
            for(var i = 0 ; i < radiusArr.length ; i++){
                radiusArr[i].style.opacity = 0.5;
            }
            radiusArr[locationNum].style.opacity = 1;
        }
        
        
        //此部分为定时切换图片的JS代码
        var moveOk = setInterval(changeDiv,4000);//每隔4秒(4000毫秒)运行一次切换状态的函数
        //切换状态的函数
        function changeDiv(){
             if(locationNum == -1){
                centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv00";
                locationNum++;
                torF();
            }else if(locationNum == 0 ){
                centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv01";
                locationNum++;
                torF();
            }
            else if(locationNum == 1 ){
                centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv02";
                locationNum++;
                torF();
            }
            else if(locationNum == 2 ){
                centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv03";
                locationNum++;
                torF();
            }else{
                centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv04";
                setTimeout(returnFirst,400);
                locationNum = 0 ;
                torF();
            }
        };
        //状态5跳转到状态1
        function returnFirst(){
            centerDiv.style.transition = "left 0s";
            centerDiv.className = "centerdiv00";
            
        }
        
        
        
        //下面为左右箭头单击事件的JS代码
        var leftmove =document.getElementById("leftmove");//获取左箭头按钮元素
        var rightmove =document.getElementById("rightmove");//获取右箭头按钮元素
        //给右箭头绑定单击事件
        rightmove.onclick = function(){
            changeDiv();
        };
        //给左箭头绑定单机事件
        leftmove.onclick = function(){
            if(locationNum == 0 ){
                centerDiv.style.transition = "left 0s";
                centerDiv.className = "centerdiv04";
                setTimeout(lastdiv,1);
            }else{
                locationNum -=2;
                changeDiv();
            }
        };
        function lastdiv (){
            centerDiv.style.transition = "left 0.3s";
                centerDiv.className = "centerdiv03";
                locationNum = 3;
                torF();
        }

//James·ZZZ:感觉不错的小伙伴记得关注以下哟!舒畅也行
    </script>

素材:

   ​​                 ​​​​​​​        

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

James•ZZZ

你的鼓励就是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值