纯CSS实现轮播图

2023-10-27

利用CSS实现一个轮播图,实现无缝衔接、平滑过渡、hover暂停效果。

本文利用纯CSS实现一个轮播图,代码简捷、实现简单,没有js的接入,为一定场景下的轮播图提供一个简单的实现。先看效果图:

1. 思路解析

我们把整个轮播分为三个区域解析:分别是外层的视口区域,负责展示轮播内容,然后是整个内容区,在内容区下附加一个填充区域,补充区域的内容和轮播首屏的内容一致。

当内容区的最后一屏数据向上滚动的时候,补充区的数据随之滚动。当滚动动作结束之后,立即让内容区的第一屏数据和补充区域的数据返回原位。因为补充区域的数据和内容区的第一屏数据是一致的,所以,此次的回复原位不会让用户在视觉上感受到,从而做到平滑无感替换。具体滚动过程详见: 

 把填充区域的颜色设置成和内容区一样的颜色,效果:

 把视口区域设置查出区域不可见,就得到了我们最初的轮播效果:

 2.代码实现

根据以上思路,我们编写代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css轮播</title>
</head>
<body>
	<div class='wrapDiv' >
		<ul class="ul-scroll">
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>

			<li>6</li>
			<li>7</li>
			<li>8</li>
			<li>9</li>
			<li>10</li>
		</ul>
		<ul class="ul-scroll ul-fill">
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
		</ul>
	</div>
	<style>
		.wrapDiv{
			width:300px;
			height:150px;
			overflow:hidden;
			border:1px solid blue;
			position:relative;
		}
		.ul-scroll{
			position:absolute;
			width:100%;
			height:300px;
			animation:run 4s infinite;
			margin-top:0px;
			padding:0px;
		}
		.ul-fill{
			top:300px;
		}
		ul li {
			background-color: '#ddd';
			height:26px;
			padding:2px 0;
			background-color: #99a9bf;
			background-clip: content-box;
			text-align: center;
			list-style:none;
			margin:0
		}
	
		@keyframes run {
			0% {
				transform:translateY(0);
			}
			40% {
				transform:translateY(0);
			}
			50%{
				transform:translateY(-50%);
			}
			90%{
				transform:translateY(-50%);
			}
			100%{
				transform:translateY(-100%);
			}
		}
	</style>
</body>
</html>

 注意需要合理设置li的高度以及wrapDiv的高度。

3.鼠标悬停

通过以上方式,我们得到了一个自动播放、无缝衔接的轮播图。轮播图不可或缺的一个功能点是,当鼠标放上去的时候播放停止。由于我们的动画是通过CSS的animation实现的,所以悬停还是通过修改CSS的方式去实现。要通过CSS去停止动画的播放,就不得不用到CSS的animation-play-state属性。该属性可以控制animation的暂停、播放。

添加如下CSS样式:

.wrapDiv:hover .ul-scroll{
	animation-play-state:paused
}

当鼠标悬停在外层的视口区域时,停止两个ul的动画。鼠标移走时,动画继续: 

总结

本文通过CSS实现可悬停的轮播图效果,不需要js进行复杂的位置计算。为小伙伴们提供一种轮播图的实现思路。喜欢的小伙伴们别忘了点赞收藏关注哈~~。最后,欢迎关注公众号:【前端技术站】。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

