轮播图完整代码详细解析,css+js+html完整代码,可直接复制粘贴使用,仅需改图片即可

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

轮播图完整代码详细解析,css+js+html完整代码,可直接复制粘贴使用,仅需改图片即可

这是一段使用HTML、CSS和JavaScript编写的图片轮播组件。它通过定时器实现自动播放图片,同时提供向左和向右的箭头按钮以手动切换图片。还包括一个圆圈导航,用于显示当前图片的索引,并且可以点击圆圈导航进行图片切换。

具体实现步骤如下:

  1. 获取相关元素:获取轮播图容器(images)、向左箭头按钮(arrow_l)、向右箭头按钮(arrow_r)、图片列表(ul)、圆圈导航(ol)等元素。
  2. 设置鼠标悬停和离开事件:当鼠标悬停在轮播图容器上时,显示箭头按钮,并清除定时器;当鼠标离开轮播图容器时,隐藏箭头按钮,并重新开启定时器。
  3. 动态生成圆圈导航:根据图片数量动态生成相应数量的圆圈导航,并为导航元素设置索引号(index)属性和点击事件。
  4. 克隆第一张图片:将第一张图片复制一份,并添加到图片列表的最后,以实现图片无缝滚动。
  5. 向右切换图片:点击向右箭头按钮时,判断是否滚动到最后一张图片,如果是,则将图片容器的left值快速复原为0,并将num重置为0,接着执行滚动动画;同时,圆圈导航也随之变化。
  6. 向左切换图片:点击向左箭头按钮时,判断是否滚动到第一张图片,如果是,则将图片容器的left值设置为倒数第二张图片的位置,并将num重置为最后一张图片的索引号,接着执行滚动动画;同时,圆圈导航也随之变化。
  7. 圆圈导航变化:通过循环遍历圆圈导航元素,将除当前导航以外的所有导航的class清空,为当前导航添加class,实现高亮效果。
  8. 自动播放轮播图:使用定时器实现自动切换轮播图,每隔一段时间调用向右切换图片的逻辑。

以上就是该轮播组件的实现步骤。你可以根据需要进行修改和扩展,例如调整样式、更换图片等。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;

        }

        .images {
            width: 350px;
            height: 350px;
            position: relative;
            overflow: hidden;
        }

        ul {
            list-style-type: none;
            width: 600%;
            position: absolute;
        }

        ul li {
            float: left;
        }

        .images a {
            text-decoration: none;
            color: white;
            position: absolute;
            top: 175px;
            display: none;
            z-index: 999;
        }

        .arrow_l {
            left: 0;
            transform: translate(0, -50%);
        }

        .arrow_r {
            right: 0;
            transform: translate(0, -50%);
        }

        ol {
            list-style-type: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 350px;
            height: 350px;
            display: flex;
            justify-content: center;
            align-items: flex-end;
        }

        ol li {
            width: 10px;
            height: 10px;
            border-radius: 50%;
            border: 1px solid white;
            /* float: left; */
            margin-left: 5px;
        }

        .current {
            background-color: white;
        }
    </style>
</head>

