js首页轮播
未知
2020-12-08 09:58:36
0
问题描述:

实现如下图的轮播效果。

轮播

解决办法:
    <style type="text/css">
         /*标题样式*/
       .app {
            width: 100%;
            text-align: center;
        }
        
        .app .scroll {
            position: relative;
            display: inline-block;
            height: 460px;
            width: 100%;

        }
        
        .app .scroll .img {
            display: none;
            width: 100%;
            height: 460px;
        }
        
        .app .scroll .current {
            display: block;
        }
        
        .app .scroll .lf {
            position: absolute;
            top: 50%;
            left: 10px;
            background-image: url('images/arrow.png');
            background-position: -83px 0;
            width: 41px;
            height: 69px;
            cursor: pointer;
            transform: translateY(-50%);
        }
        

        .app .scroll .lr {
            position: absolute;
            top: 50%;
            right: 10px;
            background-image: url('images/arrow.png');
            background-position: -123px 0;
            width: 41px;
            height: 69px;
            cursor: pointer;
            transform: translateY(-50%);
        }
        
        .app .dots {
               margin-top: -33px;
            z-index: 999;
            position: relative;
        }
        
        .app .dots>span {
            display: inline-block;
            box-sizing: border-box;
            width: 11px;
            height: 11px;
            border: 3px solid red;
            border-radius: 15px;
            cursor: pointer;
        }
        
        .app .dots>span:not(:last-child) {
            margin-right: 5px;
        }
        
        /* 小圆点的颜色 */
        .app .dots .square {
            background: #f46;
        }
    </style>

<div class="container-fluid">
            <div class="app">
                <div class="scroll">
                    <!-- 图片展示 -->
                    <img src="images/banner1.jpg" alt="scrollImage" class="img current">
                    <img src="images/banner1.jpg" alt="scrollImage" class="img">
                    <img src="images/banner.jpg" alt="scrollImage" class="img">
                    <img src="images/banner1.jpg" alt="scrollImage" class="img">
                    <img src="images/banner.jpg" alt="scrollImage" class="img">
        
                    <!-- 左右箭头的展示 -->
                    <div class="lf"></div>
                    <div class="lr"></div>
                    
                    <!-- 小圆点展示 -->
                    <div class="dots">
                        <span class="square"></span>
                        <span></span>
                        <span></span>
                        <span></span>
                        <span></span>
                    </div>
                </div>
            </div>
    </div>


<script type="text/javascript">
        
        window.addEventListener('load', function() {
 
            var leftArrow = this.document.querySelector('.lf');
            var rightArrow = this.document.querySelector('.lr');
        
            // 鼠标移动到左右箭头的位置更换图片 有灰色背景的图片
            leftArrow.addEventListener('mouseenter', function() {
                this.style.backgroundPosition = '0 0';
            });
        
            leftArrow.addEventListener('mouseleave', function() {
                this.style.backgroundPosition = '-83px 0';
            });
        
            rightArrow.addEventListener('mouseenter', function() {
                this.style.backgroundPosition = '-42px 0';
            });
        
            rightArrow.addEventListener('mouseleave', function() {
                this.style.backgroundPosition = '-123px 0';
            });
        
            // 获取图片 和 小点
            var imgs = this.document.querySelectorAll('.img');
            var dots = this.document.querySelector('.dots').querySelectorAll('span');
        
            // 给图片设置index 属性,好判断当前的图片是哪一张
            for (let i = 0; i < imgs.length; i++) {
                imgs[i].setAttribute('data-index', i);
            }
        
            // 获取当前图片 和 图片的index(数组下标)
            var current = this.document.querySelector('.current');
            var currentIndex = current.getAttribute('data-index');
        
            // 左箭头的点击事件,点击了就返回前一张图片
            // 如果当前图片为第一张那么需要更换到最后一张图片也就是第四张
            leftArrow.addEventListener('click', function() {
                if (currentIndex > 0) {
                    imgs[currentIndex].classList.remove('current');
                    dots[currentIndex].classList.remove('square');
                    imgs[--currentIndex].classList.add('current');
                    dots[currentIndex].classList.add('square');
                } else {
                    imgs[currentIndex].classList.remove('current');
                    dots[currentIndex].classList.remove('square');
                    currentIndex = 4;
                    imgs[currentIndex].classList.add('current');
                    dots[currentIndex].classList.add('square');
                }
            });
        
            // 点击右箭头下一张图片切换
            // 如果当前为第五张图片,那么切换回第一张图片
            rightArrow.addEventListener('click', changeImage);
        
            var timer = this.setInterval(changeImage, 8000);
        
            function changeImage() {
                if (currentIndex < 4) {
                    imgs[currentIndex].classList.remove('current');
                    dots[currentIndex].classList.remove('square');
                    imgs[++currentIndex].classList.add('current');
                    dots[currentIndex].classList.add('square');
                } else {
                    imgs[currentIndex].classList.remove('current');
                    dots[currentIndex].classList.remove('square');
                    currentIndex = 0;
                    imgs[currentIndex].classList.add('current');
                    dots[currentIndex].classList.add('square');
                }
            };
        
            // 小圆点的点击事件
            for (let k = 0; k < dots.length; k++) {
                dots[k].setAttribute('data-index', k);
                dots[k].addEventListener('click', function() {
                    var index = this.getAttribute('data-index');
                    if (index != currentIndex) {
                        imgs[currentIndex].classList.remove('current');
                        dots[currentIndex].classList.remove('square');
                        imgs[index].classList.add('current');
                        dots[index].classList.add('square');
                        currentIndex = index;
                    }
        
                })
            }
        
        });
    </script>

相关内容

探索 PHP sg15 在...
摘要: 本文探讨了PHP的sg15项目在Web开发中的应用,包括...
2026-02-11 01:23:34
PHP与YAML集成:实现...
本文介绍了PHP与YAML集成的实现方式,包括读取和写入YAML文...
2026-02-03 01:23:45
探索PHP与YAML的互操...
本文探讨了PHP与YAML的互操作性,介绍了YAML的数据格式及P...
2026-02-02 01:23:35
使用PHP处理YAML数据...
本文介绍了使用PHP处理YAML数据的技巧和策略,包括解析、操作Y...
2026-02-01 01:23:40
深入理解MySQL视图的工...
摘要: MySQL视图是一种虚拟表,通过封装SQL查询定义。它不...
2026-01-31 01:23:34
MySQL视图与普通表的区...
MySQL视图与普通表:虚拟与实际的存储方式,视图只可查询不可修改...
2026-01-30 01:23:36

热门资讯

downloadable fo... downloadable font: Glyph bbox was incorrect怎么处理
腾讯邮箱qq邮箱使用SMTP开... 第一步:登录 https://mail.qq.com/ 登录后点击设置---账号 第二步:点击【开启...
layui tooltip提示... 在layui表单中,我们想把一个标签做出提示,以标明这个表单元素是做什么有什么功能时,就可以用上提...
layui中出错Unexpec... layui中出错Unexpected identifier
解决Phpcms V9手机门户... 第一步:开启手机网站。位置:模块 》手机门户 》 添加手机站点,如果模块里面没有手机门户,那么就在模...
JavaScript获取当前协... JavaScript获取当前协议,域名,路径
JS实现html打印功能,打印... !DOCTYPE htmlhtmlhead meta charset=utf-8 title打印功能...
bootstrap 图片文字居... 问题描述: 让图片和文字居中显示。 解决办法: !-- style--.navbars img{ m...
bootstrap图片排版布局 问题描述: 在使用bootstrap的时候,出现了这样的问题。 排版对不齐。 解决办法: 通过上图发...