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

利用css的动画效果制作轮播图

使用 CSS 动画制作轮播图

下面是一个纯 CSS 实现的轮播图方案,无需 JavaScript:

实现原理
  1. 使用 @keyframes 创建动画序列
  2. 通过 animation 属性控制轮播时间和循环方式
  3. 利用 transform: translateX() 实现水平滑动效果
  4. 使用 overflow: hidden 隐藏非活动内容
HTML 结构
<div class="slider"><div class="slides"><div class="slide">内容 1</div><div class="slide">内容 2</div><div class="slide">内容 3</div></div>
</div>

CSS 样式
.slider {width: 100%;overflow: hidden;position: relative;
}.slides {display: flex;width: 300%; /* 3张幻灯片 */animation: slide 12s infinite;
}.slide {flex: 0 0 33.333%; /* 每张幻灯片宽度 */min-height: 300px;display: flex;align-items: center;justify-content: center;background-size: cover;
}/* 定义动画关键帧 */
@keyframes slide {0%, 25% {transform: translateX(0);}33.3%, 58.3% {transform: translateX(-33.333%);}66.6%, 91.6% {transform: translateX(-66.666%);}100% {transform: translateX(0);}
}/* 幻灯片内容示例样式 */
.slide:nth-child(1) { background: linear-gradient(45deg, #ff9a9e, #fad0c4); }
.slide:nth-child(2) { background: linear-gradient(45deg, #a1c4fd, #c2e9fb); }
.slide:nth-child(3) { background: linear-gradient(45deg, #d4fc79, #96e6a1); }

关键参数说明
  1. 动画时长12s 表示完整轮播周期
    • 每张幻灯片显示时间:约 3 秒
    • 切换过渡时间:约 0.5 秒
  2. 百分比计算
    • 每张幻灯片占 33.333% 宽度
    • 时间分配:25% 显示 + 8.3% 切换
  3. 无限循环infinite 属性实现永久轮播
效果优化技巧
  1. 添加悬停暂停
    .slides:hover {animation-play-state: paused;
    }
    

  2. 平滑过渡
    .slides {transition: transform 0.5s ease-in-out;
    }
    

  3. 指示器(需额外 HTML):
    /* 指示器容器 */
    .indicators {position: absolute;bottom: 20px;left: 50%;transform: translateX(-50%);
    }/* 指示点 */
    .indicator {display: inline-block;width: 12px;height: 12px;border-radius: 50%;background: rgba(255,255,255,0.5);margin: 0 5px;
    }
    

数学原理

设幻灯片数量为 $n$,则:

  • 容器宽度:$100n%$
  • 单张宽度:$100/n%$
  • 关键帧位置:
    • 第 $k$ 张开始位置:$100(k-1)/n%$
    • 显示时间占比:$t_d/t_{total}$
    • 切换时间占比:$t_t/t_{total}$

本例中 $n=3$,总时间 $T=12\text{s}$,显示时间 $t_d=3\text{s}$,切换时间 $t_t=1\text{s}$。

浏览器兼容性
  • 支持所有现代浏览器(Chrome/Firefox/Safari/Edge)
  • IE10+ 需添加 -ms- 前缀
  • 移动端需添加触控优化(需 JavaScript 扩展)

提示:可通过调整动画时长百分比精确控制每张幻灯片的显示时间,修改 @keyframes 中的百分比值即可实现不同切换效果。

http://www.dtcms.com/a/422467.html

相关文章:

  • docker镜像和
  • CSS通用优惠券样式
  • STM32F1学习——CAN外设(上)
  • Docker Desktop实战、问题记录
  • 《 Linux 点滴漫谈: 二 》全面掌握 Linux 系统安装与环境准备,迈出学习第一步
  • 从0死磕全栈之Next.js 中的 CSS 方案全解析:Global CSS、CSS Modules、Tailwind CSS 怎么选?
  • 先域名 还是先做网站蜘蛛搜索引擎
  • 《C++进阶之C++11》【可变参数模板 + emplace接口 + 新的类功能】
  • 什么网站可以做兼职怎么做提卡网站
  • 【Linux基础知识系列:第一百四十四篇】使用find命令查找和处理文件
  • cocos 武器攻击敌人后 将碰撞node传给角色脚本 有角色脚本传递计算伤害 调用敌人脚本 敌人自己计算血量 如果超过最大血量 自己删除
  • PySide6 主窗口(QMainWindow)菜单(QMenu)实现打开并读取文本文件
  • Steam秋季特卖倒计时!用UU远程国庆随时购史低游戏!
  • Linux系统C++开发环境搭建工具(一)—— gflags/gtest/spdlog 使用指南
  • MySQL逻辑备份工具mysqldump:原理剖析与实操指南
  • Java-Spring入门指南(十一)代理模式与Spring AOP实战
  • 实名认证接口-识破虚假身份:科技为信任筑起第一道防线
  • 柘林网站建设wordpress改背景图片
  • RokcetMQ事务消息详解
  • Athena + S3 数据分析实战(深度版):从数据湖到可视化 BI
  • IP纯净度检测工具
  • 第四部分:VTK常用类详解(第114章 vtkStreamTracer流线追踪类)
  • MATLAB的CFAR(恒虚警率)图像目标检测
  • 2025三掌柜赠书活动第三十五期 AI辅助React Web应用开发实践:基于React 19和GitHub Copilot
  • HRPC在Polaris存储系统中的应用
  • 网站在百度无法验证码怎么办网站开发技术有包括
  • 【AI时代速通QT】第八节:Visual Studio与Qt-从项目迁移到多版本管理
  • Spring线程池:ThreadPoolExecutor与ThreadPoolTaskExecutor终极对比
  • IDEA创建SpringBoot项目使用JDK1.8
  • 深入分析JAR和WAR包的区别 (指南七)