新闻中心

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

2025-10-12
浏览次数:
返回列表

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

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

实现原理

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

步骤详解

  1. HTML 结构:

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

    <div class="slideshow-container">
      <div class="mySlides slide-in" style="display: block;">
        <center>
          <div class="numbertext">1 / 6</div>
          @@##@@
          <div class="text">Image 1 Description</div>
        </center>
      </div>
      <div class="mySlides slide-in" style="display: none;">
        <center>
          <div class="numbertext">2 / 6</div>
          @@##@@
          <div class="text">Image 2 Description</div>
        </center>
      </div>
      </div>
  2. CSS 样式:

    Asp开源商城系统YothSHOP Asp开源商城系统YothSHOP

    YothSHOP是优斯科技鼎力打造的一款asp开源商城系统,支持access和Sql server切换,完善的会员订单管理,全站生成静态html文件,SEO优化效果极佳,后台XP模式和普通模式随意切换,极易操作,欢迎使用! Asp开源商城系统YothSHOP功能介绍:1.使用静态页和程序页分离技术,网站可自由开启和关闭,实现全站生成静态页,可动静态切换,方便二次开发和后期维护。2.管理员管理:后台

    Asp开源商城系统YothSHOP 0 查看详情 Asp开源商城系统YothSHOP

    定义 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 定义了动画的具体过程。
  3. J*aScript 代码:

    修改 J*aScript 代码,在显示新图片和隐藏旧图片时,动态添加和移除 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",使其可见。

完整示例

<!DOCTYPE html>
<html>
<head>
<style>
* {
    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
    }
}
</style>
</head>
<body>

<div class="slideshow-container" width="100%">
    <div class="mySlides slide-in" style="display: block;">
        <center>
            <div class="numbertext">1 / 6</div>
            @@##@@
            <div class="text">HR Koopman postcard of 112th and Michigan, facing north, in 1896.</div>
        </center>
    </div>
    <div class="mySlides slide-in" style="display: none;">
        <center>
            <div class="numbertext">2 / 6</div>
            @@##@@
            <div class="text">HR Koopman photograph of workmen digging sewer system on 111th and Michigan in 1900.</div>
        </center>
    </div>
    <div class="mySlides slide-in" style="display: none;">
        <center>
            <div class="numbertext">3 / 6</div>
            @@##@@
            <div class="text">111th and Michigan in 1903 taken by HR Koopman.</div>
        </center>
    </div>
    <div class="mySlides slide-in" style="display: none;">
        <center>
            <div class="numbertext">4 / 6</div>
            @@##@@
            <div class="text">HR Koopman postcard showing a busy section of South Michigan Avenue on 113th street in 1904.</div>
        </center>
    </div>
    <div class="mySlides slide-in" style="display: none;">
        <center>
            <div class="numbertext">5 / 6</div>
            @@##@@
            <div class="text">Roseland celebrates its 60th anniversary with a huge parade on July 5th, 1909.</div>
        </center>
    </div>
    <div class="mySlides fade" style="display: none;">
        <center>
            <div class="numbertext">6 / 6</div>
            @@##@@
            <div class="text">HR Koopman photograph of 115th and Michigan in 1910 showing horse and buggies, a streetcar, and bicycles.</div>
        </center>
    </div>
</div>
<br>

<script>
    var slideIndex = 0;
    showSlides();

    function showSlides() {
        var i;
        var slides = document.getElementsByClassName("mySlides");
        for (i = 0; i < slides.length; i++) {
            slides[i].style.display = "none";
        }
        slideIndex++;
        if (slideIndex > 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
    }
</script>

</body>
</html>

注意事项

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

总结

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

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

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


# 单选框  # 网站建设建站制作方案  # 四平网站优化培训招聘  # 广东抖音seo教程  # 昌邑网站推广产品  # 优化网站排名是什么原理  # 长沙霜天seo  # 苏州奶茶加盟网站建设  # 永州电子商务网站建设  # 擦边球微博关键词排名  # 女装网店的推广营销策略  # 显示效果  # 全站  # 如何使用  # css  # 滑入  # 滑出  # 使其  # 表单  # 移除  # 开源  # win  # ai  # ssl  # 浏览器  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: msn官网入口地址手机版 msn官方网站手机最新链接  提升Kafka消费者健壮性:会话超时处理与消息处理语义  J*aScript设计模式实践_j*ascript代码优化  Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略  微信网页版官方入口直达 微信网页版网页版登录使用方法  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询  CSS实现侧边栏导航项全宽圆角悬停背景效果  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  最新韩小圈网页版登录入口_官网在线观看官方链接  php源码怎么看淘宝客系统_看php源码淘宝客系统技巧  利用5118提升短视频内容效果_5118短视频关键词优化方法  外媒分析《GTA6》定价:卖100美元可以但真没必要!  J*aScript实现动态背景色下的文本与按钮颜色自适应调整  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  126邮箱账号注册 电脑版登录入口  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  excel怎么制作工资条 excel快速生成工资条的方法  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  Go RPC HTTP服务正确实现与常见陷阱解析  XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  多闪网页版在线观看免费入口_多闪官网访问入口  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  Pygame教程:解决用户输入与游戏状态更新不同步问题  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达  如何仅使用CSS更改登录界面背景图像图标的颜色  Angular中父组件异步更新子组件复选框状态的实践指南  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  解决Flask中Quill编辑器内容提交失败及TypeError的指南  outlook中文官网入口地址 outlook官方中文版直达首页链接  Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】  Django表单提交验证失败后保持字段值不刷新  ArrayList与LinkedList核心操作的Big-O复杂度分析  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  Win11网速慢怎么解决 Win11网络设置优化解除限速  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  AO3同人作品网入口 AO3搜索引擎官网永久地址  怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南 

搜索