JS 原生手写轮播图

简介: JS 原生手写轮播图

只是实现了原生JS实现轮播图的逻辑和具体实现代码,css样式并未进行美化


实现了以下功能

(1) 点击容器container下方小圆点可以进行切换


(2) 点击左右的按钮可以进行切换


(3) 自动轮播图片


(4) 鼠标放上去暂停定时器,鼠标移出重新开启定时器


具体代码实现如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <style>
            * {
                padding: 0;
                margin: 0;
                box-sizing: border-box;
            }
            body {
                margin: 300px;
            }
            .container {
                width: 600px;
                height: 300px;
                position: relative;
            }
            .content-list {
                width: 600px;
                height: 300px;
                position: relative;
                transition: all 0.9s;
            }
            .item {
                width: 100%;
                height: 100%;
                list-style: none;
                position: absolute;
                left: 0;
                top: 0;
                opacity: 0;
            }
            .item:nth-child(1) {
                background-color: red;
            }
            .item:nth-child(2) {
                background-color: green;
            }
            .item:nth-child(3) {
                background-color: blue;
            }
            .item:nth-child(4) {
                background-color: black;
            }
            .active {
                opacity: 1;
            }
            .order {
                position: absolute;
                left: 50%;
                transform: translateX(-50%);
                bottom: 10px;
                display: flex;
            }
            .item1 {
                width: 20px;
                height: 20px;
                margin-right: 10px;
                border-radius: 50%;
                background-color: white;
                list-style: none;
            }
            .item1Active {
                background: purple;
            }
            button {
                width: 20px;
                height: 30px;
            }
            .showBtn {
                display: block;
            }
            .hideBtn {
                display: none;
            }
            #leftBtn {
                position: absolute;
                left: 10px;
                top: 50%;
                transform: translateY(-50%);
            }
            #rightBtn {
                position: absolute;
                right: 10px;
                top: 50%;
                transform: translateY(-50%);
            }
        </style>
    </head>
    <body>
        <div class="container">
            <ul class="content-list">
                <li class="item active"></li>
                <li class="item"></li>
                <li class="item"></li>
                <li class="item"></li>
            </ul>
            <ul class="order">
                <li class="item1 item1Active">1</li>
                <li class="item1">2</li>
                <li class="item1">3</li>
                <li class="item1">4</li>
            </ul>
            <button id="leftBtn" class="hideBtn"><</button>
            <button id="rightBtn" class="hideBtn">></button>
        </div>
        <script>
            let container = document.querySelector('.container');
            let items = document.querySelectorAll('.item');
            let item1s = document.querySelectorAll('.item1');
            let leftBtn = document.querySelector('#leftBtn');
            let rightBtn = document.querySelector('#rightBtn');
            // 当前索引index
            let index = 0;
            function changeIndex() {
                for (let i = 0; i < items.length; i++) {
                    items[i].classList.remove('active');
                    item1s[i].classList.remove('item1Active');
                }
                items[index].classList.add('active');
                item1s[index].classList.add('item1Active');
            }
            function goLeft() {
                if (index > 0) {
                    index--;
                } else {
                    index = 3;
                }
                changeIndex();
            }
            function goRight() {
                if (index < 3) {
                    index++;
                } else {
                    index = 0;
                }
                changeIndex();
            }
            // 给左按钮和右按钮绑定点击事件,达到轮播图切换的效果
            leftBtn.addEventListener('click', goLeft);
            rightBtn.addEventListener('click', goRight);
            // 给底部小圆点增加自定义属性index,标记为索引,方便为小圆点绑定点击事件
            for (let i = 0; i < item1s.length; i++) {
                item1s[i].addEventListener('click', function () {
                    index = i;
                    changeIndex();
                });
            }
            // 声明定时器,达到轮播图自动向后切换的效果
            let timer;
            timer = setInterval(() => {
                goRight();
            }, 2000);
            // 鼠标移到当前容器触发的事件,两个按钮显示,关闭定时器
            container.addEventListener('mouseover', function () {
                leftBtn.className = 'showBtn';
                rightBtn.className = 'showBtn';
                // 暂停定时器
                clearInterval(timer);
            });
            // 鼠标离开当前容器触发的事件,两个按钮隐藏,重新开启定时器
            container.addEventListener('mouseleave', function () {
                leftBtn.className = 'hideBtn';
                rightBtn.className = 'hideBtn';
                // 再次打开定时器
                timer = setInterval(() => {
                    goRight();
                }, 2000);
            });
        </script>
    </body>
</html>

达到的效果图如下

目录
相关文章
|
2月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
45 3
|
3月前
|
JavaScript
时尚简洁的js轮播图特效插件
这是一款时尚简洁的js轮播图特效插件。该轮播图采用es6语法制作,底部带缩略图和描述信息。图片和描述信息在切换时同步滑动。
|
6月前
|
JavaScript 前端开发
js轮播图练习
文章介绍了如何使用HTML、CSS和JavaScript创建一个简单的轮播图效果。通过`img`标签展示图片,并通过点击下方的点(`span`标签)切换图片。文章提供了完整的HTML结构、CSS样式和JavaScript代码,以及图片的展示和轮播图的效果图。
js轮播图练习
|
5月前
|
前端开发
js-基础轮播图制作
js-基础轮播图制作
44 7
|
5月前
|
JavaScript 前端开发
js轮播图有左右箭头和小点
js轮播图有左右箭头和小点
46 1
|
6月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
83 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
6月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
7月前
|
JavaScript
js轮播图制作
js轮播图制作
50 1
|
7月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
59 0
|
7月前
|
JavaScript 前端开发 API
从零开始学表单操作,jQuery 与原生 JavaScript 完全指南,带你轻松掌握网页交互关键!
【8月更文挑战第31天】在网页开发中,表单是实现用户互动的关键元素。无论是收集信息、提交数据还是验证输入,都需要对表单进行有效操作。本文档介绍了如何使用原生 JavaScript 和 jQuery 操作表单,包括获取表单元素、读写表单值、处理表单提交及验证等核心功能。jQuery 提供了更简洁的语法和更好的兼容性,但原生 JavaScript 在性能上有优势。选择合适的方法取决于项目需求和个人偏好。下面通过具体示例展示了两种方式的操作方法。
58 0

热门文章

最新文章