<body>
    <div class="images">
        <a href="javascript:;" class="arrow_l">向左</a>
        <a href="javascript:;" class="arrow_r">向右</a>
        <ul>
            <li><img src="./images/flame-girl1.jpg" alt=""></li>
            <li><img src="./images/flame-girl2.jpg" alt=""></li>
            <li><img src="./images/flame-girl3.jpg" alt=""></li>
            <li><img src="./images/flame-girl4.jpg" alt=""></li>
            <li><img src="./images/flame-girl5.jpg" alt=""></li>
            <!-- <li><img src="./images/flame-girl1.jpg" alt=""></li> -->
        </ul>
        <ol class="circle">
            <!-- <li></li>
            <li></li>
            <li></li>
            <li></li> -->
        </ol>
    </div>
    <script>
        // 思路
        // 让盒子每次移动的距离慢慢变小,速度就会慢慢落下来
        // 核心算法:(目标值-现在的位置)/10作为每次移动的距离 步长
        // 停止的条件是:让当前盒子位置等于目标位置就停止定时器
        function animate(obj, target, callback) {
            //先清除以前的定时器,只保留当前的一个定时器执行
            clearInterval(obj.timer)//清除以前的定时器
            obj.timer = setInterval(function () {
                //步长值写到定时器的里面
                //把步长值改为整数 不要出现小数的问题
                var step = (target - obj.offsetLeft) / 10
                step = step > 0 ? Math.ceil(step) : Math.floor(step)
                if (obj.offsetLeft == target) {
                    //停止动画效果本质是停止定时器
                    clearInterval(obj.timer)


                    //如果有就调用,如果没有不执行
                    if (callback) {
                        //调用函数
                        callback()
                    }
                }
                obj.style.left = obj.offsetLeft + step + 'px'
            }, 15)
        }

        window.addEventListener('load', function () {
            var images = document.querySelector('.images')
            var arrow_l = document.querySelector('.arrow_l')
            var arrow_r = document.querySelector('.arrow_r')
            var moveWidth = images.offsetWidth
            images.addEventListener('mouseenter', function () {
                arrow_l.style.display = 'block'
                arrow_r.style.display = 'block'
                //鼠标经过,就清除定时器
                clearInterval(timer)
                timer = null//清除定时器变量
            })
            images.addEventListener('mouseleave', function () {
                arrow_l.style.display = 'none'
                arrow_r.style.display = 'none'
                //鼠标离开,再开启定时器
                timer = setInterval(function () {
                    //手动调用点击事件
                    arrow_r.click()
                }, 2000)
            })
            //动态生成小圆圈,有几个图片,就生成几个小圆圈
            var ul = images.querySelector('ul')
            var ol = images.querySelector('ol')
            for (var i = 0; i < ul.children.length; i++) {
                //创建li
                var li = document.createElement('li')
                //记录当前小圆圈的索引号,通过自定义属性
                li.setAttribute('index', i)
                //把li插入到ol里面
                ol.appendChild(li)
                //小圆圈的排他思想 我们可以直接在生成小圆圈的同时绑定点击事件
                li.addEventListener('click', function () {
                    //干掉所有人 把所有的li清除current类名
                    for (var i = 0; i < ol.children.length; i++) {
                        ol.children[i].className = ''
                    }
                    //留下我自己 当前的li设置current类名
                    this.className = 'current'
                    //点击小圆圈,移动的是ul
                    //移动的距离是小圆圈的索引号乘以图片的宽度 注意为负值
                    //当我们点击了某个li,我们就拿到当前li的索引号
                    var index = this.getAttribute('index')

                    //当我们点击了某个li 就把这个li的索引号给num
                    num = index
                    //当我们点击了某个li 就把这个li的索引号给circle
                    circle = index

                    animate(ul, -index * moveWidth)

                })
            }
            //ba0l里面的第一个li设置类名为current
            ol.children[0].className = 'current'
            //克隆第一张图片li放到ul最后面
            var first = ul.children[0].cloneNode(true)
            ul.appendChild(first)

            //点击右侧按钮,图片滚动一张
            //声明一个变量num,点击一次,自增1,让这个变量乘以图片的宽度,就是ul的滚动距离
            //图片无缝滚动原理:
            //把ul第一个li复制一份,放到ul的最后面
            //当图片滚动到克隆的最后一张图片时,让ul快速的、不做动画的跳到最左侧:left为0
            //同时num赋值为0,重新开始滚动就可以了
            var num = 0;

            //控制小圆圈的播放
            var circle = 0

            //右侧按钮做法
            arrow_r.addEventListener('click', function () {
                //如果走到了最后复制的一张图片,此时,我们的ul要快速复原,left值为0
                if (num == ul.children.length - 1) {
                    ul.style.left = 0
                    num = 0
                }
                num++
                animate(ul, -num * moveWidth)

                //点击右侧按钮,小圆圈跟随一起变化 可以在声明一个变量控制小圆圈的播放
                circle++
                //如果circle==ol.children.length 说明我们走到最后我们克隆的这张图片了 我们就复原
                if (circle == ol.children.length) {
                    circle = 0
                }
                circleChange()
            })
            //左侧按钮
            arrow_l.addEventListener('click', function () {
                //如果走到了第一张图片,此时,我们的ul要快速到倒数第一张
                if (num == 0) {
                    num = ul.children.length - 1
                    ul.style.left = -num * moveWidth + 'px'
                }
                num--
                animate(ul, -num * moveWidth)

                //点击右侧按钮,小圆圈跟随一起变化 可以在声明一个变量控制小圆圈的播放
                circle--
                //如果circle<0 说明我们走到第一张张图片了 我们就改为第5个小圆圈
                if (circle < 0) {
                    circle = ol.children.length - 1
                }
                circleChange()
            })
            function circleChange() {
                //先清除其余小圆圈的current类名
                for (var i = 0; i < ol.children.length; i++) {
                    ol.children[i].className = ''
                }
                //留下当前小圆圈的current类名
                ol.children[circle].className = 'current'
            }
            //自动播放轮播图
            var timer = setInterval(function () {
                //手动调用点击事件
                arrow_r.click()
            }, 2000)
        })

    </script>
