简介

轮播图是网页设计中常见的交互组件之一,用于展示多张图片或内容,让用户能够方便地浏览、切换和选择。本文将介绍如何使用原生 JavaScript 手写一个简单的轮播图,并且通过代码解释实现细节。

目录

简介

HTML 结构

CSS 样式

JavaScript 实现

完整的 JavaScript 代码

总结


HTML 结构

首先,我们需要创建 HTML 结构来容纳轮播图和其图片。以下是一个简单的 HTML 结构,包含一个轮播图容器和几张图片:

<div class="slider"><img src="data:image1.jpg" alt="Image 1"><img src="data:image2.jpg" alt="Image 2"><img src="data:image3.jpg" alt="Image 3">
</div>

CSS 样式

接下来,我们需要设置 CSS 样式,让轮播图容器和图片正确地排列和显示。以下是一个简单的 CSS 样式:

.slider {position: relative;overflow: hidden;width: 100%;height: 300px;
}.slider img {position: absolute;top: 0;left: 0;opacity: 0;width: 100%;height: 100%;transition: opacity 1s ease;
}.slider img.active {opacity: 1;
}

我们将轮播图容器设置为相对定位(position: relative),并隐藏超出容器范围的图片(overflow: hidden)。我们还将容器的宽度设置为100%,以使其适应不同的屏幕大小。

对于每个图片,我们将其设置为绝对定位(position: absolute),并将其放置在容器的左上角(top: 0; left: 0;)。我们还将图片的不透明度设置为0(opacity: 0;),以使其不可见。最后,我们为每个图片设置了一个过渡动画效果(transition: opacity 1s ease;),使其渐变显示。

最后,我们为当前活动图片设置 .active 类,并将其不透明度设置为1(opacity: 1;),使其显示在轮播图中。

JavaScript 实现

现在,我们可以使用原生 JavaScript 实现轮播图。以下是一些基本的 JavaScript 代码,用于实现自动播放和图片切换:

const slider = document.querySelector('.slider');
const images = slider.querySelectorAll('img');let index = 0;
const intervalTime = 3000;function nextImage() {images[index].classList.remove('active');index = (index + 1) % images.length;images[index].classList.add('active');
}setInterval(nextImage, intervalTime);

首先,我们获取轮播图容器和其中的所有图片。然后,我们定义一个 index 变量,表示当前活动的图片索引。

接下来,我们定义一个名为 nextImage 的函数,它将用于切换图片。该函数首先将当前活动的图片从 .active 类中移除,然后更新 index 变量以指向下一张图片,并将下一张图片添加到 .active 类中,以使其显示在轮播图中。

最后,我们使用 setInterval 函数来自动播放轮播图。该函数接受两个参数:第一个参数是要调用的函数,第二个参数是时间间隔(以毫秒为单位),指示调用该函数的时间间隔。在本例中,我们将 nextImage 函数和时间间隔 intervalTime(3秒)传递给 setInterval 函数,以实现轮播图自动播放。

完整的 JavaScript 代码

以下是完整的 JavaScript 代码,包括前面提到的代码段和添加注释的完整代码:

// 获取轮播图容器和其中的所有图片
const slider = document.querySelector('.slider');
const images = slider.querySelectorAll('img');// 定义变量以跟踪当前活动图片的索引和自动播放的时间间隔
let index = 0;
const intervalTime = 3000; // 时间间隔(以毫秒为单位)// 定义函数以切换图片
function nextImage() {// 从当前活动的图片中移除 .active 类images[index].classList.remove('active');// 将索引更新为下一个图像的索引index = (index + 1) % images.length;// 将下一张图片添加到 .active 类中,使其显示在轮播图中images[index].classList.add('active');
}// 自动播放轮播图
setInterval(nextImage, intervalTime);

总结

本文介绍了如何使用原生 JavaScript 手写一个简单的轮播图,包括 HTML 结构、CSS 样式和 JavaScript 代码。我们学习了如何使用 setInterval 函数来自动播放轮播图,并使用类名和索引变量来实现图片切换。

这只是一个简单的轮播图实现,您可以根据自己的需求进行修改和扩展。例如,您可以添加动画效果、控制按钮、触摸滑动等功能,以使其更加丰富和易于使用。

