JS实现简单的轮播图

JS实现简单的轮播图

js用面向过程的方法实现简单的轮播图

先写好简单的html布局;
正常轮播图所要实现的功能有一下几个:
1.banner图的自动切换;
2.通过左右按钮来切换banner图;
3.通过banner图下方的小圆点来切换banner图;
在这里插入图片描述
然后在使用CSS对页面进行布局:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
css样式因为时间问题,写的可能有点繁琐,给为小伙伴在阅读或者使用的时候可以自己精简一下。

因为在日常网页中,banner图通常都是用来展示某些高热度东西,对网页开发方来说他们是更倾向于访问者可以通过banner图来了解banner图中所展示的东西,所以我们需要将banner图写在超链接中。
因为本人是入门一个月,外加英语比较挫,所以ID名这些起的不是很好,初次写贴,请各位多多包涵。

JS代码:

主要思路:

  1. 先将HTML中的每个元素获取到JS中,有的元素是通过ID获取的,有的元素是通过元素名获取的,通过ID获取的元素可以对元素直接进行调用,通过元素名获取的元素,我们得到的值他是一个数组,我们要通过数组的下标对他进行访问;
  2. 我自己是通过元素ID加元素名来获取的,轮播图的功能实现是通过不断的来操作数组的index来实现的。也是初次尝试些Markdown这样的东西,描述的可能不是很清楚,如果有像我一样的初学者,有疑惑的地方可以找本人探讨,如果有小伙伴发现该文档中的错误,也可以告诉本人,不胜感激。

下来先看代码:

  function ById(id) {
        return document.getElementById(id);
    }
    let time=null;
    index=0;
    let oBn=ById("banner").getElementsByTagName("div");
    let oSp=ById("cycle").getElementsByTagName("span");
    let oMain=ById("main");
    let oPrev=ById("prev");
    let oNext=ById("next");
    function autoplay(){
        time=setInterval(function(){
            index++;
            if(index>=3){
                index=0;
            }
            changeImg();
        },3000)
    }
    function changeImg() {
        for(let i=0;i<oBn.length;i++){
            oBn[i].className="";
            oBn[i].style.display="none";
            oSp[i].className='';
        }
        oBn[index].style.display="block";
        oSp[index].className="active";
    }
    oMain.onmouseover=function(){
        clearInterval(time);
    }
    oMain.onmouseout=function(){
        autoplay();
        changeImg();
    }
    oNext.onclick=function(){
        index++;
        if(index>=3){
            index=0;
        }
        changeImg();
    }
    oPrev.onclick=function(){
        index--;
        if (index<0){
            index=2;
        }
        changeImg();
    }
    for(let i=0;i<3;i++){
        oSp[i].id=i;
        oSp[i].onclick=function () {
            index=this.id;
            changeImg();
        }
    }
    autoplay();
    changeImg();

天啦撸,才发现Markdown最常用的功能,原来可以直接放代码块,此处有一个贱贱的表情无法导入,原谅我是一个刚入门一个月的小白吧,嘿嘿。

js刚开始的function ById()是为了方便期间,将获取HTML元素的方法封装在一个函数里,这样每次在获取HTML元素的时候可以直接拿来调用,很方便;

 function autoplay(){
        time=setInterval(function(){
            index++;
            if(index>=3){
                index=0;
            }
            changeImg();
        },3000)
    }
上面为banner图每隔3s中切换一次的实现方法,用一个循环定时器来实现它;


    function changeImg() {
        for(let i=0;i<oBn.length;i++){
            oBn[i].className="";
            oBn[i].style.display="none";
            oSp[i].className='';
        }
        oBn[index].style.display="block";
        oSp[index].className="active";
    }
    因为要根据index来控制div的显示和隐藏的以及小圆点的颜色的,所以先通过遍历将div的所有类名的清空,当后面用到某种时间时,在给某个div给一个oBn[index].style.display="block"样式来显示该图片。
    后面就不一一分析了。
 

马上凌晨一点了,就不写下去了,明天还要上课,如果明天有时间,我会把用面向对象的方法来实现轮播图的方法也写在下面,有需要的小伙伴可以看一看。我也是一个刚入门一个月的小白,如果有那位小伙伴发现代码的问题或者别的问题,可以给我指出,万分感谢。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值