(二十二)巧用CSS3之电池

257 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

今天在收拾物品的时候,发现了很久不用的电池🔋,所以跟着我一起来做个电池吧。

电池

废弃的电池不要随意丢弃,可以做好垃圾回收,集中处理。

结构

电池的实现我们只需要一个元素就好了,如下:

<div class="battery"></div>

样式

我们首先先对body做个处理,让电池更好的去展示,如下:

body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #000;
}

然后,我们需要准备先把电池的轮廓画出来,如下:

.battery {
    width: 5rem;
    height: 8rem;
    border: 0.1rem solid cyan;
    position: relative;
}

.battery::before {
    content: '';
    width: 1rem;
    height: 0.5rem;
    background-color: cyan;
    position: absolute;
    left: 50%;
    top: -0.5rem;
    transform: translateX(-50%);
    border-radius: 0.2rem 0.2rem 0 0;
}

再然后,我们需要对电池填充,如下:

.battery::after{
    content: '';
    width: 100%;
    height: 10%;
    background-color: rgb(255, 123, 0);
    position: absolute;
    left: 0;
    bottom: 0;
    animation: _animate 6s ease-in infinite;
}

@keyframes _animate {
    10%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0);

    }
    20%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold;

    }
    30%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold,
        0 -3rem 0 0 gold;

    }
    40%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold,
        0 -3rem 0 0 gold,
        0 -4rem 0 0 green;

    }
    50%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold,
        0 -3rem 0 0 gold,
        0 -4rem 0 0 green,
        0 -5rem 0 0 green;

    }
    60%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold,
        0 -3rem 0 0 gold,
        0 -4rem 0 0 green,
        0 -5rem 0 0 green,
        0 -6rem 0 0 green;

    }
    70%,100%{
        box-shadow: 0 -1rem 0 0 rgb(255, 123, 0),
        0 -2rem 0 0 gold,
        0 -3rem 0 0 gold,
        0 -4rem 0 0 green,
        0 -5rem 0 0 green,
        0 -6rem 0 0 green,
        0 -7rem 0 0 green;
    }
}

电池的填充使用到了动画,然后结合阴影效果去呈现出来。

总结

结合box-shadow去实现一些效果有时候是非常实用的,它不仅可以是视觉效果更加有冲击力,也可以省去很多dom元素。

因为今天没有复杂的动画,所以就不使用代码片段功能了,代码都已贴出,初学的小伙伴可以看一下。