纯CSS实现轮播图 的相关文章

  • 将无序列表转换为目录

    参考这个小提琴 http jsfiddle net exGnZ http jsfiddle net exGnZ 你好 我正在尝试用无序列表和前导点重现目录 不幸的是 当内容很长时 格式就会崩溃 有谁知道如何让下图中的第二章与点出现在同一行
  • 一行中单独一个元素的选择器? [复制]

    这个问题在这里已经有答案了 我们有带有 2 个子元素的 Flex 容器 当我们调整窗口大小并且其中一个弹性项目换行时 每个元素都位于其自己的行上 有没有像这样的选择器 when alone in row flex parent flex f
  • 如何将 em 标签重新设置为粗体而不是斜体

    我想让文本在 em 标记粗体而不是斜体 有没有办法用 CSS 来实现这一点 当然 使用以下 CSS 代码 em font weight bold font style normal em
  • 设置列表中前 10 项的样式

    可以使用像 li nth child 这样的东西来设置列表中前十项的样式吗 ol li item 1 li li item 2 li li item 3 li li item 4 li li item 5 li li item 6 li l
  • YouTube 视频内容涵盖 IE < 9 中的 CSS 下拉菜单

    我使用 CSS 创建了下拉菜单 并将 YouTube 视频放置在导航栏下方的框中 使用 IE 8 时 下拉菜单落后于 YouTube 视频 尽管带有导航栏的 div 的 z index 比带有 YouTube 视频的 div 更高 该问题在
  • CSS 中的 Data-URI SVG 背景在 Firefox 中不起作用

    好的 这就是我想做的 我的 css 文件中有这段代码 form row textfield hover textfield m hover background image url data image svg xml base64 PHN
  • 在 PhoneGap 应用程序中打开用 HTML 和 CSS 制作的 PDF

    我的 iPad 应用程序在 Phone Gap 中遇到一个奇怪的问题 问题是我必须通过链接在我的应用程序中打开 PDF 文档 当我单击打开 PDF 的链接时 它会向我显示没有反向链接的 PDF 文档 因此 当我通过链接在应用程序中打开 PD
  • 平均分配固定大小容器的空间。 Flexbox 的案例?

    如何设计 HTML CSS 结构 将固定大小的容器水平分成三部分 第一部分的高度应与其内容需求一样高 第二部分和第三部分将共享剩余的空间五五十 无论它们的内容如何 如果其内容的大小超过此限制 则该部分应该是可滚动的 它的 HTML 部分很简
  • 为什么内部 DIV 会溢出到外部 DIV 之外?

    我已经远离 HTML 和 CSS 很久了 找不到这个简单问题的解决方案 我有一个 div 位于另一个 div 中 外层黑色 内层橙色 我的 HTML 和 CSS 是 outer position fixed width 30 height
  • CSS 过滤器在 Firefox 中不起作用

    我正在尝试 CSS 过滤器 但它在我的 Firefox 15 0 浏览器中不起作用 HTML div class google img src https www google com images srpr logo3w png div
  • @fontface - 禅宗购物车中的 403 禁止错误

    我不确定这是否是发布此内容的正确位置 因为我不知道问题出在哪里 基本上 字体现在对我来说真的很痛苦 而且没有任何效果 我尝试从 google fonts 加载字体 但遇到了 IE 问题 所以我决定下载它们并自己提供服务 但现在它无法在任何浏
  • 浮动CSS属性导致父div不继承高度?

    我在 div 中有一个元素设置为float right但是 它会导致最外面的 div 不环绕 这是jsfiddle http jsfiddle net W792X 5 for it 我试图让提交按钮在 div 内浮动 但设置该属性似乎会导致
  • 如何在 CSS 中将容器内的多个 div 居中

    我正在测试像 Windows Metro 风格的中心分隔线 container height 300px width 70 background EEE margin 10px auto position relative block ba
  • Material-UI 中 Box 和 Grid 有什么区别?

    有什么区别Box https material ui com components box box and Grid https material ui com components grid grid在 Material UI 中 何时使
  • 使文本背景透明但不使文本本身透明

    所以我遇到了问题 我环顾四周 但没有运气 我想让我的身体背景透明 但让文本不透明 就像现在一样 我继续使两者保持相同的不透明度 这是我的代码 charset utf 8 body font 100 1 4 Verdana Arial Hel
  • 如何在node.js中使用express框架提供图像文件?

    在我的应用程序中 我使用 Express 框架来服务客户端文件 但是在为 html 元素提供背景图像时 它显示无法加载给定的 url var express require express http require http var app
  • 让两个按钮彼此相邻

    我的设计有问题 我的产品页面上有两个按钮 然而 由于其中一个处于表格中 因此它们彼此叠置 参见图片 我想让这两个按钮彼此相邻 有人可以帮我吗 下面我添加了 HTML 和 CSS 代码 提前致谢 HTML div class containe
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • 具有相等宽度和高度 TD 的响应式表格

    如何创建每个单元格 TD 具有相同宽度和高度的响应式 HTML 表格 因此 当我调整浏览器窗口的大小或调整表格容器的大小时 表格将调整大小 但每个单元格将具有相同的高度和宽度 基金会不关心这个 当我用固定宽度和高度 以像素为单位 初始化 T

