使用 HTML/JavaScript 实现滑动切换效果的图片轮播

使用 html/javascript 实现滑动切换效果的图片轮播

本文将指导你如何使用 HTML、CSS 和 JavaScript 为图片轮播添加滑动切换效果。我们将通过动态添加和移除 CSS 类来实现图片的滑入和滑出动画,从而增强用户体验,使轮播图的切换更加流畅自然。本文提供了详细的代码示例和步骤,帮助你轻松实现这一效果。

实现原理

核心思想是利用 CSS 的 animation 属性定义滑入 (slide-in) 和滑出 (slide-out) 动画,然后通过 JavaScript 在切换图片时动态地添加和移除这些 CSS 类。

步骤详解

HTML 结构:

首先,确保你的 HTML 结构包含一个容器,用于包裹轮播图的图片。每个图片都应该放在一个 div 元素中,例如 mySlides。

立即学习“Java免费学习笔记(深入)”;

1 / 6
@@##@@
Image 1 Description
2 / 6
@@##@@
Image 2 Description

CSS 样式:

定义 slide-in 和 slide-out 动画。确保你的 CSS 文件包含以下内容:

.slide-in {    -webkit-animation-name: slide-in-right;    -webkit-animation-duration: 1.5s;    animation-name: slide-in-right;    animation-duration: 1.5s;}.slide-out {    -webkit-animation-name: slide-out-left;    -webkit-animation-duration: 1.5s;    animation-name: slide-out-left;    animation-duration: 1.5s;}@keyframes slide-in-right {    from {        transform: translateX(100%);    }    to {        transform: translateX(0%);    }}@keyframes slide-out-left {    from {        transform: translateX(0%);    }    to {        transform: translateX(-100%);    }}

slide-in 动画:图片从右侧滑入。slide-out 动画:图片向左侧滑出。@keyframes 定义了动画的具体过程。

JavaScript 代码:

修改 JavaScript 代码,在显示新图片和隐藏旧图片时,动态添加和移除 CSS 类。

