逐帧动画,配合补间动画实现一个无限循环的文字轮播效果
时间: 2024-05-03 09:16:33 浏览: 178
好的,这个可以使用 CSS3 的 @keyframes 和 animation 属性,结合 JavaScript 中的定时器 setInterval() 来实现。具体步骤如下:
1. HTML 结构:
```html
<div class="text-container">
<span class="text-item">第一段文字</span>
<span class="text-item">第二段文字</span>
<span class="text-item">第三段文字</span>
<span class="text-item">第四段文字</span>
</div>
```
2. CSS3 样式:
```css
.text-container {
position: relative;
width: 300px;
height: 50px;
overflow: hidden;
}
.text-item {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 50px;
opacity: 0;
transform: translateX(100%);
animation: text-animation 10s infinite;
}
@keyframes text-animation {
0% {
opacity: 0;
transform: translateX(100%);
}
10% {
opacity: 1;
transform: translateX(0);
}
90% {
opacity: 1;
transform: translateX(0);
}
100% {
opacity: 0;
transform: translateX(-100%);
}
}
```
3. JavaScript 代码:
```javascript
let textIndex = 0;
const textItems = document.querySelectorAll('.text-item');
setInterval(() => {
textItems[textIndex].classList.remove('active');
textIndex = (textIndex + 1) % textItems.length;
textItems[textIndex].classList.add('active');
}, 10000);
```
以上代码中,CSS3 样式中的 @keyframes 定义了文字轮播的动画过程,其中 opacity 控制透明度,transform 控制平移。animation 属性将动画应用到每个文字项上,并设置了动画时间为 10s,循环次数为无限次。
JavaScript 中使用 setInterval() 定时器每隔 10s 切换一次文字,同时利用类名 active 来控制当前文字项的动画状态。
最后,效果展示:
<iframe height="265" style="width: 100%;" scrolling="no" title="无限循环的文字轮播效果" src="https://codepen.io/katrina265/embed/abpMqXz?height=265&theme-id=light&default-tab=js,result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href='https://codepen.io/katrina265/pen/abpMqXz'>无限循环的文字轮播效果</a> by Katrina (<a href='https://codepen.io/katrina265'>@katrina265</a>)
on <a href='https://codepen.io'>CodePen</a>.
</iframe>
阅读全文