原生js轮播图

原生JS实现自动无缝切换轮播图(可鼠标拖动) ^ _ ^ 最近参加了一个免费的华为在线课程,上面一个作业是用原生js实现轮播图。练手的同时发现工作中框架用的多。原生的都不如以前那么熟练了。特此写这篇文章记录一下。希望能帮助到一些新手盆友。一起学习吧。 目录功能需求实现思路html & CSS结构分析JS逻辑实现知识点小结 功能需求 功能上要实现以下4个需求: 自动无缝切换图片 鼠标左右拖动切换图片 点击小点切换对应图片 浏览器窗口尺寸改变不影响以上功能 实现思路 html & CSS结构分析 JS逻辑实现 知识 阅读详情

1、先进行文档的布局

<div id="div-wrap" class="container">
    <!--为了不处理obj.style.left兼容性把写了行内样式因为obj.style.left不能直接获取外部属性-->
    <ul id="ul" class="oUl" style="left: -960px">
        <li><img src="img/banner-1.jpg" alt="1"></li>
        <li><img src="img/banner-1.jpg" alt="1"></li>
        <li><img src="img/banner-2.jpg" alt="2"></li>
        <li><img src="img/banner-3.jpg" alt="3"></li>
        <li><img src="img/banner-4.jpg" alt="4"></li>
        <li><img src="img/banner-5.jpg" alt="5"></li>
        <li><img src="img/banner-5.jpg" alt="5"></li>
    </ul>
    <!--左右两个点击切换图片的箭头-->
    <a href="javascript:;" id="pre" class="arrow"><</a>
    <a href="javascript:;" id="next" class="arrow">></a>
    <div id="buttons" class="oSpan">
        <!--添加自定义属性方便获取到属性值-->
        <span inde="1" class="on">1</span>
        <span inde="2">2</span>
        <span inde="3">3</span>
        <span inde="4">4</span>
        <span inde="5">5</span>
    </div>
</div>
2、样式的编写为了方便引入了一个reset

http://linxz.github.io/tianyizone/css_reset.html
 .container {
        width: 960px;
        height: 540px;
        position: relative;
        overflow: hidden;
    }

    .oUl {
        width: 5760px;
        position: absolute;
    }

    .oUl li {
        float: left;
    }

    .arrow {
        height: 50px;
        width: 50px;
        position: absolute;
        z-index: 2;
        background: grey;
        opacity: 0.5;
        font-size: 30px;
        font-weight: bold;
        top: 50%;
        text-align: center;
        line-height: 50px;
        cursor: pointer;
        display: none;
    }

    .container:hover .arrow {
        display: block;
    }

    #pre {
        left: 0px;
    }

    #next {
        right: 0px;
    }

    .oSpan {
        position: absolute;
        left: 40%;
        bottom: 2%;
    }

    .oSpan span {
        float: left;
        width: 20px;
        height: 20px;
        border-radius: 50%;
        text-align: center;
        line-height: 20px;
        margin-left: 10px;
        color: white;
        cursor: pointer;
    }

    .on {
        background: red;
    }

3、获取元素
 var container = document.getElementById("div-wrap");
    var oUl = document.getElementById("ul");
    var pre = document.getElementById("pre");
    var next = document.getElementById("next");
    var buttons = document.getElementsByTagName("span");
    var time = null, index = 1, newLeft = 0;

4、让图片动起来

 function animate(offset) {
        newLeft = parseInt(oUl.style.left) + offset;
//        console.log(newLeft);
        oUl.style.left = newLeft + "px";
        if (newLeft < -4800) {
            oUl.style.left = -960 + "px";
        }
        if (newLeft > -960) {
            oUl.style.left = -4800 + "px";
        }
    }

    pre.onclick = function () {
        animate(-960);
    };
    next.onclick = function () {
        animate(960);
    };
    function play() {
        time = setInterval(function () {
            pre.onclick();
        }, 1000)
    }
    play();
    function stop() {
        clearInterval(time);
    }
    container.onmouseover = stop;
    container.onmouseout = play;

