您好,欢迎访问一九零五行业门户网

如何使用纯CSS实现蚊香燃烧的效果(附源码)

本篇文章给大家带来的内容是关于如何使用纯css实现传统蚊香燃烧的效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
效果预览
源代码下载每日前端实战系列的全部源代码请从 github 下载:
https://github.com/comehope/front-end-daily-challenges
代码解读定义 dom,容器中包含 8 个子元素:
<div class="coil">    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span></div>
居中显示:
body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: radial-gradient(circle at center, midnightblue, black);}
画出纹香盘要用的框线:
.coil {    position: relative;    display: flex;    justify-content: center;}.coil span {    position: absolute;    width: calc((var(--n) * 2 - 1) * 1em);    height: calc((var(--n) - 0.5) * 1em);    border: 1em solid darkgreen;}.coil span:nth-child(1) {    --n: 1;}.coil span:nth-child(2) {    --n: 2;}.coil span:nth-child(3) {    --n: 3;}.coil span:nth-child(4) {    --n: 4;}.coil span:nth-child(5) {    --n: 5;}.coil span:nth-child(6) {    --n: 6;}.coil span:nth-child(7) {    --n: 7;}.coil span:nth-child(8) {    --n: 8;}
把一半框线放置到上方:
.coil span:nth-child(odd) {    align-self: flex-end;}
删除掉上方框线的下边框,和下方框线的上边框:
.coil span:nth-child(odd) {    border-bottom: none;}.coil span:nth-child(even) {    border-top: none;}
对齐上下边框:
.coil span:nth-child(even) {    transform: translatex(-1em);}
把边框改为曲线:
.coil span:nth-child(odd) {    border-radius: 50% 50% 0 0 / 100% 100% 0 0;}.coil span:nth-child(even) {    border-radius: 0 0 50% 50% / 0 0 100% 100%;}
用伪元素画出蚊香最中间的部分:
.coil::before {    content: '';    position: absolute;    width: 1em;    height: 1em;    background-color: darkgreen;    border-radius: 50%;    left: -1.5em;    top: -0.5em;}
用伪元素画出蚊香的燃点:
.coil::after {    content: '';    position: absolute;    width: 1em;    height: 1em;    border-radius: 50%;    top: -0.5em;    background-color: darkred;    left: -9.5em;    z-index: -1;    transform: scale(0.9);    box-shadow: 0 0 1em white;}
最后,为燃点增加闪动的效果:
.coil::after {    animation: blink 1s linear infinite alternate;}@keyframes blink {    to {        box-shadow: 0 0 0 white;    }}
大功告成!
以上就是如何使用纯css实现蚊香燃烧的效果(附源码)的详细内容。
其它类似信息

推荐信息