</body>

</html>

效果图
在这里插入图片描述
在这里插入图片描述

html+css+js】实现图片轮播效果 简单实现 <html> <head> <style type="text/css"> *{background-color:green;} #lunbo{ width:600px; height:600px;position:relative;left:100px;top:50px;} //定义轮播图片所显示的位置 ul{width:100%; height:100%; position:relative;left:0px;top:0px}//为ul标 阅读详情

相关推荐

JavaScript表单校验

确认事件             事件触发函数             函数操作元素                          校验用户名                 1. 当用户鼠标移动到输入框中时候, 请给用户一个提示                     事件: 焦点事件 onfocus                     触发函数                     ...

mqingo的博客 1126

用简单的 JavaScript 代码实现图片轮播效果

轮播图是网页中常见的展示多张图片的方式,通过自动或手动切换图片来提供更好的用户体验。在本文中,我将向您展示如何使用简单的 JavaScript 代码实现一个基本的图片轮播效果。这里只提供了一个基本的实现思路,您可以根据自己的求进行适当的修和扩展。通过以上的 JavaScript 代码,我们实现了一个简单的图片轮播效果。首先,我们要一个包含多个图片的容器,并为每个图片创建一个对应的小圆点作为导航指示器。,并通过控制该类名的出现和消失来切换幻灯片的显示。变量来保存当前显示的幻灯片的索引。

CsCufft的博客 606

JS实现无缝滚动轮播图

这是小刈同学第一次写博客(不会发表情包,还怎么滑稽起来呢),希望各路大神多多关照,多多交流,多多分享哈 工多熟练,第一次不知道直接代码好不好,嗯嗯,好吧,那就直接代码吧,此处有 懒人通道 哦 说明:html结构,css样式基本可以略过,js部分都有注释,个人感觉注释看起来有点灰,那就先将就一下咯 用法:复制粘贴一把刷,在 carousel-item 里面爱干嘛干嘛,你懂的嘻嘻 1、HTML &amp;...

小刈 2867

轮播图详解(完整代码在最后)

轮播图

m0_48639378的博客 7339

js案例:简单的图片轮播(代码逐行讲解,建议先看完整代码

做一个简单的js图片轮播效果并不要特别多的知识点,代码逐行讲解,小白必看。

qq_52799985的博客 1万+

❤️创意网页:打造简洁美观的网页轮播图HTML简单实现轮播图)操作简单可以直接使用

❤️创意网页:打造简洁美观的网页轮播图HTML简单实现轮播图)操作简单可以直接使用

VLOKL的博客 7900

原生js实现动态轮播图

html+css和简单的js代码,实现一个有个有导航栏的轮播图。 Lis技术

CHENJIANCONG66的博客 2793

超简单全面的html图片自动轮播

超简单全面的html图片自动轮播 废话不多说,直接代码 html部分 <div id="max"> <div class="re"> <ul> <li><img src="./pic/big_size/p1.jpg" alt=""></li> ...

a1424715994的博客 14万+

js无缝轮播图(手动轮播+自动轮播+定时器+过渡动画)

为了方便大家使用,我把HtmlCSS,以及js 和用到图片都放在下面了。** 特此说明:这个无缝轮播的代码是可以直接复制粘贴使用,嘻嘻! 1.先新建一个文件,随意命名即可。 2.然后打开文件夹,再新建。 3.把文章底部的5图片保存到images文件夹里面。 4.用你的编辑器打开这个文件夹 5.剩下的就是复制粘贴到对应的里面就可以了 HtmlCss 这里再说一下我是直接css样式直接写在了style里面,这个没有引入,js代码比较长,直接外部引入的js,就是这两句 <script src

唐璜Taro的博客 2344

轮播图模板,直接复制粘贴,修图片路径就可以用

html界面代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1,maximum-scale=1,user-scalable=no" /> <!--引入CSS代码--> <link r

weixin_59334478的博客 775

如何用swiper插件快速做轮播图/网页中滑动切换图片效果实现

轮播图效果是网页中常见的一种效果,单纯用css代码实现非常复杂,但我们可以利用swiper插件实现,本文将讲述如何利用swiper插件快速实现各种轮播图效果。

2401_83607690的博客 1543

原生html/css+js写轮播

html: <!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" /> <

weixin_45899022的博客 464

通过swiper插件制作旋转木马轮播图