随机推荐

  • #PCIE# PCIE基础知识篇(3)

    写在前面 本文章转载自老狼知乎 感谢分享 随着AMD新一代CPU的发布 PCIe 4 0 Gen4 也进入了人们的视线 然而Intel随后宣传PCIe 4 0对消费市场用处不大 AMD则反讽Intel吃不到葡萄说葡萄酸 正在吃瓜群众搬板凳看
  • could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the n

    如果你在创建自定义网络时 docker network create driver bridge my net出现下面的提示 Error response from daemon could not find an available no
  • 【Vue3项目】登录注册--双Token机制

    目录 前言 什么是双Token机制 双Token的实现流程 前言 最近同项目的伙伴告诉我们一个 新词汇 双Token登录机制 emmmmm 确实没了解过 据说是在实现token长期有效的同时 防止token被第三方盗用 提高用户信息的安全性
  • ReactNative系列之十三WebStorm的JSX语法配置及自动补全设置

    1 开发ReactNative常用工具 WebStorm Sublime Atom 2 配置WebStorm的ReactNative语法 a 下载 git clone https github com virtoolswebplayer R
  • ES 搜索20 (function_score 和 field_value_factor 自定义评分)

    自定义评分 设想有个网站供用户发布博客并且可以让他们为自己喜欢的博客点赞 我们希望将更受欢迎的博客放在搜索结果列表中相对较上的位置 同时全文搜索的评分仍然作为相关度的主要排序依据 可以简单的通过存储每个博客的点赞数来实现它 在搜索时 可以将
  • DHCP协议及其实验(eNSP)

    目录 一 DHCP 1 1 DHCP作用 1 2 DHCP地址池 1 3 DHCP报文类型 1 4 DHCP工作原理 对DHCP工作原理的思考 1 5 DHCP租期更新 1 6 DHCP重绑定 1 7 IP地址释放 二 DHCP实验 2 1
  • C++控制台RPG游戏:对话系统

    具体实现思路 CTalk类继承窗口基类 里面封装了updata 和onRander 方法 里面包含了结构体SArrTalk m pArrTalk 用来存对话数据 CTalk类控制对话的进行 以及数据的渲染 而对话的内容则存在相应的文件之中
  • 使用OpenCV,Haar级联检测器进行面部、眼睛、嘴部检测

    使用OpenCV Haar级联检测器进行面部 眼睛 嘴部检测 1 效果图 2 原理 2 1 Haar级联是什么 2 2 Haar级联的问题与局限性 2 3 Haar级联预训练的模型 3 源码 3 1 图像检测 3 2 实时视频流检测 参考
  • 【进阶】使用Excel进行回归分析,预测真实值

    预备阅读 进阶 使用Excel进行相关分析 前言 昨天学习了Excel中的相关分析 在数据分析中 相关分析和回归分析关系紧密 今天来学习下Excel中的回归分析 回归分析 回归分析 regressionanalysis 是确定两种或两种以上
  • 向量大小和归一化(vector magnitude & normalization)、向量范数(vector norm)、标量/向量/矩阵/张量

    一 向量大小 首先一个向量的长度或者大小一般记为 上图中的平面向量的大小计算如下 空间向量的大小计算如下 维复向量的大小计算如下 二 向量归一化 向量归一化即将向量的方向保持不变 大小归一化到1 向量的归一化向量为 三 向量范数 范数是一种
  • ant design pro上传图片到后端

    我们这里是前端将图片上传到后端 然后后端这里再上传到阿里云的OSS 并返回一个文件的路径给前端 先看效果 上传后生成的图片 前端 pageList js const props name avatar listType picture ca
  • Servlet基础_0300_Cookie

    web服务器和Client基础 1 web服务器可以向客户端写内容 2 web服务器向客户端写的内容只能是文本文件 3 浏览器客户端可以阻止web服务器写入东西 4 web服务器端的servlet只能拿自己webapp的写入的内容 Cook
  • Intellij IDEA安装Maven(非常详细)

    安装Maven 安装路径 点击链接进去直接下载所需的版本Maven官网 http maven apache org download cgi 最新版本下载方式 1 点击链接进入Maven官网 2 找到左侧栏的Download找到Files下
  • Quorum企业以太坊环境搭建教程

    Quorum是一个许可制的以太坊联盟区块链实现 包含了金融巨头JP摩根开发的一个GETH分支版本 可以在节点之间实现私有和快速的交易 Quorum为保证隐私对节点之间的私有交易进行了专门的设计 它使用Raft和Istanbul算法实现共识
  • ContentResolver的相关使用

    文章目录 AndroidManifest xml MainActivity MusicActivity PicActivity Contact AndroidManifest xml
  • python新手有手就会的100个代码

    前言 我记得刚开始接触编程的时候 觉得太难了 也很好奇 写代码的那些人也太厉害了吧 全是英文的 他们的英文水平一定很好吧 他们是怎么记住这么多代码格式的 而且错了一个标点符号 整个程序都会有影响 一个程序几千行 错一个标点符号都不行这也太难
  • Ideal常用插件

    1 Key promoter Key promoter这款插件适合新手使用 当你点击鼠标一个功能的时候 可以提示你这个功能快捷键是什么 2 Maven Helper 3 JRebel for IntelliJ jrebel 热部署插件 能够
  • STM32F4 discovery USART1(PA9,PA10)不能正常通信的问题

    PA9和PA10两个引脚使用了usb otg功能 STM32f4Discovery示意图显示 此USART上串行TX的默认引脚为PA9 它被连接到一个LED和一个4 7uF的电容器 C49 该引脚用于USB OTG端口上的VBUS线 电容器
  • 深度学习配置CUDA8.0/9.0及对应版本cuDNN安装

    本人为中科院测地所博士生 所研究专业为自然地理学 遥感数据分析方向 研究课题偏向于深度学习 由于本人不是计算机专业 故有关计算机配置及操作方面相较于计算机专业人员不是那么专业 所以请各位大牛大神绕道 我这里所做的一些工作比较浅显 仅供需要的
  • 纯CSS实现轮播图

    利用CSS实现一个轮播图 实现无缝衔接 平滑过渡 hover暂停效果 本文利用纯CSS实现一个轮播图 代码简捷 实现简单 没有js的接入 为一定场景下的轮播图提供一个简单的实现 先看效果图 1 思路解析 我们把整个轮播分为三个区域解析 分别