js制作简单的轮播图

2023-11-19

实现原理

首先定义一个div,设置width和height,然后在这个div里面再定义一个div2,该div的宽度为父div的宽度的n倍,其中n表示图片的张数,在这个div2里面放置需要进行轮播的所有图片,设置每张图片的宽度为一个最外层父类div的宽度,高度都是相同的


然后使用js定义一个轮播的函数,每指定时间执行一次轮播函数,通过使用js提供的时间片来实现。轮播函数的思路为:在js外部定义一个全局变量remain,初始化值为0,即表示当前的图片的索引,然后在轮播函数里面对remain变量进行自增,再通过remain来设置要到达的图片的left偏移量,在这里需要对remain进行溢出判断


最后在最外层div元素里面再次定义一个与div2同级的div21,用于定义点击的圆形按钮。并设置点击事件,为了点击方便,在每个圆形按钮标签中定义一个data-index属性,指定所点击对应的图片的索引位置。在这里,圆心按钮标签我们使用span标签,然后通过设置它的border和border-radius来画出圆形按钮,在按钮事件函数中,同样是通过remain来设置要到达的图片的left偏移量,不过不是自增,而是修改成对应的data-index的值,同时需要注意的是:在按钮点击事件中,我们应该要清除自动轮播的时间片,以防止发生碰撞,影响视觉体验和效果



代码实现


页面布局
<div class="carousel">
    <div class="list">
        <img src="images/carousel/car1.jpg" />
        <img src="images/carousel/car2.jpg" />
        <img src="images/carousel/car3.jpg" />
        <img src="images/carousel/car4.jpg" />
    </div>
    <div id="buttons">
        <span data-index="0" class="on"></span>
        <span data-index="1"></span>
        <span data-index="2"></span>
        <span data-index="3"></span>
    </div>
</div>


css样式设置
.carousel{
    position: relative;
    top: 51.4px;
    width: 1348px;
    height: 500px;
    overflow: hidden;
    opacity: 0;
    transition: opacity .7s linear;
}
.carousel .list{
    width: 5392px;
    height: 500px;
    position: absolute;
    left: 0px;
    transition: all .5s ease-out;
}
.carousel .list img{
    float: left;
    width: 1348px;
    height: 500px;
}
#buttons {
     position: absolute;
     left: 660px;
     bottom: 20px;
     z-index: 2;
     height: 10px;
     width: 100px;
}        
#buttons span {
     float: left;
     margin-right: 5px;
     width: 15px;
     height: 15px;
     border: 1px solid #fff;
     border-radius: 50%;
     background: #333;
     cursor: pointer;
}     
#buttons .on {
    background: orangered;
}


