原生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

maya中的几个热盒(空格、shift、w键)

maya中许多功能打包放进了不同的热盒中,让我们使用起来更加的便捷,熟练掌握后可以大大提升了建模速度。按下不同按键后鼠标不需要精确点到某个图标,往某个方向滑滑滑就打开了相应功能,非常的炫酷和迅猛。

m0_71983242的博客 1756

CMOS反相器版图设计全解析:PMOS/NMOS布局与VDD/VSS连接门道

版图设计是芯片从电路原理图迈向物理实现的必经桥梁,而CMOS反相器作为最基础的数字单元,恰好是理解这一过程的最佳切入点。在版图绘制中,PMOS与NMOS因导电类型和迁移率差异,需要在N阱与P衬底上分别规划,并呈现出不同的有源区尺寸。真正决定版图好坏的关键,往往在于VDD/VSS的完整连接——不仅要接通源漏,还要通过阱接触和衬底接触固定阱与衬底电位,防止寄生PN结正偏和闩锁效应。合理布局电源地线轨道、优化接触孔数量,能显著降低寄生电阻与电迁移风险。这些原理不仅适用于反相器,也是所有CMOS数字标准单元版图设计

weixin_29159441的博客 301

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万+

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1112

JS实战——轮播图

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

qq_65715980的博客 3万+

在F1C100s上跑GBA游戏:手把手教你用Buildroot配置SDL和移植gpsp模拟器

本文详细介绍了在全志F1C100s开发板上配置Buildroot、移植SDL库和gpsp模拟器的完整流程,帮助开发者实现在ARM9平台上流畅运行GBA游戏。内容涵盖环境配置、交叉编译、常见问题解决及性能优化技巧,特别针对'段错误'和'无声音'等典型问题提供实用解决方案。

weixin_42566424的博客 397

程序进入hardfault之后查找原因的方法

如果在MCU运行程序的时候,进入了hardfault,该怎么办?

smart_boy__的博客 761

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

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

m0_56836274的博客 2万+

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 531

怎么用原生js写轮播图

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

攻城狮-张小白的博客 2513

Qt c++ llama.cpp 运行 LLaMA-3-8B 中文对话机器人(多模态输入)

助手:

寒寒豆豆软件公司的博客 219

【雕爷学编程】一款功能强大、易于使用、适用范围广泛的嵌入式Python解释器:MicroPython

1、语法方面:Micropython与Python语法基本相同,但是由于Micropython是专门为嵌入式设备设计的,因此它对标准Python的功能进行了精简和优化,去掉了一些不必要的功能,同时增加了一些嵌入式系统特有的功能。3、库方面:Micropython与Python完全不同的是,它的标准库并不完全与Python的标准库一致,特别是一些底层库和硬件相关的库。5、丰富的库和工具支持:MicroPython有丰富的库和工具支持,如GPIO控制、网络连接、传感器数据采集等,可满足各种应用需求。

雕爷学编程 5194

用原生JS写轮播图

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

weixin_44827568的博客 2230

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

Happyaileaf的博客 1093

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

shi__Yu的博客 5483

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用原生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、付费专栏及课程。

余额充值