效果展示:
代码介绍:
爱心跳动动画:CSS魔法背后的故事
在前端开发中,CSS不仅仅是一种用于控制网页样式的工具,它也是一种表达创意和想象力的艺术手段。今天,我要为大家介绍一段使用CSS实现的爱心跳动动画代码,这段代码将带您领略CSS的魔法之处。
首先,我们来整体看一下这个动画的结构。这个动画主要由一个类名为heart的<div>元素构成,通过CSS的伪元素::before和::after来绘制出爱心的形状。同时,我们还使用了CSS的@keyframes规则来定义动画效果,让爱心能够呈现出跳动的视觉效果。
在CSS中,我们首先通过*选择器重置了所有元素的margin和padding,确保了页面布局的一致性。接着,我们设置了body和html的宽度和高度都为100%,这样可以让页面内容完全填满整个视口。
然后,我们定义了.heart类及其伪元素的样式。使用position: relative;将.heart元素定位为其正常位置,然后通过::before和::after伪元素来创建爱心的上半部分和下半部分。这里利用了绝对定位(position: absolute;)和border-radius属性来绘制出圆润的爱心形状。同时,我们还添加了box-shadow来增强爱心的立体感。
接下来是动画的核心部分。我们使用@keyframes定义了一个名为heartbit的动画,该动画描述了爱心跳动的过程。在动画的0%和100%状态下,我们通过transform: rotate(45deg) scale(0.6/1.4);来改变爱心的缩放比例,从而模拟出跳动的效果。这里需要注意的是,虽然我们试图通过改变font-size来影响动画效果,但实际上font-size对.heart这个不包含文本的元素没有任何影响,因此这部分代码是无效的。
最后,在.heart类中,我们将animation属性设置为heartbit 0.1s alternate infinite;,这表示动画将无限次地交替播放,每次播放的持续时间为0.1秒。
此外,代码中还有一个p元素的样式定义,但是在HTML结构中并没有对应的p元素,所以这个样式在这里并没有发挥作用。
通过这个例子,我们可以看到CSS的强大之处。它不仅能够控制页面的布局和样式,还能够通过动画和交互效果为网页增添活力和趣味性。当然,这只是一个简单的例子,CSS还有很多高级特性和用法等待我们去探索和实践。希望这个例子能够激发您对CSS的兴趣和热情,让您在前端开发的道路上越走越远。
源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body,
html {
width: 100%;
height: 100%;
}
.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;
}
body {
background-color: pink;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.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;
}
.heart {
display: flex;
justify-content: center;
align-items: center;
width: 200px;
height: 200px;
background-color: red;
position: relative;
transform: rotate(45deg);
animation: heartbit 0.1s alternate infinite;
box-shadow: 0 0 30px red;
}
@keyframes heartbit{
0%{
transform: rotate(45deg) scale(0.6) ;
font-size: 30px;
}
/* 25%{
transform: rotate(45deg) scale(0.8);
}
50%{
transform: rotate(45deg) scale(1);
}
75%{
transform: rotate(45deg) scale(1.2);
} */
100%{
transform: rotate(45deg) scale(1.4);
font-size: 30px;
}
}
p{
transform: rotate(315deg);
}
</style>
</head>
<body>
<div class="heart">
</div>
</body>
</html>