📅  最后修改于: 2023-12-03 15:37:17.131000             🧑  作者: Mango
有时候我们需要在我们的程序中表现一些动画,例如圆形容器颤动。这篇文章将向您展示如何在您的程序中实现这样的效果。
为了实现圆形容器颤动效果,我们可以使用HTML5和CSS3技术:
首先我们需要创建一个HTML结构,包含一个
<div class="container">
<canvas id="canvas"></canvas>
<div class="text">Circle Animation</div>
</div>
接下来,我们需要为HTML元素创建一些CSS样式,使其在屏幕上显示为一个圆形容器,并设置一些动画属性。
.container {
position: relative;
width: 200px;
height: 200px;
margin: 50px auto;
border-radius: 50%;
overflow: hidden;
}
#canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.text {
position: absolute;
text-align: center;
width: 100%;
top: 50%;
margin-top: -10px;
font-size: 20px;
}
/* 设置动画属性 */
.container:hover #canvas {
-webkit-animation: shake 0.5s linear infinite;
animation: shake 0.5s linear infinite;
}
/* 定义动画效果 */
@-webkit-keyframes shake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
50% {
-webkit-transform: translateX(-10%);
transform: translateX(-10%);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes shake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
50% {
-webkit-transform: translateX(-10%);
transform: translateX(-10%);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
最后我们需要使用JavaScript来绘制我们的圆形容器。
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 绘制圆形
ctx.beginPath();
ctx.arc(canvas.width/2, canvas.height/2, canvas.width/2-10, 0, 2*Math.PI);
ctx.strokeStyle = "white";
ctx.lineWidth = 2;
ctx.stroke();
我们的代码片段如下所示:
```html
<div class="container">
<canvas id="canvas"></canvas>
<div class="text">Circle Animation</div>
</div>
.container {
position: relative;
width: 200px;
height: 200px;
margin: 50px auto;
border-radius: 50%;
overflow: hidden;
}
#canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.text {
position: absolute;
text-align: center;
width: 100%;
top: 50%;
margin-top: -10px;
font-size: 20px;
}
/* 设置动画属性 */
.container:hover #canvas {
-webkit-animation: shake 0.5s linear infinite;
animation: shake 0.5s linear infinite;
}
/* 定义动画效果 */
@-webkit-keyframes shake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
50% {
-webkit-transform: translateX(-10%);
transform: translateX(-10%);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes shake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
50% {
-webkit-transform: translateX(-10%);
transform: translateX(-10%);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// 绘制圆形
ctx.beginPath();
ctx.arc(canvas.width/2, canvas.height/2, canvas.width/2-10, 0, 2*Math.PI);
ctx.strokeStyle = "white";
ctx.lineWidth = 2;
ctx.stroke();