手把手教你原生JavaScript打造丝滑流畅的轮播图,让你的网站瞬间提升用户体验相关推荐

  1. javaScript小案例------js实现无缝轮播图效果篇

    原生js书写无缝轮播图 javaScript无缝轮播图思路及源码 无缝轮播图效果 总体思路 下面附上代码: html css animate.js index.js javaScript无缝轮播图思路 ...

  2. 手html左右轮播,移动端横向滑屏之轮播图

    图片描述 移动端的轮播图可以有很多方式实现,最常见的可以使用定位 + 手指事件.但是我这里介绍的是 CSS3 中的 2d 变换和手指事件,因为变换属性的代码更加简洁优雅 一. 移动端的准备工作 * { ...

  3. JavaScript简单点击切换效果——轮播图

    如何实现一个简单轮播图效果,通过点击切换图片?在JavaScript内容的实现是使用点击触发事件,改变src图片路径. 直接展示JS代码哈! // 创建一个数组来保存图片的路径var imgArr = ...

  4. js原生选项卡(自动播放无缝滚动轮播图)二

    今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走 ...

  5. html5轮播怎么自动换图,如何使用JavaScript实现“无缝滚动 自动播放”轮播图效果...

    在一些项目开发中,我们经常需要使用到轮播图,但是没有深入学习的情况下做轮播图是非常困难的. 思路 分成小问题来解决 1. 动态生成序号12345 页面有多少li(图片),就有多少序号 2. 点击序号. ...

  6. 原生JS实现PC端无缝滚动轮播图、匀速轮播图、匀速动画

    offset家族的了解 1.offsetHeight:元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框.内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before ...

  7. javascript 计算器、动态时钟、表格复选框全选(扩展)、轮播图、36选7、随机数...

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. swiper 定义放多少张图片,小程序swiper轮播图,自定义样式,两种方法:原生方法和bindchange方法;将点点改为数字(当前第几张 /总共几张);点击点点跳转当前图片...

    一.点点部分 1.1.通过原生方法 (1)wxml文件 (2)wxss /* 轮播图部分 */ .swiperBar { width: 690rpx; height: 337rpx; margin: ...

  9. 原生js实现一个简单的轮播图

    想锻炼一下自己的原生js能力可以从写一个轮播图开始,轮播图的运用想必大家都知道吧,好了废话不多说,开始记笔记了,一些需要注意的点,我都在代码中标注了 首先是构造html: <div id=&qu ...

最新文章

  1. Linux中Eclipse开发android的配置问题
  2. php类对象无法转还子符串问题,php – 类stdClass的对象无法转换为字符串
  3. Android多线程死锁定位,Java---多线程之死锁
  4. UNICODE转多字节
  5. 【学习笔记】 Javascript定时器
  6. POJ 3553 Light Switching Game 博弈论 nim积 sg函数
  7. 动态创建 @ViewChild 导致运行时错误的原因分析
  8. 机器学习09支持向量机
  9. Silverlight三维柱状图3D饼图的Silverlight图表组件案例
  10. KMP算法 串模式识别 用nextval[j]改进next[j]
  11. 一叶知秋:“安全“的野指针、 static函数、成员函数、this 指针、gcc编译器、name mangling
  12. win32开发(调试)
  13. java实现mysql if函数,mysql中if函数的正确使用姿势,mysql的if函数
  14. 数据归档,冷热数据分离
  15. windows10桌面_Windows桌面美化记(一)这可能是你看过最详细的美化教程
  16. python计算复数的辐角_python做傅里叶变换
  17. 矿 第一次数据结构实验
  18. 如何学会记账,并分别统计每个月收入和支出的金额
  19. 【PC】【MTU】PC查看和修改MTU的方法小结
  20. 【妄言之言】我的2016--困境与选择

热门文章

  1. [iOS]修改UILabel的行间距/段间距/缩进
  2. 全网最全教程python.py文件右击打开没有EDIT WITH IDLE解决教程
  3. TIM定时器与PWM使用
  4. 语法体系:你不可不知的将来进行时与现在进行时的区别day4
  5. TechBullion:USDD 或将成为全新避险资产
  6. 网络硬件知识个人汇总
  7. 都是运营商的卡为什么物联网卡这么便宜?
  8. 爬取‘广州链家新房’数据并以csv形式保存。
  9. 恐怖系列丨互联网幕后攻防:咳血的独角兽三之财务自由诱惑下的道德塌方
  10. 【汇编语言】8086汇编字符串定义为何使用DB?其他数据类型不可以吗?(20200515复盘)