前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)
时间:12-21来源:作者:点击数:
一、横版跑马灯
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
/* 重点:盒子宽度 600 */
width: 600px;
height: 150px;
border: 3px solid black;
overflow: hidden;
}
.box ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
height: 100%;
animation: move 5s linear infinite;
}
/* hover 暂停,不用可去掉 */
.box ul:hover {
animation-play-state: paused;
}
.box ul li {
height: 100%;
/* 重点:单个图片宽度 200,相当于默认不动可见 3 个 */
width: 200px;
flex-shrink: 0;
}
.box ul li img {
height: 100%;
width: 100%;
}
@keyframes move {
/* 为什么设置 -800px ?公式:主图张数 * 单个图片宽度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
100% {
transform: translateX(-800px);
}
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="box">
<!-- 轮播列表 -->
<ul>
<!-- 轮播主图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
<li><a href="#"><img src="./2.jpg" alt=""></a></li>
<li><a href="#"><img src="./3.jpg" alt=""></a></li>
<li><a href="#"><img src="./4.jpg" alt=""></a></li>
<!-- 轮播完成防止留白 -->
<!-- 怎么确定尾部需要几张防止留白,3 张是怎么得出的?其实就是上面: 盒子宽度 / 单个图片宽度 = 一屏几张留白图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
<li><a href="#"><img src="./2.jpg" alt=""></a></li>
<li><a href="#"><img src="./3.jpg" alt=""></a></li>
</ul>
</div>
</body>
</html>
二、竖版跑马灯
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
width: 600px;
/* 重点:盒子宽度 150 */
height: 150px;
border: 3px solid black;
overflow: hidden;
}
.box ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
flex-direction: column;
height: 100%;
animation: move 5s linear infinite;
}
/* hover 暂停,不用可去掉 */
.box ul:hover {
animation-play-state: paused;
}
.box ul li {
/* 重点:单个图片高度 150,相当于默认不动可见 1 个 */
height: 150px;
width: 100%;
flex-shrink: 0;
}
.box ul li img {
height: 100%;
width: 100%;
}
@keyframes move {
/* 为什么设置 -600px ?公式:主图张数 * 单个图片高度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
100% {
transform: translateY(-600px);
}
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="box">
<!-- 轮播列表 -->
<ul>
<!-- 轮播主图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
<li><a href="#"><img src="./2.jpg" alt=""></a></li>
<li><a href="#"><img src="./3.jpg" alt=""></a></li>
<li><a href="#"><img src="./4.jpg" alt=""></a></li>
<!-- 轮播完成防止留白 -->
<!-- 怎么确定尾部需要几张防止留白,1 张是怎么得出的?其实就是上面: 盒子高度 / 单个图片高度 = 一屏几张留白图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
</ul>
</div>
</body>
</html>
三、竖版跑马灯(带渐变遮罩,可以改成横向的)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
position: relative;
width: 600px;
/* 重点:盒子宽度 150 */
height: 150px;
overflow: hidden;
}
.box ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
flex-direction: column;
height: 100%;
animation: move 5s linear infinite;
}
/* hover 暂停,不用可去掉 */
.box ul:hover {
animation-play-state: paused;
}
.box ul li {
/* 重点:单个图片高度 150,相当于默认不动可见 1 个 */
height: 150px;
width: 100%;
flex-shrink: 0;
}
.box ul li img {
height: 100%;
width: 100%;
}
@keyframes move {
/* 为什么设置 -600px ?公式:主图张数 * 单个图片高度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
100% {
transform: translateY(-600px);
}
}
/* 顶部、底部白色渐变 */
.header-blur {
position: absolute;
left: 0;
top: 0;
right: 0;
height: 10px;
/* background-image: linear-gradient(red, green 50%); */
background-image: linear-gradient(#fff, rgba(0, 0, 0, 0) 50%);
z-index: 1;
}
.footer-blur {
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 10px;
/* background-image: linear-gradient(red 40%, green); */
background-image: linear-gradient(rgba(0, 0, 0, 0) 40%, #fff);
z-index: 1;
}
</style>
</head>
<body>
<!-- 窗口 -->
<div class="box">
<!-- 顶部、底部白色渐变 -->
<div class="header-blur"></div>
<div class="footer-blur"></div>
<!-- 轮播列表 -->
<ul>
<!-- 轮播主图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
<li><a href="#"><img src="./2.jpg" alt=""></a></li>
<li><a href="#"><img src="./3.jpg" alt=""></a></li>
<li><a href="#"><img src="./4.jpg" alt=""></a></li>
<!-- 轮播完成防止留白 -->
<!-- 怎么确定尾部需要几张防止留白,1 张是怎么得出的?其实就是上面: 盒子高度 / 单个图片高度 = 一屏几张留白图 -->
<li><a href="#"><img src="./1.jpg" alt=""></a></li>
</ul>
</div>
</body>
</html>