巧用 CSS 动画实现动态气泡背景

2018-02-27 10:55:39来源:https://juejin.im/post/5a903b706fb9a06336116935作者:稀土掘金人点击

分享

今天是节后上班第一天,早上醒来一睁眼,嗯?啊...?什么...?这是哪?我是谁?上什么班?


然鹅,还是被昨晚特意设置的八个闹钟:alarm_clock:吵醒,冬天早上起床的难度...想必各位都心有体会 :sob:,抱着一万个不情愿起床早早地来到了办公室,还是熟悉的环境,还是熟悉的味道。。。


还有,熟悉的任务需求:joy:。


今天的第一个任务是写个登录页面,老大给了我一个参(chao)考(xi)案例,大家点击链接就能看到。嗯,这个登录页面确实很简洁、大方,尤其是它的气泡背景,第一反应这应该是张动态图片,打开审查元素才发现原来这是用代码写的,一下子激起了宝宝的好奇心,所以也试着写了一个带气泡背景的登录页面,效果如下:





emm...为什么上传的 gif 动态图总是这么小,来补张截图:





(大家可以自行脑补这些背景气泡往上升的画面 :sob:)


只需一些简单的代码就可以实现这样的效果,


首先我们先定义10个 li 列表标签,我用的是 vue 框架:


<ul class="bg-bubbles">
<li v-for="(item, index) in bubbles" :key="index"></li>
</ul>
created() {
this.bubbles.length = 10;
},

样式是用 less 编写的:


.bg-bubbles {
position: absolute;
// 使气泡背景充满整个屏幕
top: 0;
left: 0;
width: 100%;
height: 100%;
li {
position: absolute;
// bottom 的设置是为了营造出气泡从页面底部冒出的效果;
bottom: -160px;
// 默认的气泡大小;
width: 40px;
height: 40px;
background-color: rgba(255, 255, 255, 0.15);
list-style: none;
// 使用自定义动画使气泡渐现、上升和翻滚;
animation: square 15s infinite;
transition-timing-function: linear;
// 分别设置每个气泡不同的位置、大小、透明度和速度,以显得有层次感;
&:nth-child(1) {
left: 10%;
}
&:nth-child(2) {
left: 20%;
width: 90px;
height: 90px;
animation-delay: 2s;
animation-duration: 7s;
}
&:nth-child(3) {
left: 25%;
animation-delay: 4s;
}
&:nth-child(4) {
left: 40%;
width: 60px;
height: 60px;
animation-duration: 8s;
background-color: rgba(255, 255, 255, 0.3);
}
&:nth-child(5) {
left: 70%;
}
&:nth-child(6) {
left: 80%;
width: 120px;
height: 120px;
animation-delay: 3s;
background-color: rgba(255, 255, 255, 0.2);
}
&:nth-child(7) {
left: 32%;
width: 160px;
height: 160px;
animation-delay: 2s;
}
&:nth-child(8) {
left: 55%;
width: 20px;
height: 20px;
animation-delay: 4s;
animation-duration: 15s;
}
&:nth-child(9) {
left: 25%;
width: 10px;
height: 10px;
animation-delay: 2s;
animation-duration: 12s;
background-color: rgba(255, 255, 255, 0.3);
}
&:nth-child(10) {
left: 85%;
width: 160px;
height: 160px;
animation-delay: 5s;
}
}
// 自定义 square 动画;
@keyframes square {
0% {
opacity: 0.5;
transform: translateY(0px) rotate(45deg);
}
25% {
opacity: 0.75;
transform: translateY(-400px) rotate(90deg)
}
50% {
opacity: 1;
transform: translateY(-600px) rotate(135deg);
}
100% {
opacity: 0;
transform: translateY(-1000px) rotate(180deg);
}
}
}

至此,一个气泡背景图就完成了。回过头来看,确实不难,但也愈来愈让人感受到 css 动画的魅力和强大 :relaxed:。


如果喜欢这篇文章的话,不妨点个喜欢或关注,这将是我更大的动力。


前端路漫漫,望与君共勉 :muscle:。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台