实现了一个SVG动画效果,其中包含了一个线条、两个圆圈和一个虚线。线条和虚线是使用SVG的stroke属性和stroke-dasharray属性实现的,圆圈是使用SVG的circle元素实现的。动画效果是使用CSS的animation属性实现的,其中包含了一个名为Snurra1的动画,该动画会将线条和虚线的stroke-dashoffset属性从0逐渐减小到-403px,从而实现动画效果。圆圈和虚线的样式是通过CSS样式实现的,其中包含了一个渐变色和一个模糊效果。
<svg class="gegga">
<defs>
<filter id="gegga">
<feGaussianBlur in="SourceGraphic" stdDeviation="7" result="blur" />
<feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10" result="inreGegga" />
<feComposite in="SourceGraphic" in2="inreGegga" operator="atop" />
</filter>
</defs>
</svg>
<svg class="snurra" width="200" height="200" viewBox="0 0 200 200">
<defs>
<linearGradient id="linj?rGradient">
<stop class="stopp1" offset="0" />
<stop class="stopp2" offset="1" />
</linearGradient>
<linearGradient y2="160" x2="160" y1="40" x1="40" gradientUnits="userSpaceOnUse" id="gradient"
xlink:href="#linj?rGradient" />
</defs>
<path class="halvan"
d="m 164,100 c 0,-35.346224 -28.65378,-64 -64,-64 -35.346224,0 -64,28.653776 -64,64 0,35.34622 28.653776,64 64,64 35.34622,0 64,-26.21502 64,-64 0,-37.784981 -26.92058,-64 -64,-64 -37.079421,0 -65.267479,26.922736 -64,64 1.267479,37.07726 26.703171,65.05317 64,64 37.29683,-1.05317 64,-64 64,-64" />
<circle class="strecken" cx="100" cy="100" r="64" />
</svg>
<svg class="skugga" width="200" height="200" viewBox="0 0 200 200">
<path class="halvan"
d="m 164,100 c 0,-35.346224 -28.65378,-64 -64,-64 -35.346224,0 -64,28.653776 -64,64 0,35.34622 28.653776,64 64,64 35.34622,0 64,-26.21502 64,-64 0,-37.784981 -26.92058,-64 -64,-64 -37.079421,0 -65.267479,26.922736 -64,64 1.267479,37.07726 26.703171,65.05317 64,64 37.29683,-1.05317 64,-64 64,-64" />
<circle class="strecken" cx="100" cy="100" r="64" />
</svg>
body {
align-items: center;
display: flex;
justify-content: center;
height: 100vh;
overflow: hidden;
background-color: #212121;
}
.gegga {
width: 0;
}
.snurra {
filter: url(#gegga);
}
.stopp1 {
stop-color: #f700a8;
}
.stopp2 {
stop-color: #ff8000;
}
.halvan {
animation: Snurra1 10s infinite linear;
stroke-dasharray: 180 800;
fill: none;
stroke: url(#gradient);
stroke-width: 23;
stroke-linecap: round;
}
.strecken {
animation: Snurra1 3s infinite linear;
stroke-dasharray: 26 54;
fill: none;
stroke: url(#gradient);
stroke-width: 23;
stroke-linecap: round;
}
.skugga {
filter: blur(5px);
opacity: 0.3;
position: absolute;
transform: translate(3px, 3px);
}
@keyframes Snurra1 {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: -403px;
}
}
body {
align-items: center; /* 垂直居中 */
display: flex; /* 使用flex布局 */
justify-content: center; /* 水平居中 */
height: 100vh; /* 高度为视口高度 */
overflow: hidden; /* 隐藏溢出部分 */
background-color: #212121; /* 背景颜色为深灰色 */
}
这段代码定义了SVG动画效果的基本样式,包括垂直居中、水平居中、高度为视口高度、隐藏溢出部分和背景颜色等。
.gegga {
width: 0; /* 宽度为0 */
}
这段代码定义了一个名为gegga的类,但是没有给它任何样式。
.snurra {
filter: url(#gegga); /* 使用gegga类定义的渐变 */
}
这段代码定义了一个名为snurra的类,并使用了gegga类定义的渐变。
.stopp1 {
stop-color: #f700a8; /* 颜色为粉红色 */
}
.stopp2 {
stop-color: #ff8000; /* 颜色为橙色 */
}
这段代码定义了两个名为stopp1和stopp2的类,分别用于定义渐变的两个颜色。
.halvan {
animation: Snurra1 10s infinite linear; /* 动画名称为Snurra1,持续时间为10秒,无限循环,线性运动 */
stroke-dasharray: 180 800; /* 虚线的长度为180px,间隔为800px */
fill: none; /* 不填充 */
stroke: url(#gradient); /* 颜色为渐变 */
stroke-width: 23; /* 线条宽度为23px */
stroke-linecap: round; /* 线条端点为圆形 */
}
.strecken {
animation: Snurra1 3s infinite linear; /* 动画名称为Snurra1,持续时间为3秒,无限循环,线性运动 */
stroke-dasharray: 26 54; /* 虚线的长度为26px,间隔为54px */
fill: none; /* 不填充 */
stroke: url(#gradient); /* 颜色为渐变 */
stroke-width: 23; /* 线条宽度为23px */
stroke-linecap: round; /* 线条端点为圆形 */
}
这段代码定义了两个名为halvan和strecken的类,分别用于定义虚线的样式。其中,halvan类定义了一个长为180px、间隔为800px的虚线,strecken类定义了一个长为26px、间隔为54px的虚线。
.skugga {
filter: blur(5px); /* 模糊半径为5px */
opacity: 0.3; /* 透明度为0.3 */
position: absolute; /* 绝对定位 */
transform: translate(3px, 3px); /* 平移3px */
}
这段代码定义了一个名为skugga的类,用于定义虚线的虚线部分的样式。其中,filter属性用于定义模糊效果,opacity属性用于定义透明度,position属性用于定义绝对定位,transform属性用于定义平移。
@keyframes Snurra1 {
0% {
stroke-dashoffset: 0; /* 初始状态,虚线偏移量为0 */
}
100% {
stroke-dashoffset: -403px; /* 动画结束时,虚线偏移量为-403px */
}
}
这段代码定义了一个名为Snurra1的动画,用于控制虚线的移动。其中,@keyframes规则用于定义动画的关键帧,0%状态表示动画开始时的状态,100%状态表示动画结束时的状态。在0%状态下,虚线的偏移量为0,在100%状态下,虚线的偏移量为-403px,从而实现了动画效果。