css、JQuery中实现3个不同颜色的旗帜循环朝一个方向平移放大,类似坐在车上旁边树往后移的那种效果
时间: 2023-11-22 19:54:47 浏览: 30
可以使用CSS3的animation动画和@keyframes关键帧实现旗帜循环朝一个方向平移放大的效果。
首先,我们需要定义三个不同颜色的div作为旗帜,然后设置它们的样式,如下所示:
```html
<div class="flag red"></div>
<div class="flag green"></div>
<div class="flag blue"></div>
```
```css
.flag {
position: absolute;
width: 50px;
height: 50px;
border-radius: 50%;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
}
.red {
background-color: red;
left: 0;
}
.green {
background-color: green;
left: 60px;
}
.blue {
background-color: blue;
left: 120px;
}
```
接下来,我们使用@keyframes关键帧定义动画的过程。我们设置旗帜逐渐放大,平移并渐隐的效果,如下所示:
```css
@keyframes flag-animation {
0% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(2);
opacity: 0.5;
left: 100%;
}
100% {
transform: scale(3);
opacity: 0;
left: 100%;
}
}
```
最后,我们使用animation动画将旗帜动起来。我们设置动画的持续时间、循环次数和动画曲线,如下所示:
```css
.flag {
animation: flag-animation 5s linear infinite;
}
```
这样就可以实现三个不同颜色的旗帜循环朝一个方向平移放大的效果了。完整代码如下:
```html
<div class="flag red"></div>
<div class="flag green"></div>
<div class="flag blue"></div>
```
```css
.flag {
position: absolute;
width: 50px;
height: 50px;
border-radius: 50%;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
animation: flag-animation 5s linear infinite;
}
.red {
background-color: red;
left: 0;
}
.green {
background-color: green;
left: 60px;
}
.blue {
background-color: blue;
left: 120px;
}
@keyframes flag-animation {
0% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(2);
opacity: 0.5;
left: 100%;
}
100% {
transform: scale(3);
opacity: 0;
left: 100%;
}
}
```