首页 > 开发 > CSS > 正文

CSS 动画实现动态气泡背景的方法

2024-07-11 09:08:05
字体:
来源:转载
供稿:网友

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

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

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

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

css,气泡动画

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

css,气泡动画

(大家可以自行脑补这些背景气泡往上升的画面 :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:。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。

 

注:相关教程知识阅读请移步到CSS教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表