这个东西拖了好久,之前就打算更的,了解一下,自己写出来发现还是很简单的。
我还记得第一次接触它,当时react里面引用swiper第三方库,一直有问题。然后一直死磕,
最后被提醒可以用css3 样式来实现轮播滚动。
简单的写了下面的代码,注意一下
tip : margin-top: -400px; 这个的 400 是所有 只存在一分数据中 ul 的高度,再加上 margin-top = 10 就是390 + 10 为了满足一直循环我是复制了一份li 数据
<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>
html,
body,
ul {
margin: 0;
padding: 0;
}
.container {
width: 300px;
height: 200px;
border: 1px solid red;
margin: 200px auto;
overflow: hidden;
}
ul {
list-style: none;
width: 100%;
animation: show 5s linear infinite;
}
ul li {
text-align: center;
margin: 10px 0;
width: 100%;
height: 40px;
line-height: 40px;
color: #fff;
background-color: #ccc;
}
ul li:nth-child(1) {
margin: 0;
}
@keyframes show {
0% {
margin-top: 0px;
}
100% {
margin-top: -400px;
}
}
</style>
</head>
<body>
<div class="container">
<ul>
<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>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</div>
</body>
这里我遇到了一个数据深拷贝的问题
我把这个循环滚动封装成一个组件,在react中肯定要给 key 值,我们从后端获取到了 一份数据, 但是我们是需要两份数据的, 所以我们把两份数据利用深拷贝,放入DOM元素里面