js核心代码
$(function(){

    /**
     * 指定点击进入对应图片轮播页面
     */
    $.fn.clickpic = function(){
        window.clearInterval(lunbo);
        var index = $(this).data("index");
        curindex = index;
        var curleft = curindex * -1345;
        $(".list").css("left",curleft+"px");
        lunbo = window.setInterval($.fn.carousel, 2500);
        $(".carousel div#buttons span.on").removeClass("on");
        $(this).addClass("on");
    };
    $(document).on("click",".carousel div#buttons span",$.fn.clickpic);

    /**
     * 每三秒轮播一次
     */
    var curindex = 0;
    $.fn.carousel = function(){
        curindex++;
        if(curindex == 4){
            curindex = 0;
        }
        var curleft = curindex * -1345;
        $(".carousel div#buttons span.on").removeClass("on");
        $(".carousel div#buttons span[data-index='"+curindex+"']").addClass("on");
        $(".list").css("left",curleft+"px");
    };
    var lunbo = window.setInterval($.fn.carousel, 2500);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js制作简单的轮播图 的相关文章

  • 如何经营IT项目中客户关系

    IT项目经理首要的能力是执行计划能力和客户关系能力 在实际工作中 笔者发现许多项目经理具备很好的计划执行能力 却忽视或者不太重视客户关系 给项目实施造成了许多本可以避免的不利因素 影响了项目的进度 甚至造成项目的失败 所以 如何经营好客户关
  • 网站的SEO

    网站的SEO 什么是SEO SEO指search engine optimization 既搜索引擎优化 SEO有什么用 SEO可以提高网站排名 SEO怎么做 内优化 外优化 h1 h2权重比较高 建议使用 因为里面内容容易被检索到 建议只

随机推荐

  • 《FLUENT 14.0超级学习手册》——第2章 FLUENT软件介绍2.1 FLUENT软件特点简介

    本节书摘来自异步社区 FLUENT 14 0超级学习手册 一书中的第2章 第2 1节 作者 唐家鹏 更多章节内容可以访问云栖社区 异步社区 公众号查看 第2章 FLUENT软件介绍 FLUENT 14 0超级学习手册CFD商业软件FLUEN
  • 编译原理实验(词法分析器+语法分析器(递归下降法))

    1 分析C 词法 判断首位为数字的错误变量 通过对C 词法分析程序 GETSYM 的分析 并在此基础上按照教材附录A中给出的C 语言的语法描述 编写一个C 语言的词法分析程序 此程序应具有如下功能 输入为字符串 待进行词法分析的源程序 输出
  • 电脑提示vcruntime140_1.dll丢失怎么安装?

    许多用户在使用电脑的时候 在安装运行某些程序的时候 电脑突然提示由于找不到vcruntime140 1 dll 无法继续执行代码 遇到这种情况我们应该怎么解决呢 下面小编就带着大家一起看看吧 首先是打开电脑浏览器后在顶部输入 dll修复程序
  • 在平面中,一个点绕任意点旋转θ度后的点的坐标

    假设对图片上任意点 x y 绕一个坐标点 rx0 ry0 逆时针旋转a角度后的新的坐标设为 x0 y0 有公式 x0 x rx0 cos a y ry0 sin a rx0 y0 x rx0 sin a y ry0 cos a ry0
  • 网络/Network - 传输层 - UDP

    1 应用场景 主要用于学习计算机网络中传输层的UDP协议 弄清楚其工作原理 2 学习 操作 1 文档阅读 网络协议概论 Laravel 学院 UDP 协议简介 HTTP Socket TCP UDP的区别与联系 网络 Network 数据链
  • 【华为云计算产品系列】云上容灾架构实战部署详解

    华为云计算产品系列 云上容灾架构实战部署详解 1 前言 2 容灾方案介绍 2 1 本地高可用 2 2 同城双活 2 3 主备容灾 同步远程复制 异步远程复制 2 3 1 同步远程复制 2 3 2 异步远程复制 2 4 两地三中心 3 基于主
  • AI 编程助手 Amazon CodeWhisperer 使用(持续更新中)

    文章作者 天博 近期 chatGPT 非常火爆 试用一些公众号功能 及自己接入的 chatGPT 写小作文能力一流 但是准确率很低 一直在搜寻可以在 idea 中使用 且非常丝滑的 AI 编程工具 前不久看到 infoq 推荐的 Amazo
  • Java求出水仙花数

    题目要求 水仙花数必须满足如下2个要求 1 水仙花数是一个三位数 2 水仙花数的个位 十位 百位的数字立方和等于原数 实现思路 1 写出一个100 999的循环 2 将个位 百位和十位求出并计算其平方和 3 判断平方和是否与原数相同 实现代
  • flutter 文字拼接

    Container margin EdgeInsets only right 10 child Row mainAxisSize MainAxisSize min children ConstrainedBox constraints Bo
  • matlab直接在图上加图注,MATLAB insertShape图像上直接添加图像

    官方说明文档 http cn mathworks com help vision ref insertshape html jsessionid cf20e78d9c69962c2a47d7672c89 用figure 和plot的方式无法
  • 行为型模式-状态模式

    package per mjn pattern state after 环境角色类 public class Context 定义对应状态对象的常量 public final static OpeningState OPENING STAT
  • querystring模块

    querystring decode querystring encode querystring escape str querystring parse str sep eq options querystring stringify
  • 作为程序员,你是如何在工作以后找到女朋友的?

    作为程序员 你必然经历这样的一个场景 一个温馨的夜晚 一个可爱懵懂的妹子找你求助 想让你到她家修电脑 如果没有 那么请照镜子检查BUG 一般情况下 场景内会发生三种可能 1 你是一个计算机大牛 从进屋检查到修完电脑再到离开 全程五分钟说拜拜
  • 计算机网络:IP数据报文分析

    IP 数据报前 40 字节 编号 1 45 00 05 dc 4a cb 20 00 40 01 4B 52 c0 a8 00 27 7c 7f cf 0f 08 00 45 2e 00 01 00 17 61 62 63 64 65 66
  • Java 密码学相关知识

    密码的发展 密码的起源 密码的起源非常早 早期的符号密码像宗教符号 岩壁画 至今无人破解的 费托斯圆盘 和无人读懂的 伏尼契手稿 古代隐写术 国内的 封蜡技术 隐形墨水 吞服信条 国外的 卡登格子隐藏法 意大利数学家卡登 两张带孔的卡片 文
  • 在mybatis-plus项目中自带要编写sql语句,@select注解的使用

    提示 在mybatisplus中编写sql语句有两种方法 我重点使用 select注释这种方法 还有一种是增加mapper xml文件配置 这里不做讲解 在mybatis plus项目中自带要编写sql语句 select注解的使用 前言 一
  • Servlet3.0基础

    一 要求 1 MyEclipse10 0或以上版本 2 发布到Tomcat7 0或以上版本 二 步骤 1 创建javaEE6 0应用 三 概述 注解代替web xml配置文件 异步处理 对上传的支持 四 注解代替配置文件 1 删除web x
  • 【java篇】线程安全问题(大总结)

    哎嘿 CSDN的大佬您来啦 这来都来了 浅浅的给个赞呗 系列文章目录 线程的创建与主要方法分析和其他基础知识点 可以参考以下文章 线程知识点总结 南斋孤鹤的博客 CSDN博客 线程知识 超全 线程知识点 及线程方面的一些理解性问题https
  • Haproxy+keepalived(高可用集群部署)

    Haproxy keepalived Haproxy定义 Haproxy应用 Haproxy支持的调度算法 Haproxy配置文件详解 haproxy keepalived优点 项目环境 主服务器配置 1 haproxy配置 2 keepa
  • js制作简单的轮播图

    实现原理 首先定义一个div 设置width和height 然后在这个div里面再定义一个div2 该div的宽度为父div的宽度的n倍 其中n表示图片的张数 在这个div2里面放置需要进行轮播的所有图片 设置每张图片的宽度为一个最外层父类