轉(zhuǎn)載請注明出處,點擊此處 查看更多精彩內(nèi)容
查看 Turbo 官網(wǎng) 時發(fā)現(xiàn)它的背景動畫挺有意思,就自己動手實現(xiàn)了一下。下面對關(guān)鍵點進(jìn)行解釋說明,查看完整代碼及預(yù)覽效果請 點擊這里。
簡單說明原理:使用 mask-image
遮罩繪制網(wǎng)格,使用 perspective
及 rotate
動畫設(shè)置 3D 縱深效果,并添加位移動畫即可。
DOM 結(jié)構(gòu)
<div class="container">
<div class="lines"></div>
</div>
-
.container
容器用來做 3D 變換。 -
.lines
用來繪制網(wǎng)格線并執(zhí)行動畫。
繪制網(wǎng)格線
.lines {
...,
background-image: linear-gradient(90deg, var(--left-line-color) 45%, transparent 50%, var(--right-line-color) 55%);
-webkit-mask-image: linear-gradient(90deg, #000 2px, transparent 0), linear-gradient(180deg, #000 2px, transparent 0);
mask-image: linear-gradient(90deg, #000 2px, transparent 0), linear-gradient(180deg, #000 2px, transparent 0);
-webkit-mask-size: var(--grid-size) var(--grid-size);
mask-size: var(--grid-size) var(--grid-size);
}
-
background-image
繪制一個從左向右漸變的背景。 -
mask-image
繪制水平和垂直的線條做遮罩。 -
mask-size
設(shè)置單個遮罩的尺寸,即網(wǎng)格尺寸。
3D 變換
配置 3D 變換使網(wǎng)格擁有從遠(yuǎn)處延伸到近前的效果。
.container {
...,
perspective: 1000px;
}
.lines {
transform: rotateX(75deg);
}
添加動畫
@keyframes move {
from {
transform: rotateX(75deg) translateY(0);
}
to {
transform: rotateX(75deg) translateY(var(--grid-size));
}
}
.lines {
transform: rotateX(75deg) translateY(0);
animation: move 1s linear infinite;
}
設(shè)置動畫 Y 軸移動一個網(wǎng)格的長度,并無限循環(huán)。文章來源:http://www.zghlxwxcb.cn/news/detail-584896.html
其他
設(shè)置頂部和底部遮罩,遮擋住頂部雜亂的線條,并使底部擁有淡出的效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-584896.html
.container::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(180deg, var(--bg-color) 50%, transparent);
z-index: 1;
}
.container::after {
content: "";
position: absolute;
inset: calc(100% - var(--grid-size)) 0 0;
height: var(--grid-size);
background: linear-gradient(180deg, transparent, var(--bg-color));
z-index: 1;
}
到了這里,關(guān)于CSS 實現(xiàn) Turbo 官網(wǎng) 3D 網(wǎng)格線背景動畫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!