js轮播图有,移入移出事件,左右滑动事件功能

news2025/4/22 15:51:47

效果图:

具体代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    .banner {
        width: 100%;
        height: 500px;
        overflow: hidden;
        position: relative;
    }

    .tow {
        width: 600%;
        height: 500px;
        margin-left:0%;
        display: flex;
        display: relative;
        /* transition: 1s all ; */
    }

    .tow img {
        width: 100%;
        height: 100%;
    }

    .five {
        position: absolute;
        bottom: 0px;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        bottom: 0;
        border: 1px solid lightgray;

    }

    .five span {
        width: 15px;
        height: 15px;
        display: block;
        background-color: antiquewhite;
        border-radius: 50%;
        display: flex;



    }

    .but {
        width: 100%;
        height: 30px;
        position: absolute;
        border-radius: 50%;
        top: 37%;

        display: flex;
        justify-content: space-between;

    }

    .but span {
        display: none;
        background-color: aqua;
    }

    .banner:hover .but span {
        display: block;
    }
</style>
<body>
<div class="banner">
    <div class="tow">
        <img src="img/ou.jpg" alt="" class="mlShow">
        <img src="img/oui.jpg" alt="">
        <img src="img/tu.jpg" alt="">
        <img src="img/opp.jpg" alt="">
		<img src="img/iu.jpg" alt="" />
		<img src="img/yu.jpg" alt="" />
    </div>
    <div class="five"></div>
    <div class="but">
        <span>&lt;</span>
        <span class="one">&gt;</span>
    </div>
</div>
<script>
    let banner = document.getElementsByClassName('banner')[0];//获取所有内容的标签
    let tow = document.getElementsByClassName('tow')[0];//获取所有图片的标签
    let img = tow.children; //获取图片子元素
    let imgWidth = img[0].offsetWidth;//图片宽度自适应
    let five = document.getElementsByClassName('five')[0];//获取所有小圆点的标签
    let but = document.getElementsByClassName('but')[0];//获取所有按钮的标签
    let butItem = but.children;//获取按钮子元素
    let index = 0;//初始下标为零
    let times = setInterval(scrolls, 2000); //设置定时器

    // 动态生成小圆点
    for (let i = 0; i < img.length; i++) {
        let dot = document.createElement('span'); // 创建一个 span 元素
        dot.classList.add('dot'); // 添加 dot 类名
        five.appendChild(dot); // 将创建的小圆点添加到五个按钮的容器中
    }

    function scrolls() {  //设置轮播函数
        console.log(index);
        if (index < img.length - 1) {//判断当前页的长度,如果小于img图片的长度
            index++;  //自增至最后一张图片
            tow.style.marginLeft = -index * imgWidth + "px";
        } else { //不小于3变为0第一张
            index=0  //跳转至轮播初始位置
            tow.style.marginLeft = -index * imgWidth + "px";
        }
        console.log(index);
        // 修改小圆点颜色
        let span = five.children;
        for (let i = 0; i < span.length; i++) {//循环小圆点
            span[i].style.backgroundColor = "rgba(255, 255, 255, 0.6)"; //将其背景颜色变为白色
        }
        span[index].style.backgroundColor = "rgba(0, 0, 255, 0.6)";//图片轮播到第几张时把对应的小圆点变为蓝色
    }

    //鼠标移入
    banner.onmouseover = function() {
        clearInterval(times); //清除定时器
    }

    // 鼠标移出
    banner.onmouseout = function() {
        times = setInterval(scrolls, 2000);//开启定时器
        butItem[0].onclick = function() {//按钮绑定点击事件
            if (index > 0) {
                index--;
            } else if(index==0) {

                index = img.length - 1; //随后一张图片
            }
            tow.style.marginLeft = -index * imgWidth + "px";
            for (let i = 0; i < span.length; i++) {
                span[i].style.backgroundColor = "rgba(255, 255, 255, 0.6)";
            }
            span[index].style.backgroundColor = 'rgba(0, 0, 255, 0.6)';//同上
        }
    }
    butItem[1].onclick = scrolls; //向右点击调用轮播函数
