今天在网上看到一个很有意思的东西,实现跳动的心,已经成功实现:http://heart.516574.xyz
接下来说说如何实现
1.先实现心的静态页面
我们可以观察出,这个心可以分为三个部分,如图:
可以看出这个心是由一个正方形和两个半圆形组成的,最后旋转就可以得到心型。
<!-- 实现一颗红色的心 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
html, body {
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.heart{
width: 200px;
height: 200px;
position: relative;
background-color: red;
position: relative;
}
.heart::before{
content: '';
width: 200px;
height: 100px;
border-radius: 100%, 100%, 0, 0;
background-color: yellow;
position: absolute;
left: 0;
top: -100px;
border-radius: 100px 100px 0 0;
}
.heart::after{
content: '';
width: 100px;
height: 200px;
border-radius: 100%, 100%, 0, 0;
background-color: yellow;
position: absolute;
left: -100px;
top: 0;
border-radius: 100px 0 0 100px;
}
</style>
</head>
<body>
<div class="heart">
</div>
</body>
</html>
2.旋转45度并实现阴影
transform: rotate(45deg);//旋转45度
box-shadow: 0 0 30px red;//将阴影三个部分都添加
此时已经完成了静态页面,如图:
3.让心跳动起来
这里我们可以用动画实现
/* 实现动画,让心跳动起来 */
@keyframes heart{
0%{
transform: rotate(45deg) scale(0.6);
}
100%{
transform: rotate(45deg) scale(1.4);
}
}
在heart 里面添加:
animation: heart 1s alternate infinite;
完成。
4.源代码
<!-- 实现一个跳动的心 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
<title>Love</title>
<style>
*{
margin: 0;
padding: 0;
}
html, body {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: pink;
}
.heart{
width: 200px;
height: 200px;
background-color: red;
position: relative;
transform: rotate(45deg);
animation: heart 1s alternate infinite;
box-shadow: 0 0 30px red;
}
/* 设置伪元素 */
.heart::before{
content: "";
width: 200px;
height: 100px;
background-color: red;
position: absolute;
left: 0;
top:-99px;
border-radius: 100px 100px 0 0;
box-shadow: 0 0 30px red;
}
.heart::after{
content: "";
width: 100px;
height: 200px;
background-color: red;
position: absolute;
left: -99px;
top:0;
border-radius: 100px 0 0 100px;
box-shadow: 0 0 30px red;
}
/* 实现动画,让心跳动起来 */
@keyframes heart{
0%{
transform: rotate(45deg) scale(0.6);
}
100%{
transform: rotate(45deg) scale(1.4);
}
}
</style>
</head>
<body>
<div class="heart">
</div>
</body>
</html>