顏色不斷的變化
0e7a844aec9b8fc0085a6e4d8c2ed7f.png
知識(shí)點(diǎn)
最主要的其實(shí)是用到了 filter: contrast() 以及 filter: blur() 這兩個(gè)濾鏡墨榄,可以很好的實(shí)現(xiàn)這種融合效果。
單獨(dú)將兩個(gè)濾鏡拿出來藐吮,它們的作用分別是:
filter: blur(): 給圖像設(shè)置高斯模糊效果剑辫。
filter: contrast(): 調(diào)整圖像的對(duì)比度哭尝。
但是驹吮,當(dāng)他們“合體”的時(shí)候,產(chǎn)生了奇妙的融合現(xiàn)象贡定。
c8d61573ef76edaea53b588b00f8459.png
bf1fb7dd7642e52b4129d3a10f7bca9.png
仔細(xì)看兩圓相交的過程赋访,在邊與邊接觸的時(shí)候,會(huì)產(chǎn)生一種邊界融合的效果,通過對(duì)比度濾鏡把高斯模糊的模糊邊緣給干掉蚓耽,利用高斯模糊實(shí)現(xiàn)融合效果渠牲。
html
<div class="g-container">
<div class="g-number">98.7%</div>
<div class="g-contrast">
<div class="g-circle"></div>
<ul class="g-bubbles">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
css
html,
body {
width: 100%;
height: 100%;
display: flex;
background: #000;
overflow: hidden;
}
.g-number {
position: absolute;
width: 300px;
top: 27%;
text-align: center;
font-size: 32px;
z-index: 10;
color: #fff;
}
.g-container {
position: relative;
width: 300px;
height: 400px;
margin: auto;
}
.g-contrast {
filter: contrast(15) hue-rotate(0);
width: 300px;
height: 400px;
background-color: #000;
overflow: hidden;
animation: hueRotate 10s infinite linear;
}
.g-circle {
position: relative;
width: 300px;
height: 300px;
box-sizing: border-box;
filter: blur(8px);
&::after {
content: "";
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%) rotate(0);
width: 200px;
height: 200px;
background-color: #00ff6f;
border-radius: 42% 38% 62% 49% / 45%;
animation: rotate 10s infinite linear;
}
&::before {
content: "";
position: absolute;
width: 176px;
height: 176px;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
background-color: #000;
z-index: 10;
}
}
.g-bubbles {
position: absolute;
left: 50%;
bottom: 0;
width: 100px;
height: 40px;
transform: translate(-50%, 0);
border-radius: 100px 100px 0 0;
background-color: #00ff6f;
filter: blur(5px);
}
li {
position: absolute;
border-radius: 50%;
background: #00ff6f;
}
@for $i from 0 through 15 {
li:nth-child(#{$i}) {
$width: 15 + random(15) + px;
left: 15 + random(70) + px;
top: 50%;
transform: translate(-50%, -50%);
width: $width;
height: $width;
animation: moveToTop #{random(6) + 3}s ease-in-out -#{random(5000)/1000}s infinite;
}
}
@keyframes rotate {
50% {
border-radius: 45% / 42% 38% 58% 49%;
}
100% {
transform: translate(-50%, -50%) rotate(720deg);
}
}
@keyframes moveToTop {
90% {
opacity: 1;
}
100% {
opacity: .1;
transform: translate(-50%, -180px);
}
}
@keyframes hueRotate {
100% {
filter: contrast(15) hue-rotate(360deg);
}
}
注意事項(xiàng)
通過調(diào)節(jié) filter: blur() 及 filter: contrast() 屬性的值,動(dòng)畫效果其實(shí)會(huì)有很大程度的變化步悠,好的效果需要不斷的調(diào)試签杈。當(dāng)然,經(jīng)驗(yàn)在其中也是發(fā)揮了很重要的作用鼎兽,說到底還是要多嘗試答姥。
來源前端大學(xué)公眾號(hào)
更多精彩 CSS 技術(shù)文章匯總在 Github -- iCSS
end~