走马灯
1.第一步-搭建环境
先搭建父盒子。父盒子里面再放入一个子盒子用来装7张图片,有因为图片在一行上了,所以需要使用flex布局。
<!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>走马灯案例</title>
<style>
.box {
/* 在这里的宽度是可以刚刚好放下三张图片的宽度 */
width: 1137px;
height: 352px;
border: 1px solid #000;
margin: 100px auto ;
}
.main {
display: flex;
/* 这里的宽度是七张图片的宽度 */
width: 2653px;
height: 352px;
}
</style>
</head>
<body>
<div class="box">
<!-- 这里放入高度 -->
<div class="main">
<img src="./img/1.jpg" alt="">
<img src="./img/2.jpg" alt="">
<img src="./img/3.jpg" alt="">
<img src="./img/4.jpg" alt="">
<img src="./img/5.jpg" alt="">
<img src="./img/6.jpg" alt="">
<img src="./img/7.jpg" alt="">
</div>
</div>
</body>
</html>
2.第二步-设计动画
设计动画
<!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>走马灯案例</title>
<style>
.box {
/* 在这里的宽度是可以刚刚好放下三张图片的宽度 */
width: 1137px;
height: 352px;
border: 5px solid #000;
margin: 100px auto;
/* 让超出的部分隐藏 */
overflow: hidden;
}
.main {
display: flex;
/* 这里的宽度是七张图片的宽度 */
width: 2653px;
height: 352px;
/* liner匀速 */
animation: move 10s linear infinite;
}
img {
width: 379px;
height: 352px;
}
@keyframes move {
0% {
transform: translateX(0);
}
100% {
/* 移动四个图片,这样就刚好显示最后三张图片 */
transform: translateX(-1516px);
}
}
</style>
</head>
<body>
<div class="box">
<!-- 这里放入高度 -->
<div class="main">
<img src="./img/1.jpg" alt="">
<img src="./img/2.jpg" alt="">
<img src="./img/3.jpg" alt="">
<img src="./img/4.jpg" alt="">
<img src="./img/5.jpg" alt="">
<img src="./img/6.jpg" alt="">
<img src="./img/7.jpg" alt="">
</div>
</div>
</body>
</html>
但是这样还是会有一些问题,就是会抽一下,给用户的视觉体验感不好,为什么会抽一下呢?因为到567图片的时候,一下子又回到了123图片。所以动画的设计还是有点问题。
3.第三步-完善问题
在结构上补充假的123图片。
在动画上需要移动7格盒子。
<!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>走马灯案例</title>
<style>
.box {
/* 在这里的宽度是可以刚刚好放下三张图片的宽度 */
width: 1137px;
height: 352px;
border: 5px solid #000;
margin: 100px auto;
/* 让超出的部分隐藏 */
overflow: hidden;
}
.main {
display: flex;
/* 这里的宽度是七张图片的宽度 */
/* width: 2653px; */
/* 根据提出的问题,这里需要修改为10张图片的宽度 */
width: 3790px;
height: 352px;
/* liner匀速 */
animation: move 10s linear infinite;
}
.main:hover {
animation-play-state: paused;
}
img {
width: 379px;
height: 352px;
}
.box:hover {
animation-play-state: paused;
}
@keyframes move {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-2653px);
}
}
</style>
</head>
<body>
<div class="box">
<!-- 这里放入高度 -->
<div class="main">
<img src="./img/1.jpg" alt="">
<img src="./img/2.jpg" alt="">
<img src="./img/3.jpg" alt="">
<img src="./img/4.jpg" alt="">
<img src="./img/5.jpg" alt="">
<img src="./img/6.jpg" alt="">
<img src="./img/7.jpg" alt="">
<!-- 假的123 用来使的图片跑起来丝滑 -->
<img src="./img/1.jpg" alt="">
<img src="./img/2.jpg" alt="">
<img src="./img/3.jpg" alt="">
</div>
</div>
</body>
</html>
注意:本文章是笔者的学习笔记,因为笔者的能力有限,会出现很多没有想过的问题,所以,如果您在浏览或者运行代码的时候出现问题,请在评论区留言,笔者看到后会在第一时间处理,谢谢。