5、先处理底部的数字使图片滚动改变相应的背景色、然后点击对应的数字显示对应的图片

 function btnShow() {
//        console.log(buttons.length)
        for (var i = 0, len = buttons.length; i < len; i++) {
            console.log(len);
//        先进行默认背景的清除
            if (buttons[i].className = "on") {
                buttons[i].className = "";
//                console.log("te");
            }
//        然后进行添加样式(取轮播图滚动时的图片的位置进行设置)使下标相对应
            buttons[index - 1].className = "on";
//            var ind=parseInt(newLeft/-960);
//            buttons[ind].className = "on";

            pre.onclick = function () {
                index += 1;
                if (index > 5) {
                    index = 1;
                }
                btnShow();
                animate(-960);
            };
            next.onclick = function () {
                index -= 1;
                if (index < 1) {
                    index = 5;
                }
                btnShow();
                animate(960);
            };
            for (var j = 0; j < len; j++) {
//                需要得到span的自定义属性获取属性然后设置偏移量
                //需要写成立即执行函数
//                buttons[j].onclick=(function () {
//                    console.log(j);//
//                })();
                (function (j) {
                    buttons[j].onclick = function () {
//                        console.log(j);//点击一次打印对应的下标
                        var spanIndex = buttons[j].getAttribute("inde");
                        console.log(index);
//                        console.log(oUl.offsetWidth);
                        var offset = (spanIndex - index) * -960;
                        animate(offset);
                        index = spanIndex;
                        btnShow();
                    }
                })(j);
            }
        }
    }
    btnShow();






用原生js实现轮播图 用原生js实现最简单的轮播图效果,实现图片切换。 阅读详情

相关推荐

原生JS实现轮播图

实现效果: 功能需求: 1.鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮 2.点击右侧按钮一次,图片往左播放一张,左侧按钮同理。 3.图片播放的同时,下面的小圆圈模块也跟随一起变化。 5.鼠标不经过轮播图,轮播图会自动向右播放图片,经过轮播图之后停止自动播放图片。 轮播图向右移动的时候要用到缓动画的函数,具体见博客JS案例-添加缓动画_setTimeout()的博客-优快云博客 (1)布局:轮播图部分的图片用ul进行布局,里面的每个li放a标签,a标签里面再放img;ul需要采用定

qq_43781887的博客 2856

【学会轮播图这一篇文章就足够啦】JS 网页轮播图详解 自动播放+手动播放