function showSlides(n) {    var i;    var slides = document.getElementsByClassName("mySlides");    if (n > slides.length) {        slideIndex = 1    }    if (n < 1) {        slideIndex = slides.length    }    // 找到当前显示的 slide 和即将显示的 slide    let slideToHide = document.querySelector(".mySlides[style='display: block;']");    let slideToShow = slides[slideIndex - 1];    // 移除所有 slides 的显示样式    for (i = 0; i < slides.length; i++) {        slides[i].style.display = "none";    }    // 添加动画类    if (slideToHide) {        slideToHide.classList.remove("slide-in");        slideToHide.classList.add("slide-out");    }    slideToShow.classList.remove("slide-out");    slideToShow.classList.add("slide-in");    // 显示 slide    slideToShow.style.display = "block";}

首先,获取当前显示的 slide (slideToHide) 和即将显示的 slide (slideToShow)。然后,移除 slideToHide 的 slide-in 类并添加 slide-out 类,使其滑出。接着,移除 slideToShow 的 slide-out 类并添加 slide-in 类,使其滑入。最后,设置 slideToShow 的 display 属性为 “block”,使其可见。

完整示例

* {    box-sizing: border-box}body {    font-family: nunito sans;    margin: 0}.mySlides {    display: none;}center > img {    vertical-align: middle;    height: 75vh;    width: auto !important;}.slideshow-container {    max-width: 1250px;    position: relative;    margin: auto;}/* Next & previous buttons */.prev,.next {    cursor: pointer;    position: absolute;    top: 50%;    width: auto;    padding: 16px;    margin-top: -22px;    color: white;    font-weight: bold;    font-size: 18px;    transition: 0.6s ease;    border-radius: 0 3px 3px 0;    user-select: none;}/* Position the "next button" to the right */.next {    right: 0;    border-radius: 3px 0 0 3px;}/* On hover, add a black background color with a little bit see-through */.prev:hover,.next:hover {    background-color: rgba(0, 0, 0, 0.8);}/* Caption text */.text {    color: #FFFFFF;    font-size: 22px;    position: absolute;    margin: 5px 0px;    width: 100%;    text-align: center;}/* Number text (1/3 etc) */.numbertext {    color: #ffffff;    font-size: 12px;    padding: 8px 12px;    position: absolute;    top: 0;}/* Fading animation */.slide-in {    -webkit-animation-name: slide-in-right;    -webkit-animation-duration: 1.5s;    animation-name: slide-in-right;    animation-duration: 1.5s;}.slide-out {    -webkit-animation-name: slide-out-left;    -webkit-animation-duration: 1.5s;    animation-name: slide-out-left;    animation-duration: 1.5s;}@keyframes slide-in-right {    from {        transform: translateX(100%);    }    to {        transform: translateX(0%);    }}@keyframes slide-out-left {    from {        transform: translateX(0%);    }    to {        transform: translateX(-100%);    }}/* On smaller screens, decrease text size */@media only screen and (max-width: 300px) {    .prev,    .next,    .text {        font-size: 11px    }}
1 / 6
@@##@@
HR Koopman postcard of 112th and Michigan, facing north, in 1896.
2 / 6
@@##@@
HR Koopman photograph of workmen digging sewer system on 111th and Michigan in 1900.
3 / 6
@@##@@
111th and Michigan in 1903 taken by HR Koopman.
4 / 6
@@##@@
HR Koopman postcard showing a busy section of South Michigan Avenue on 113th street in 1904.
5 / 6
@@##@@
Roseland celebrates its 60th anniversary with a huge parade on July 5th, 1909.
6 / 6
@@##@@
HR Koopman photograph of 115th and Michigan in 1910 showing horse and buggies, a streetcar, and bicycles.

var slideIndex = 0; showSlides(); function showSlides() { var i; var slides = document.getElementsByClassName("mySlides"); for (i = 0; i slides.length) {slideIndex = 1} // 找到当前显示的 slide 和即将显示的 slide let slideToHide = document.querySelector(".mySlides[style='display: block;']"); let slideToShow = slides[slideIndex - 1]; // 添加动画类 if (slideToHide) { slideToHide.classList.remove("slide-in"); slideToHide.classList.add("slide-out"); } slideToShow.classList.remove("slide-out"); slideToShow.classList.add("slide-in"); slides[slideIndex-1].style.display = "block"; setTimeout(showSlides, 2000); // Change image every 2 seconds }

注意事项

动画时长: 根据你的喜好调整 animation-duration 属性的值。动画效果: 可以尝试不同的 animation-timing-function 属性值,例如 ease-in-out,来改变动画的缓动效果。兼容性: 对于一些老旧的浏览器,可能需要添加 CSS 前缀,例如 -webkit-。性能: 复杂的动画可能会影响性能,特别是移动设备上。尽量保持动画简洁高效。

总结

通过本文的教程,你已经学会了如何使用 HTML、CSS 和 JavaScript 为图片轮播添加滑动切换效果。这种方法简单易懂,可以有效地提升用户体验。希望你能将这些知识应用到你的项目中,创造出更具吸引力的网页。

使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播使用 HTML/JavaScript 实现滑动切换效果的图片轮播

以上就是使用 HTML/JavaScript 实现滑动切换效果的图片轮播的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1583568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
解决CSS中合并厂商前缀伪类选择器失效的问题
上一篇 2025年12月23日 00:08:32
解决JavaScript控制CSS动画无法重复播放的问题
下一篇 2025年12月23日 00:08:45

相关推荐

  • 如何为VSCode配置用户代码片段(User Snippets)?

    配置VSCode用户代码片段可提升编码效率。通过文件→首选项→配置用户代码片段或快捷键打开面板,选择语言或创建全局片段。在JSON文件中定义名称、prefix(触发词)、body(代码内容)和description,支持$1、$2等占位符控制光标跳转,$0为最终位置。可使用${CURRENT_YEA…

    2026年9月11日
    100
  • 如何在mysql中使用正则表达式REGEXP查询数据

    答案:MySQL中使用REGEXP进行正则匹配,支持^、$、.、*、+、?、[]、|等符号,可实现开头、结尾、包含、多选、排除、数字匹配等查询,默认不区分大小写,可用BINARY控制大小写敏感,建议先在小数据集测试。 在MySQL中,可以使用REGEXP(或RLIKE)操作符进行正则表达式匹配查询。…

    2026年9月11日
    400
  • Bing浏览器怎么查看网页源码_Bing浏览器网页源代码查看方法

    1、在Bing浏览器地址栏输入view-source:加网址可直接查看HTML源码;2、右键选择“检查”或3、按F12/Ctrl+Shift+I调出开发者工具,查看实时DOM结构。 如果您想在Bing浏览器中查看某个网页的源代码,可以通过多种方式实现。以下是几种常用的方法,帮助您快速获取网页的原始H…

    2026年9月11日
    100
  • 如何在mysql中升级客户端和服务端版本

    先确认当前MySQL版本并备份数据,再停止服务升级服务端和客户端,最后启动服务并验证功能。具体步骤包括:1. 使用SELECT VERSION()和mysql -V查看版本;2. 用mysqldump备份数据库、配置文件及权限设置;3. 停止MySQL服务并确认进程结束;4. 根据操作系统通过APT…

    2026年9月11日
    100
  • 如何使用Java的LocalDate与LocalDateTime类

    LocalDate和LocalDateTime是Java 8引入的不带时区的日期时间类,分别表示年月日和年月日时分秒,适用于生日、订单时间等场景,提供now()、of()、plus/minus、isBefore/isAfter等方法支持创建、计算和比较操作,通过ChronoUnit可计算日期间隔,配…

    2026年9月11日
    000
  • 如何在mysql中开发简单社交平台项目

    答案是设计合理的数据库结构并实现基础功能。首先创建用户、动态、评论、点赞和关注关系表,定义主外键关联;接着通过SQL完成发帖、评论、点赞、关注等操作;再结合Python等后端语言连接MySQL执行参数化查询防止注入;最后为常用字段添加索引、使用UTF8MB4字符集并定期备份数据以优化性能与安全。 要…

    2026年9月11日
    100
  • win10自带应用闪退怎么办_win10系统应用崩溃修复教程

    首先重置故障应用,若无效则通过PowerShell重新部署所有应用;接着创建新用户账户排查配置问题,运行SFC扫描修复系统文件,并确保Windows系统更新至最新版本以解决自带应用闪退问题。 如果您在使用Windows 10时,发现计算器、邮件、日历等系统自带应用频繁闪退或无法启动,这通常与应用包损…

    2026年9月11日
    000
  • Sora输入图像怎么使用_Sora图像到视频转换完整教程示例

    首先准备一张高分辨率PNG或JPG图像并命名为input_image.jpg放入inputs/文件夹,随后在config.yaml中设置duration: 5、fps: 30和motion_intensity: medium,接着在终端运行python run.py –mode imag…

    2026年9月11日
    000
  • windows怎么测试扬声器_Windows扬声器测试方法

    首先使用系统音频疑难解答检测并修复声音问题,接着通过声音控制面板测试扬声器输出,检查并更新音频驱动程序,更换播放设备对比排查硬件故障,最后利用第三方工具进行深度音频测试。 如果您发现Windows系统的扬声器没有声音或声音异常,可能是驱动问题、硬件故障或系统设置错误导致的。通过系统内置工具和手动检测…

    2026年9月11日
    000
  • 如何为VSCode设置自定义代码片段?

    设置自定义代码片段可提升VSCode编码效率,需创建JSON格式文件并定义触发词、内容和描述;通过“用户代码片段”选项选择语言或创建全局片段,编辑对应JSON文件添加名称、prefix、body和description;例如输入”log”可生成console.log语句,使用…

    2026年9月11日
    100
  • Java中如何用flatMap扁平化嵌套集合

    答案:flatMap用于将嵌套集合展开为单层集合。通过将每个元素转换为流并合并,实现多层结构的扁平化,如List<List>转为List,每调用一次flatMap降一级嵌套。 在Java中,当你处理嵌套集合(比如 List<List>)时,常常需要把多层结构“拍平”成单层集合…

    2026年9月11日
    100
  • Linux目录结构与Windows系统的区别

    Linux目录结构与Windows系统的区别Linux目录结构与Windows系统的区别Linux目录结构与Windows系统的区别Linux目录结构与Windows系统的区别

    Linux采用统一的树状目录结构,根目录为/,所有设备挂载其下,系统文件集中于/bin、/etc等目录,用户数据存于/home,路径使用/分隔且区分大小写,设备以文件形式存在于/dev;Windows以C:、D:等盘符为独立根目录,系统文件在C:Windows,用户数据在C:Users,路径用分隔且…

    2026年9月11日 用户投稿
    100
  • vivo浏览器和谷歌浏览器哪个好用_vivo与Chrome浏览器对比分析

    vivo浏览器在性能、功能、安全性和系统兼容性方面优于Chrome,尤其适合国内用户;其启动速度快、集成本地化服务、广告管理更优,且资源占用低、稳定性强,支持个性化设置与多任务操作,而Chrome受限于网络环境与较高资源消耗,在本土化体验上逊色。 如果您在vivo手机上需要选择一款高效的浏览器,可能…

    2026年9月11日
    100
  • 百家号收入如何提高_百家号收入提高的策略与操作指南

    提升百家号收入需系统化运营:一、坚持原创并结合百度热词优化内容质量和SEO;二、增加图文与视频融合,参与短剧计划及多平台分发提升完播率;三、通过引导评论、回复互动和粉丝群运营增强用户粘性;四、拓展商品带货、品牌推广、付费课程及平台激励等多元变现渠道;五、利用后台数据分析高收益内容与受众画像,持续优化…

    2026年9月11日
    100
  • AI视频一键部署教程 | 本地AI视频生成软件指南

    本地一键部署AI视频生成软件可通过ComfyUI整合包、DS本地部署大师或Ollama组合方案实现,用户无需复杂操作即可完成安装并生成视频。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 如果您希望在个人电脑上运行AI视频生成软件,实现文生…

    2026年9月11日
    100
  • 怎样通过自定义主题和CSS Hack(需谨慎)来彻底改变VSCode的视觉外观?

    通过自定义主题和安全的CSS注入可深度个性化VSCode外观:首先创建或修改颜色主题调整语法高亮与界面色彩,再利用Custom CSS and JS Loader扩展在settings.json中导入外部CSS文件,针对性修改标签页、侧边栏等UI元素样式,同时避免直接修改核心文件以防止更新冲突,保持…

    2026年9月11日
    100
  • Swoole如何做跨域处理?跨域请求如何支持?

    Swoole处理跨域需在onRequest中设置CORS响应头,关键在于正确处理OPTIONS预检请求并返回Access-Control-Allow-Origin、Methods、Headers等头部信息,同时对实际请求添加相应头信息;生产环境应避免使用*通配符,推荐结合Hyperf、EasySwo…

    2026年9月11日
    000
  • win10提示“ms-settings:display”打不开怎么办 _Win10ms-settings:display打不开修复方法

    首先重置“设置”应用并检查URI协议注册状态,再通过DISM和SFC修复系统文件,创建新用户账户测试问题是否依旧,最后检查组策略设置确保未禁用设置访问,依次排查解决ms-settings:display无法打开的问题。 如果您尝试通过运行命令打开Windows 10的显示设置,但系统提示“ms-se…

    2026年9月11日
    500
  • 在Java中如何开发简易新闻发布系统

    用Java做简易新闻发布系统,核心是理清用户、新闻和后台管理的交互逻辑。重点在于搭建基础环境、设计必要数据表,并实现增删改查功能。只要掌握Servlet和JSP的基本用法,配合数据库操作,就能快速做出一个可运行的原型。准备开发环境与项目结构开始前先配置好基础运行环境,确保代码能顺利执行。安装JDK并…

    2026年9月11日
    000
  • WordPress插件邮件通知接收者定制:钩子应用详解

    本文详细阐述了如何在WordPress中利用过滤器(Filter Hook)机制,安全且高效地修改第三方插件的默认行为,特别是针对邮件通知的接收者。通过分析插件源代码,理解钩子参数,并编写自定义函数,开发者可以精确控制插件发送邮件的目标地址,避免直接修改插件文件带来的维护问题。 理解WordPres…

    2026年9月11日
    100

发表回复

登录后才能评论
关注微信