您的当前位置:首页正文

如何使用纯CSS实现冰棍的动画效果(附代码)

2020-11-27 来源:我们爱旅游
本篇文章给大家带来的内容是关于如何使用纯CSS实现冰棍的动画效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

158620610-5b1efa8107392_articlex.png

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含 2 个元素:

<div class="ice-lolly">
 <div class="flavors"></div>
 <div class="stick"></div>
</div>

居中显示:

body {
 margin: 0;
 height: 100vh;
 display: flex;
 align-items: center;
 justify-content: center;
 background-color: darkslategray;
}

绘制出冰棍的外形:

.flavors {
 width: 19em;
 height: 26em;
 font-size: 10px;
 border-radius: 8em 8em 1em 1em;
}

给冰棍上色:

.flavors {
 position: relative;
 overflow: hidden;
}

.flavors::before {
 content: '';
 position: absolute;
 width: 140%;
 height: 120%;
 background: linear-gradient(
 hotpink 0%,
 hotpink 25%,
 deepskyblue 25%,
 deepskyblue 50%,
 gold 50%,
 gold 75%,
 lightgreen 75%,
 lightgreen 100%);
 z-index: -1;
 left: -20%;
 transform: rotate(-25deg);
}

来一点光照效果:

.flavors::after {
 content: '';
 position: absolute;
 width: 2em;
 height: 17em;
 background-color: rgba(255, 255, 255, 0.5);
 left: 2em;
 bottom: 2em;
 border-radius: 1em;
}

画出冰棍筷子:

.stick {
 position: relative;
 width: 6em;
 height: 8em;
 background-color: sandybrown;
 left: calc(50% - 6em / 2);
 border-radius: 0 0 3em 3em;
}

给冰棍筷子加一点阴影,增加立体感:

.stick::after {
 content: '';
 position: absolute;
 width: inherit;
 height: 2.5em;
 background-color: sienna;
}

让冰棍的色彩滚动起来:

.flavors::before {
 animation: moving 100s linear infinite;
}

@keyframes moving {
 to {
 background-position: 0 1000vh;
 }
}

最后,增加交互效果,当鼠标悬停时才播放动画:

.flavors::before {
 animation-play-state: paused;
}

.ice-lolly:hover .flavors::before {
 animation-play-state: running;
}

大功告成!

相关推荐:

如何使用纯CSS实现带有金属光泽的立体按钮的动画效果(附源码)

如何使用纯CSS实现文字断开的动画效果(附源码)

如何使用CSS实现渐变色动画边框的效果(附代码)