轮播图已经成了页面开发中不可缺少的一部分,日常生活中随处都能见到轮播图的身影,例如平常我们购物的淘宝,京东等等,都靠着轮播图在一片 有限的区域内展现出更多的商品。这也是前端程序员最早接触到的练手小项目,这篇文章带大家透彻拿下轮播图!从此不再迷茫 首先我们来看一下本次案例的效果: (下面有请本人女朋友出境!话说我是在搞不明白 gif 图怎么设置,但总之就是该有的功能都有,不该有的功能也有(例如杀狗 hhhhh),自动播放,点击切换按钮切换图片,点击下方圆点切换图片均可实现,就不一一演示了,主要还是让..

weixin_52212950的博客 1万+

轮播图案例

这是一个用原生JS写的完整的轮播图案例,可以进行自动切换和手动切换,包括代码和图片。

js轮播图

1.鼠标不在图片上方时,进行自动轮播,并目左右箭头不会显示当鼠标放在图片上方时,停止轮播,并且左右箭头会显示;2.图片切换之后,图片中下方的小圆点会同时进行切换,并且点击相应的小圆点可以切换到相应的图片上;3点击左右箭头可以进行左右图片的切换4.图片上需有介绍的文字,会随图片切换一起进行切换。

gua_Piter的博客 202

通过Scrapy爬虫抓取Deep Learning领域的论文数据

然而,大部分高质量的deep learning研究论文都是通过国际顶尖学术会议(如neurips、iclr、icml等)发表的,而这些论文的获取难度较大。在本文中,我们选择抓取arXiv的数据。arXiv是一个管理科学论文的网站,其中包括了许多领域的论文,也包括了Deep Learning领域的论文。同时,arXiv网站还提供了方便的API接口,使得我们的爬虫程序可以很方便地获取论文数据。通过结合其他的数据处理技术,我们可以对这些数据进行更深入的研究和分析,从而推动Deep Learning领域的发展。

Ob2024的博客 609

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 508

JS实现轮播图的三种简单方法。

Js实现轮播图01 实现思路 这可能是轮播图最简单点的实现之一,通过更改图片的src来实现该效果,首先需要将图片命名格式统一比如pic01.jpg,pic02.jpg…,再通过js使用定时器去改变img标签里面的src图片链接的名字来实现切换效果。代码如下: 实现效果 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>轮播图实现01</title> &

m0_67392409的博客 2万+

滑模控制概述

滑模控制概述1.滑模控制概念2.滑模控制原理3.滑模控制设计步骤4.研究现状5.发展趋势5.1自适应滑模变结构控制5.2模糊滑模控制5.3神经网络与滑模控制的结合 1.滑模控制概念   滑模控制(Sliding Mode Control,SMC)是一种特殊类型的变结构控制(Variable Structure Control,VSC),因此又称之为滑模变结构控制,是近年来广泛应用和发展的一种控制方法。滑模控制本质上是一种非线性控制,即控制结构随时间变化而变化。滑模变结构控制是非线性系统中普遍采用的一种分析方

shiyi20190828的博客 2万+

JS实战——轮播图

html+css+js实现目前各大网站上轮播图的效果,可以利用我的代码稍加改装就能实现想要的效果。

qq_65715980的博客 3万+

IsaacLab 从入门到精通(一) 环境配置和依赖安装

本系列文章将针对机器人操作任务中的强化学习平台IsaacLab提供较为全面的教程

DejaWu33的博客 1万+

Hermes深入理解及源码解析(二):Hermes的记忆机制

源码位置:tools/memory_tool.py存储内容为两个文件,放在 ~/.hermes/memories/:MEMORY.md:Agent 自己的笔记(环境事实、项目约定、工具坑、学到的东西)—— 上限 2200 字符USER.md:关于用户的画像(角色、偏好、沟通风格)—— 上限 1375 字符作为一个独立的工具注册在系统中(为了让智能体正确使用它,System Prompt()中明确下达了禁令存储目标存储位置数据类型持久偏好/事实MEMORY.md我是谁、我喜欢什么、环境配置。

qq_41984117的博客 558

JS实现轮播图(超详细代码注释)

html,css,javasript实现轮播图,超详细代码注释。实现的功能有:自动轮播,鼠标放上去停止轮播,鼠标离开自动轮播,点击下方小圆圈实现图片切换,点击左右按钮实现切换

m0_56836274的博客 2万+

mabl:AI原生测试自动化平台的基础使用

mabl是一个基于人工智能和机器学习的云原生测试自动化平台。它通过使用先进的技术,如机器学习,自动创建和执行测试,自动分析测试结果,并根据需求的变化自动适配和维护测试。这样的自动化过程极大地提高了软件测试的效率和准确性。mabl的口号是 “You write code, mabl tests”,意味着开发者只需关注编写代码,而测试工作则可以交给mabl来完成。mabl的平台支持多种测试类型,包括 Web、App、Api、可访问性和性能测试,使得团队能够更快速、更有信心地发布软件。

blues_C的博客 3655

怎么用原生js写轮播图

目前用js原生写轮播图的攻城狮已经很少了,用的都是框架,便捷,速度 但对于初学者来说也是挺重要的,需要了解原生js轮播图的过程, 那么我今天就给大家写一下用原生js写轮播图的步骤 1、首先把需要轮播的图片放到页面 html代码 <div class="all" id='box'> <div class="screen"> <...

攻城狮-张小白的博客 2513

OBYC自动科目确定整理

WGI是用来重估发货的,通过比较发货时的价格和最新计算的价格,以此将所有差异过账到分配给此事务码的总账科目。是工厂还是公司,一般项目中都是使用工厂,使用工厂的意思就是物料在每个工厂下有一个价格,如果使用公司,则一个公司下的所有工厂都使用一个价格。如果该物料用的是移动平均价,那么该库存依然还存在的情况下,这个价格差异会过账到存货科目上而不会过账到存货的价格差异科目上。用于确定存货评估过账的存货冲抵科目。事务码WGR是用来重估工厂收货的,根据 计算出来的价格差异,把库存的调整过账分配给这个事务码中的总账科目。

nopicture的博客 348

ardupilot 为什么要采样四元数姿态控制

本节主要说明清楚ardupilot姿态控制为什么要用到四元数,欢迎批评指正!!!

陌城烟雨 1117

用原生JS写轮播图

今天我们来用原生JS写一个左右滚动的轮播图 HTML结构 <div class="all" id='box'> <!-- 显示图片的区域 --> <div class="screen"> <ul> <li><img src="images/1....

weixin_44827568的博客 2230

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JavaScript 原生js写的一个非常简单的轮播图

JavaScript 原生js写的一个非常简单的轮播图JavaScript 原生js写的一个非常简单的轮播图实现的方法实现的效果完整的代码 JavaScript 原生js写的一个非常简单的轮播图 初学 JavaScript ,用原生js写的一个非常简单的轮播图 核心的思想是,通过设置图片的透明或不透明,从而达到图片出现或消失的效果 实现的方法 将所有的轮播图片通过绝对定位重叠在一起 将所有图片设...

Happyaileaf的博客 1093

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

原生JS无缝轮播图(左右切换、导航跟随)

原生JS无缝轮播图(左右切换、导航图标) 功能: 1、实现轮播图的左右无缝切换 2、实现导航图标的跟随显示、点击切换 3、使用定时器进行无缝轮播 css部分 <style> /* 轮播图容器 */ #carousel{ width: 800px; height: 400px; bo...

shi__Yu的博客 5483

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

用原生js封装轮播图

原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不懂的可以直接私信我 slide.js /* * 轮播图 */ function Slide(elem, ms, d, ind){ this.el = elem; t...

dianshu5625的博客 592

原生js封装轮播图

工作原因,好久没更新博客了,今天来个用原生js写轮播图, 上代码 class Banner { constructor(props = {}) { if (!(props?.root instanceof HTMLElement)) { throw "root是必选dom节点"; } // 状态 this.state = {}; // 参数 this.props = { type: "move", height: 600

yh604005215的博客 4443

原生javascript手写一个丝滑的轮播图

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

发果叁 1610

原生js编写3D轮播图

原生js编写3D版轮播图 在日常开发中,为了开发的快捷性基本上都是把UI组件中的组件拿过来用即可,但是有时可能无法实现我们的需求,这时我们就需要去造轮子。 今天我们用原生的js和css3以及html来编写一个3D轮播图,如下: 第一步,编写轮播图的大致结构 使用html把创建轮播图结构 <div id="box"> <!-- 创建轮播图中图片的容器,注意图片的存放位置 --> <div class="item item1"> <img src="./1.

留白声的博客 1852

原生JS 实现轮播图效果

根据传入的图片数量在页面的底部呈现轮播图的图片数量和当前为第几张图片,点击相应的圆圈则可以跳转至其他图片;左右两个按钮同样可以实现图片的切换,如果当前为第一张或者最后一张图片,点击左移或者右移按钮即可完成循环操作,从第一张图片跳转至最后一张图片,且切换图片的效果还在。...

强风吹拂 1040

原生JS实现轮播图的几种方式

三种原生JS轮播图实现思路

莫邪莫急的博客 7553
上一篇: 原生js放大镜效果实现
下一篇: HTTP常用的状态码及其对应的含义如下:
composurext
博客等级 码龄10年 15粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值