目录
一.效果预览图
二.实现思路 编辑
1.html部分
2.css部分
三.完整代码
一.效果预览图
二.实现思路
想要实现爱心律动效果并不难,核心点是关键帧动画。 定义律动爱心需要的元素块,使用定位或者弹性布局等方法(定位元素不适合布局,建议用弹性布局),使9个块元素在一行,给每个块元素定义关键帧动画@keyframes(关键帧动画关键字) 改变其长度,使用animation:love2 5s 1.4s infinite;定义关键字动画的速度,动画执行次数infinite(一直执行),你也可以设置动画的运动函数使其达到理想的动态效果。
1.html部分
用无序列表构建10个块元素(ul 1 ,li 9),li从1-9分别对应律动爱心的发生变化的9个元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/002.css">
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
2.css部分
css样式,改变背景颜色,使用弹性布局使其居中,定义关键帧动画。
*{
padding: 0;
margin: 0;
}
body{
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #000;
}
ul{
position:relative;
display: flex;
height: 200px;
}
ul::after{
content: '爱心怦怦跳';
position: absolute;
top: 100px;
left: 50%;
color: darkturquoise;
font-size: 30px;
font-weight: 700px;
transform: translate(-50%,-700%);
}
li{
width: 20px;
height: 20px;
border-radius: 10px;
margin: 0 10px;
}
li:nth-child(1){
background-color: red;
animation:love1 5s 0s infinite;
}
li:nth-child(2){
background-color: darkturquoise;
animation:love2 5s 0.2s infinite;
}
li:nth-child(3){
background-color: darksalmon;
animation:love3 5s 0.4s infinite;
}
li:nth-child(4){
background-color: deeppink;
animation:love4 5s 0.6s infinite;
}
li:nth-child(5){
background-color: yellow;
animation:love5 5s 0.8s infinite;
}
li:nth-child(6){
background-color: deeppink;
animation:love4 5s 1s infinite;
}
li:nth-child(7){
background-color: darksalmon;
animation:love3 5s 1.2s infinite;
}
li:nth-child(8){
background-color: darkturquoise;
animation:love2 5s 1.4s infinite;
}
li:nth-child(9){
background-color: red;
animation:love1 5s 1.6s infinite;
}
/*定义动画*/
@keyframes love1 {
30%,50%{
height: 60px;
transform: translateY(-30px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love2{
30%,50%{
height: 125px;
transform: translateY(-60px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love3 {
30%,50%{
height: 160px;
transform: translateY(-75px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love4 {
30%,50%{
height: 180px;
transform: translateY(-60px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love5 {
30%,50%{
height: 200px;
transform: translateY(-45px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
三.完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
padding: 0;
margin: 0;
}
body{
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #000;
}
ul{
position:relative;
display: flex;
height: 200px;
}
ul::after{
content: '爱心怦怦跳';
position: absolute;
top: 100px;
left: 50%;
color: darkturquoise;
font-size: 30px;
font-weight: 700px;
transform: translate(-50%,-700%);
}
li{
width: 20px;
height: 20px;
border-radius: 10px;
margin: 0 10px;
}
li:nth-child(1){
background-color: red;
animation:love1 5s 0s infinite;
}
li:nth-child(2){
background-color: darkturquoise;
animation:love2 5s 0.2s infinite;
}
li:nth-child(3){
background-color: darksalmon;
animation:love3 5s 0.4s infinite;
}
li:nth-child(4){
background-color: deeppink;
animation:love4 5s 0.6s infinite;
}
li:nth-child(5){
background-color: yellow;
animation:love5 5s 0.8s infinite;
}
li:nth-child(6){
background-color: deeppink;
animation:love4 5s 1s infinite;
}
li:nth-child(7){
background-color: darksalmon;
animation:love3 5s 1.2s infinite;
}
li:nth-child(8){
background-color: darkturquoise;
animation:love2 5s 1.4s infinite;
}
li:nth-child(9){
background-color: red;
animation:love1 5s 1.6s infinite;
}
/*定义动画*/
@keyframes love1 {
30%,50%{
height: 60px;
transform: translateY(-30px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love2{
30%,50%{
height: 125px;
transform: translateY(-60px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love3 {
30%,50%{
height: 160px;
transform: translateY(-75px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love4 {
30%,50%{
height: 180px;
transform: translateY(-60px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
@keyframes love5 {
30%,50%{
height: 200px;
transform: translateY(-45px);
}
70%,100%{
height: 20px;
transform: translateY(0px);
}
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>