</script>
</body>
</html>

具体的轮播可以根据需求进行调整;希望可以帮到大家;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1823951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML静态网页成品作业(HTML+CSS)—— 明星吴磊介绍网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…

【Tkinter界面】Canvas 图形绘制(02/5)

文章目录 一、说明二、几何时使用 Canvas 组件2.1 用法2.2 简单范例2.3 对象移动2.4 对象删除2.5 文字对象显示 三、画布和画布对象3.1 画布生成函数原型3.2 使用create_xxx()方法3.3 对参数**options的解释 一、说明 Canvas&#xff08;画布&#xff09;组件为 Tkinter 的图形…

shell脚本简单命令

shell脚本 脚本就是可运行代码的集合&#xff0c;脚本语言&#xff08;计算机语言&#xff09;脚本的特点&#xff1a;从上到下&#xff0c;按行执行。 python 脚本语言 格式更严谨 严格的执行锁进。也是从上到下按行执行。 shell脚本就是在shell环境&#xff08;/bin/bash&…

终于把AUC的计算方式搞懂了!

1. 横纵坐标 纵坐标&#xff1a;sensitivity或者TPR 横坐标&#xff1a;FPR 或者 1-Specificity 2. 计算方法 2.1 方法1 def get_roc_auc(y_true, y_score):"""正样本得分大于负样本得分的概率&#xff0c;需要遍历每个正样本和每个负样本1. 选取所有正样本与…

AGI 远不止 ChatGPT!一文入门 AGI 通识及应用开发

AI 大语言模型进入爆发阶段 2022 年 12 月 ChatGPT 突然爆火&#xff0c;原因是其表现出来的智能化已经远远突破了我们的常规认知。虽然其呈现在使用者面前仅仅只是一个简单的对话问答形式&#xff0c;但是它的内容化水平非常强大&#xff0c;甚至在某些方面已经超过人类了&am…

模型 POA行动

说明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。让目标凝聚伙伴&#xff0c;伙伴共创方法&#xff0c;加速实现愿景&#xff0c;可谓是行动力的“飞轮效应”。 1 POA行动模型的应用 1.1 POA模型在非营利组织&#xff08;NGO&#x…

如何确保数据跨域交换安全、合规、可追溯性?

数据跨域交换是指在不同的组织、系统或网络之间进行数据的传输和共享。随着数字经济的发展&#xff0c;数据跨域交换在促进数据流通和创新融合方面发挥着重要作用。然而&#xff0c;这一过程也面临着诸多挑战和风险&#xff0c;例如数据安全、合规性、完整性以及责任不清晰等问…

【Webpack】使用 Webpack 构建 Vue3+TS 项目

构建项目目录 tsc --init npm init -yshim.d.ts 文件是一个类型声明文件&#xff0c;用于告诉 TypeScript 编译器如何处理 Vue 的单文件组件&#xff08;SFC&#xff09;和其他自定义模块。为 Vue 的单文件组件和其他非 TypeScript 模块提供类型信息&#xff0c;以便在 TypeScr…

Dubbo3 服务原生支持 http 访问,兼具高性能与易用性

作者&#xff1a;刘军 作为一款 rpc 框架&#xff0c;Dubbo 的优势是后端服务的高性能的通信、面向接口的易用性&#xff0c;而它带来的弊端则是 rpc 接口的测试与前端流量接入成本较高&#xff0c;我们需要专门的工具或协议转换才能实现后端服务调用。这个现状在 Dubbo3 中得…

最新Sublime Text软件安装包分享(汉化版本)

Sublime Text 是一款广受欢迎的跨平台文本编辑器&#xff0c;专为代码、标记和散文编辑而设计。它以其简洁的用户界面、强大的功能和高性能而著称&#xff0c;深受开发者和写作者的喜爱。 一、下载地址 链接&#xff1a;https://pan.baidu.com/s/1kErSkvc7WnML7fljQZlcOg?pwdk…

[Algorithm][贪心][最长递增子序列][递增的三元子序列][最长连续递增序列][买卖股票的最佳时机][买卖股票的最佳时机Ⅱ]详细讲解