实现效果: 1.swiper插件准备 我们旋转木马轮播图的效果可以通过swiper插件轻松搞定 这种效果是不是和我们要做的很像呀,我们只要把它引入我们的案例就ok了 在swiper官网的获取swiper下下载swiper-5的压缩包然后解压 然后进入js文件夹,复制里面的swiper.min.js文件 然后粘贴到我们的项目文件夹中,同理再进入css文件夹,将里面的swiper.min.css复制到项目文件夹中 回到我们swiper插件的页面,单击这里的新窗口打开: 然后右击点击查看网页源代码

qq_49900295的博客 7632

轮播图_两步完成【easy version】

轮播图_两步完成【easy version】 效果展示 这是一个比较简洁的轮播图效果,简洁的同时且不失美观; 使用的技术 主要使用html+css+js+jquery,jquery实在太香 代码片段 使用时只要导入插件,复制粘贴核心代码,即可使用 <!-- 使用时:直接复制轮播图代码即可,导入css文件和js文件 photo-show-id="demo01":该属性...

倒地老太太 312

uniapp 轮播图

(你的鼠标滑到那里的时候会弹出图片出来的,这样既可以检查,这是否时你所要的图片也可以让我们知道是否是图片路径,就这个设计很好)我存的时候发现一个问题---如果是选择另存为,它有可能是一串乱码,所以可以直接复制粘贴图片进行保存,当然你也可以选择截图的方法来保存图片。3.当你的鼠标滑到你所要的图片路径时,它会弹出一个小弹窗,弹窗里有个蓝色的图片链接,点击该链接,你就可以到达图片区。swiper 的一些属性,仿写时,不太理解官网的代码可以查一下什么代表什么,该怎么设计。好的,获取图片和保存图片就到此结束。

2301_78897890的博客 1841

html 轮播图自适应,JavaScript 自适应轮播图

JavaScript 自适应轮播图代码话不多说,先上代码,方便复制粘贴。演示轮播图*{margin: 0;padding: 0;}ul{list-style: none;}img{display: block;width: 100%;height: 100%;}.content{width: 1080px;margin: 100px auto;}.banner{position: relative...

weixin_39585691的博客 1367

HTML+CSS+JS仿华为商城:9页面完整前端实战项目全解析

Web前端开发的核心在于将HTML5语义化标签、CSS3布局与JavaScript动态交互有机结合,构建出结构清晰、视觉统一且具备真实业务逻辑的站点。本项目以华为商城为设计蓝本,采用flex与grid完成栅格布局,利用localStorage实现跨页面数据共享,并通过事件委托、正则校验、无缝轮播等原生JS技术增强用户体验,同时兼顾响应式适配与多浏览器兼容性。这类电商整站覆盖了页面跳转、商品展示、购物车结算、表单验证等典型场景,不是检验前端综合能力的绝佳实践,更是大学生HTML5期末作业的高性价比选题。从公

weixin_29011395的博客 318

旅游网站源码实战:HTML+CSS+JS工程化开发指南

旅游网站源码是前端入门与项目落地的关键实践载体,其核心在于HTML语义化结构、CSS模块化布局与JavaScript行为解耦的协同实现。基于标准Web技术栈(HTML5/CSS3/ES6),通过数据驱动渲染、BEM命名规范、响应式断点体系与可维护目录结构,显著提升二次开发效率与跨端兼容性。该类源码广泛应用于中小旅行社官网、OTA轻量级展示站及教学实训项目,尤其适合快速交付、持续迭代且无框架依赖的场景。本文详解一套生产就绪的旅游网站源码,涵盖轮播图交互、线路动态筛选、表单AJAX提交等真实功能模块,聚焦‘可

weixin_33164198的博客 345

学生练手用的生活类电商首页模板,纯HTML/CSS/JS实现,开箱即用

专为前端初学者设计的购物商城首页练习项目,包含首页index.html和商品列表页list.html两个页面,全部使用原生HTMLCSSJavaScript编写,不依赖任何框架或后端服务。页面结构语义清晰,轮播图、分类导航、热销推荐、新品上架等电商常见模块齐全,风格贴近日常家居、日用百货类商品展示。CSS样式统一存放在css目录,交互逻辑集中在js目录,图片资源归类到images文件夹,命名直观易懂。所有文件可直接双击在Chrome、Edge、Firefox等主流PC浏览器中运行,无本地服务器。目录组

g8f9d0s1a2的博客 223
上一篇: tab栏切换制作,点击导航栏切换内容html+css+js完整代码及详细解析
下一篇: jQuery选择器
bsf000000___
博客等级 码龄3年 7粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值