当前位置: 首页 > news >正文

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

简介

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

目录

简介

HTML 结构

CSS 样式

JavaScript 实现

完整的 JavaScript 代码

总结


HTML 结构

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

<div class="slider"><img src="image1.jpg" alt="Image 1"><img src="image2.jpg" alt="Image 2"><img src="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打造丝滑流畅的轮播图,让你的网站瞬间提升用户体验!

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

git常用基本操作

克隆远程代码更新本地代码 git clone <-b | -branch> [branch name] [repository URL] git pull #拉取远程仓库代码&#xff0c;更新本地仓库 git merge <branch-name> #合并目标分支 建立本地仓库分支 git branch #查看当…...

剑指 Offer —— 数组和字符串

文章目录剑指 Offer 04. 二维数组中的查找代码实现解题方案 思路算法步骤剑指 Offer 05. 替换空格题目描述代码实现解题方案 思路算法步骤剑指 Offer 11. 旋转数组的最小数字 - 解决方案题目描述剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中&#xff1a; 每…...

Java 字符编码

编码&#xff1a;数据存储进计算机中需要转换为二进制存储&#xff0c;这个过程就是编码。 解码&#xff1a;计算机读取数据并展示在页面上&#xff0c;需要将二进制转换为人类语言的过程&#xff0c;叫做解码。 乱码&#xff1a;如果编码和解码时使用的码表不一样&#xff0c;…...

ubuntu-9-安装chrony时间同步

使用chrony搭建时间同步服务器 [Linux系列]Chrony时间同步服务器 配置chrony服务&#xff0c;实现服务器时间自动同步 linux上内网环境配置NTP时间同步详解 经验体会&#xff1a;解决Ubuntu 18.04Windows双系统时间不同步的问题 1 时间同步 我们知道一台电脑主机&#xff0c;…...

CMMI流程规范—服务与维护

服务与维护&#xff08;Service and Maintenance, SM&#xff09;是指产品销售之后的客户服务和产品维护。客户服务和产品维护的宗旨就是提高客户对产品以及对开发方的满意度。服务与维护过程域是SPP模型的重要组成部分。本规范阐述了服务与维护过程域的两个主要规程&#xff1…...

【蓝桥杯集训12】DFS(3 / 5)

目录 842. 排列数字 - DFS按位置枚举 843. n-皇后问题 - DFS按行枚举 165. 小猫爬山 - DFS枚举小猫 1209. 带分数 - DFS 3502. 不同路径数 - 842. 排列数字 - DFS按位置枚举 活动 - AcWing 题目&#xff1a; 给你一个整数n 要求将1~n的所有排列情况列出 比如&#xff1a…...

Elasticsearch:构建自动补全功能 - Autocomplete

什么是自动补全&#xff08;autocomplete&#xff09;功能呢&#xff1f;我们举一个很常见的例子。 每当你去谷歌并开始打字时&#xff0c;就会出现一个下拉列表&#xff0c;其中列出了建议。 这些建议与查询相关并帮助用户完成查询。 Autocomplete 正如维基百科所说的&#xf…...

One UI 5.1 更新来了

之前一直在关注One UI 5.0里提到的视频通话背景功能模块&#xff0c;结果5.0版本推送的时候没有引入&#xff0c;有先行者计划博主说是5.1里肯定会有的&#xff1b;前一两天One UI 5.1更新来了&#xff0c;然而该功能还是没有引入&#xff0c;表示很遗憾&#xff1b;本次更新新…...

Python学习笔记11:文件

文件 打开文件 函数open的参数mode的最常见取值 值描述‘r’读取模式&#xff08;默认值&#xff09;‘w’写入模式‘x’独占写入模式‘a’附加模式‘b’二进制模式&#xff08;与其他模式结合使用&#xff09;‘t’文本模式&#xff08;默认值&#xff0c;与其他模式结合使…...

django-filter的使用

django-filter是一个通用的、可重用的应用程序&#xff0c;它可以减轻视图代码的编写工作量。具体来说&#xff0c;它允许用户根据模型的字段筛选查询集&#xff0c;并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…...

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)

时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络) 目录时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现IWO…...

【C++】string的成员函数、成员常量和非成员函数

目录 string 1. string的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 字符串操作 2. string的成员常量 3. string的非成员函数 string 以下…...

网络互连模型:OSI 七层模型

OSI 七层模型 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xff09;。OSI 七层参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间网络互联的标准体系&#xff0c;一般称为 OSI 参考模型或七层模型。OSI 七层…...

18跨越语言:不同语言间进行RPC通信

在最开始介绍gRPC时我们讲到,gRPC具有灵活的兼容性,可以支持很多种编程语言,下面我们就使用在后端领域最常用的两种编程语言Go和Java,来体验一下gRPC在不同语言的项目间是如何进行通信的。 逻辑架构 由上图我们可以看出,Go语言设计gRPC的服务端,Java语言设计gRPC的客户端…...

解压缩工具:Bandizip 中文

bandizip是一款可靠和快速的压缩软件&#xff0c;它可以解压RAR、7Z、ZIP、ISO等数十种格式&#xff0c;也可以压缩7Z、ZIP、ISO等好几种常用格式&#xff0c;在压缩文件方面毫不逊色于winrar&#xff0c;适用于多核心压缩、快速拖放、高速压缩等功能&#xff0c;采用了先进快速…...

JAVA知识点全面总结2:面向对象

二.面向对象 1.面向对象有哪些重要的关键字&#xff1f;作用是什么&#xff1f; 2.理解多态的使用&#xff1f; 3.接口与抽象类的相同点和不同点&#xff1f; 4.equals和toString的判断&#xff1f; 5.新建对象的流程是什么&#xff1f;new一个对象&#xff1f; 6.深拷贝…...

DNS作用及工作原理

文章目录1. DNS作用2 DNS 三个组成部分&#xff1a;2.1 客户端2.2Local DNS2.3 权威域 DNS 服务器3 工作过程1. DNS作用 DNS 分为 Client 和 Server&#xff0c;Client 扮演发问的角色&#xff0c;也就是问 Server 一个 Domain Name&#xff0c;而 Server 必须要回答此 Domain…...

Android 9.0 wifi的随机mac地址修改为固定不变

1.前言 在9.0的系统rom产品定制化开发中,在系统默认的wifi的mac地址是会在联网前后会变化,因为默认是随机显示mac地址,所以会在连上wifi后mac地址会变动但是如果根据mac地址来升级 会引起一系列问题,为了避免这些问题 所以就要求固定mac地址,这就需要看wifi模块怎么改变ma…...

Apinto 网关 V0.11.1 版本发布,多协议互转,新增编码转换器,接入 Prometheus

Eolink 旗下 Apinto 开源网关再次更新啦~ 一起来看看是否有你期待的功能&#xff01; 1、协议转换功能上线 之前发布的 Apinto v0.10.0 已经支持了多协议的基本功能&#xff0c;实现多协议支持的一次验证。本次最新版本可以支持 HTTP 与 gRPC、HTTP 与 Dubbo2 之间的协议转换。…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...