目录 1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.递增的三元子序列1.题目链接2.算法原理详解3.题目链接 3.最长连续递增序列1.题目链接2.算法原理详解3.代码实现 4.买卖股票的最佳时机1.题目链接2.算法原理详解3.代码实现 5.买卖股票的最佳时机 II1.题目链接2.算法…

vscode cmake c++ include 设置

在这里设置编译器路径&#xff0c;include路径等等。 一个奇怪的现象是同一项目放在VS中可以cmake生成&#xff0c;并正常运行&#xff0c;但是放在VSCODE中cmake生成时会报错&#xff0c;如iostream、limits等头文件找不到。当在VS中运行执行完成调试后&#xff0c;在运行VSC…

如何解决跨境传输常见的安全及效率问题?

在当今全球化的商业版图中&#xff0c;企业为了拓展国际市场和增强竞争力&#xff0c;跨境传输数据已成为一项不可或缺的业务活动。合格的数据跨境传输方案&#xff0c;应考虑以下要素&#xff1a; 法律合规性&#xff1a;确保方案符合所有相关国家的数据保护法律和国际法规&am…

长亭培训加复习安全产品类别

下面这个很重要参加hw时要问你用的安全产品就有这个 检测类型产品 偏审计 安全防御类型 EDR类似于杀毒软件 安全评估 任何东西都要经过这个机械勘察才能上线 安全管理平台 比较杂 比较集成 审计 漏扫 评估 合在这一个平台 也有可能只是管理 主机理解为一个电脑 安了终端插件…

【java计算机专业毕设】月度员工绩效考核管理系统java MySQL springboot vue maven代码源码 送文档

1项目功能 【java计算机专业毕业设计分享】月度员工绩效考核管理系统javaweb JDK1.8,MySQL8&#xff0c;IDEA&#xff0c;Navicat java MySQL 送文档 2项目介绍 系统功能&#xff1a; 房屋租赁系统包括管理员和用户和员工俩种角色。 管理员功能涵盖了丰富的管理模块&#xff0…

使用宝塔面板 将vue+node+mysql部署至云服务器

数据库部署 1. 导出 数据库 2. 进入宝塔面板 将数据库文件导入至宝塔面板数据库中 验证是否导入成功 点击phpMyAdmin 输入用户名密码 如果没有导入成功&#xff0c;可在此再导入一遍 前端项目部署 1. 将vue项目打包上传至文件 npm run build 打包成dist文件夹 压缩上传 …

【C++11】智能指针问题

文章目录 RAII一、auto_ptr二、unique_ptr三、shared_ptrshared_ptr的循环引用问题 四、weak_ptr总结 RAII RAII就是将资源交给一个对象管理&#xff0c;这个对象能进行正常的管理和释放资源。 一、auto_ptr auto_ptr的问题是&#xff1a;在拷贝构造和赋值重载时&#xff0c…

Vue39-组件的嵌套

一、嵌套的定义 二、嵌套示例 school组件中&#xff0c;嵌套student组件 局部注册&#xff0c;注册给谁&#xff0c;就在谁的结构里面写&#xff01; vue拿不到<student>组件标签&#xff01;&#xff01;&#xff01; 三、一人之下万人之上的app组件 或者容器里面不用…

飞速(FS)InfiniBand光模块和线缆指南

InfiniBand网络架构因其高速、低延迟和可扩展性优势&#xff0c;广泛应用于高性能计算&#xff08;HPC&#xff09;。飞速&#xff08;FS&#xff09;提供多样化的InfiniBand光模块和线缆&#xff0c;为客户提供高性能InfiniBand网络解决方案&#xff0c;以建立高效可靠的网络连…

如何保护云主机安全

在数字化时代&#xff0c;云服务器已成为企业数据存储、处理和传输的重要工具。然而&#xff0c;随着其应用的广泛和深入&#xff0c;云服务器也面临着越来越多的安全威胁。为了应对这些威胁&#xff0c;白名单技术应运而生&#xff0c;成为保护云服务器安全的重要手段。 首先&…