1.简单粗暴地只是使用<img>标签插入这个图片,或者使用background-image属性将其作为背景
2.纯css实现,需要两个div,第一个div作为容器盒子,设置满屏宽高,然后使用backgrond属性,取值为linear-gradient(),用作颜色渐变背景;第二个div作为气泡,可以通过绝对定位定位到相应位置,然后通过border-radius设置成一个原型,然后添加box-shadow等属性添加阴影等。
背景fixed加渐变色,flex布局,中间一个border-radius等于二分之一宽的白色边框元素,宽高一致,背景一样渐变色,不过是有焦点的
实现思路:
1、先实现渐变背景:将背景色设为渐变(注意设置首尾颜色相同,否则动画时会出现明显分界线)
background:linear-gradient(to bottom,#DFDFF5 ,#FF9980,#FFF280,#FFC080,#DFDFF5);
2、将背景动起来:先用 background-size 将背景图像的尺寸扩大; 通过 @keyframes 规则,创建动画:通过 background-position 设置背景图像运动的起始位置和终止位置。
3、实现气泡:我通过li标签,将每个li通过css设置样式为气泡状(圆形、半透明中央、实线边框)。
4、使气泡动起来:首先使气泡的 bottom 值为一个比较大的负数,才能使气泡从底下升上去; 通过 @keyframes 规则,创建动画:使用 translateY() 转换气泡Y轴的值,使气泡上升。
5、产生多个不同颜色、大小、不同位置上升的气泡:使用 jQuery循环添加li节点,即添加多个气泡; 每个节点添加不同样式:这里需要注意的是使用eq() 方法 匹配当前节点。
html代码
<div class="background"> <ul id="ul-cir"></ul> </div>
css代码
body{
padding:0;
margin:0;
}
div.background{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background:linear-gradient(to bottom,#DFDFF5,#FF9980,#FFF280,#FFC080,#DFDFF5); /*背景渐变色*/
background-size:200% 200%;
animation:bjmove 30s infinite linear;
}
@keyframes bjmove{ /*背景移动动画*/
from {background-position: 0 200% ;}
to {background-position:0 0;}
}
.li-cir{
list-style:none; /*去除ul li的默认样式*/
width:30px;
height:30px;
border-radius:50%;
position: absolute;
bottom:-160px;
animation: ppmove 15s infinite;
}
@keyframes ppmove { /*泡泡移动动画*/
0% {
opacity: 0.5;
transform: translateY(0px) }
25% {
opacity: 0.8;
transform: translateY(-400px) }
50% {
opacity: 1;
transform: translateY(-600px) }
100% {
opacity: 1;
transform: translateY(-1000px) }
}
jQuery:
$(document).ready(function(){
for(var i=0; i<9; i++){
var rand = new Array();//rgb色彩值
for(var j=0; j<3; j++){
rand[j] = Math.floor(Math.random() * 26 + 230); // 230 ~ 255
}
var op = Math.floor(Math.random()* 5 + 2) / 10; //均衡获取rgba的透明度的随机数
var left = Math.floor(Math.random()* 100 )+"%"; //泡泡随机分布的距离
var delay = Math.floor(Math.random()* 10)+"s"; //每个泡泡出现推迟的时间
var dur = Math.floor(Math.random()* 10 + 11)+"s"; //泡泡完成一个周期所需要的时间
var enlarge = Math.floor(Math.random()* 40 + 30); //泡泡扩大到的宽和高
$("#ul-cir").append("<li class='li-cir'></li>"); //增加一个泡泡
$("#ul-cir li").eq(i).css("background","rgba("+rand[0]+","+rand[1]+","+rand[2]+","+op+")");//选取ul li中匹配的索引顺序为i的元素赋予背景颜色
$("#ul-cir li").eq(i).css("border","rgba("+rand[0]+","+rand[1]+","+rand[2]+","+1+") 1px solid");//给泡泡加上边框
$("#ul-cir li").eq(i).css("left",left); //泡泡出现的距离值
$("#ul-cir li").eq(i).css("animation-delay",delay); //泡泡出现推迟的时间
$("#ul-cir li").eq(i).css("animation-duration",dur); //泡泡完成一个周期所需要的时间
$("#ul-cir li").eq(i).css("width",enlarge).css("height",enlarge); //扩大泡泡
}
});