如何用純 CSS 創(chuàng)作一支誘人的冰棍
問:如何用css實(shí)現(xiàn)一支誘人的冰棍

動(dòng)態(tài)效果預(yù)覽
復(fù)制跳轉(zhuǎn)下方連接可以去查看動(dòng)態(tài)效果
https://codepen.io/comehope/pen/vrxzMw點(diǎn)擊預(yù)覽
源代碼下載
https://github.com/comehope/front-end-daily-challenges
代碼解讀
定義 dom,容器中包含 2 個(gè)元素:
<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);
}

來一點(diǎn)光照效果:
.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;
}

給冰棍筷子加一點(diǎn)陰影,增加立體感:
.stick::after {
content: '';
position: absolute;
width: inherit;
height: 2.5em;
background-color: sienna;
}

讓冰棍的色彩滾動(dòng)起來:
.flavors::before {
animation: moving 100s linear infinite;
}
@keyframes moving {
to {
background-position: 0 1000vh;
}
}
最后,增加交互效果,當(dāng)鼠標(biāo)懸停時(shí)才播放動(dòng)畫:
.flavors::before {
animation-play-state: paused;
}
.ice-lolly:hover .flavors::before {
animation-play-state: running;
}
大功告成!
原文出處:https://segmentfault.com/a/1190000015257561
CSS真是神秘~
針對(duì)這個(gè)題目,你的解決方案又是什么呢?
不妨在下面的留言給出,學(xué)習(xí)共勉下~
碼字不易,走過路過可否點(diǎn)個(gè) 在看,點(diǎn)個(gè)贊??先謝謝了!
ε=ε=ε=┏(゜ロ゜;)┛
最后
?有疑問的同學(xué) 歡迎 評(píng)論區(qū)討論,也歡迎大家加入我的前端技術(shù)交流群 來討論。搜索《前端陽(yáng)光》公眾號(hào),回復(fù)加群吧!
評(píng)論
圖片
表情
