一年一度的520要來了,做為一名CSS3愛好者,怎么能不為大家的技術(shù)型表白做出一點(diǎn)貢獻(xiàn)呢,這不,用CSS3模擬3D旋轉(zhuǎn)的表白特效來了,快快拿去表白
目錄
實(shí)現(xiàn)思路?
單層3D可見
HTML源代碼
CSS3源代碼
?
實(shí)現(xiàn)思路?
本文通過添加.scene類,添加.banner類,使其雙層3D呈現(xiàn) transform-style: preserve-3d ;
然后將360度切割為24份,每份占用15度,進(jìn)行內(nèi)容分部;
再利用?animation 配合?transform 的Y軸旋轉(zhuǎn),達(dá)到3D旋轉(zhuǎn)的效果
單層3D可見
我們知道如果是2D的,就是一個(gè)平面,無法看見對(duì)面的旋轉(zhuǎn)背面,所以做3D旋轉(zhuǎn)很炫酷,但如果單層3D可見旋轉(zhuǎn)的話,會(huì)是這個(gè)樣子
.scene {
position: relative;
transform-style: preserve-3d;
}
但如果只保留?banner類中的3D可見,卻又效果不同,但仍然不是我們想要的效果,這個(gè)時(shí)候雖然也出現(xiàn)了一定的3D效果,但背面卻被遮擋了,我們是希望當(dāng)前文案正面展示,背面的可見,達(dá)到一個(gè)真正的有角度的3D效果
.scene {
position: relative;
/* transform-style: preserve-3d; */
}
.banner {
display: flex;
transform-style: preserve-3d;
-webkit-animation: rotate 24s infinite linear;
animation: rotate 24s infinite linear;
}
?
HTML源代碼
將360度切割為24分段,每段占用15度的位置。然后給.panel類的::before屬性添加content文案 “又是一個(gè)520,做我男朋友吧”。然后再針對(duì)?:nth-child 每一個(gè)切塊,做出定位,使用?left?hue 和?angle 屬性
最終再利用.banner 的?animation動(dòng)畫,輔助以?transform: rotateY 來整體實(shí)現(xiàn)
<div class="scene">
<div class="banner">
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
<div class="panel"></div>
</div>
</div>
CSS3源代碼
body {
background-color: #000;
color: #fff;
min-height: 100vh;
display: grid;
place-items: center;
perspective: 500px;
perspective-origin: 50% calc(50% - 150px);
}
.scene {
position: relative;
/* transform-style: preserve-3d; */
}
.banner {
display: flex;
transform-style: preserve-3d;
-webkit-animation: rotate 24s infinite linear;
animation: rotate 24s infinite linear;
}
@-webkit-keyframes rotate {
to {
transform: rotateY(-360deg);
}
}
@keyframes rotate {
to {
transform: rotateY(-360deg);
}
}
.panel {
position: absolute;
transform: translate(-50%, -50%) rotateY(var(--angle)) translateZ(190px);
width: 50px;
height: 120px;
overflow: hidden;
}
.panel::before {
position: absolute;
left: var(--left);
content: "又是一個(gè)520,做我男朋友吧";
font-size: 96px;
width: -webkit-max-content;
width: -moz-max-content;
width: max-content;
color: hsl(var(--hue), 75%, 75%);
}
.panel:nth-child(1) {
--left: 0px;
--hue: 0;
--angle: 0deg;
}
.panel:nth-child(2) {
--left: -50px;
--hue: 15;
--angle: 15deg;
}
.panel:nth-child(3) {
--left: -100px;
--hue: 30;
--angle: 30deg;
}
.panel:nth-child(4) {
--left: -150px;
--hue: 45;
--angle: 45deg;
}
.panel:nth-child(5) {
--left: -200px;
--hue: 60;
--angle: 60deg;
}
.panel:nth-child(6) {
--left: -250px;
--hue: 75;
--angle: 75deg;
}
.panel:nth-child(7) {
--left: -300px;
--hue: 90;
--angle: 90deg;
}
.panel:nth-child(8) {
--left: -350px;
--hue: 105;
--angle: 105deg;
}
.panel:nth-child(9) {
--left: -400px;
--hue: 120;
--angle: 120deg;
}
.panel:nth-child(10) {
--left: -450px;
--hue: 135;
--angle: 135deg;
}
.panel:nth-child(11) {
--left: -500px;
--hue: 150;
--angle: 150deg;
}
.panel:nth-child(12) {
--left: -550px;
--hue: 165;
--angle: 165deg;
}
.panel:nth-child(13) {
--left: -600px;
--hue: 180;
--angle: 180deg;
}
.panel:nth-child(14) {
--left: -650px;
--hue: 195;
--angle: 195deg;
}
.panel:nth-child(15) {
--left: -700px;
--hue: 210;
--angle: 210deg;
}
.panel:nth-child(16) {
--left: -750px;
--hue: 225;
--angle: 225deg;
}
.panel:nth-child(17) {
--left: -800px;
--hue: 240;
--angle: 240deg;
}
.panel:nth-child(18) {
--left: -850px;
--hue: 255;
--angle: 255deg;
}
.panel:nth-child(19) {
--left: -900px;
--hue: 270;
--angle: 270deg;
}
.panel:nth-child(20) {
--left: -950px;
--hue: 285;
--angle: 285deg;
}
.panel:nth-child(21) {
--left: -1000px;
--hue: 300;
--angle: 300deg;
}
.panel:nth-child(22) {
--left: -1050px;
--hue: 315;
--angle: 315deg;
}
.panel:nth-child(23) {
--left: -1100px;
--hue: 330;
--angle: 330deg;
}
.panel:nth-child(24) {
--left: -1150px;
--hue: 345;
--angle: 345deg;
}
效果如圖
文章來源:http://www.zghlxwxcb.cn/news/detail-454872.html
?我準(zhǔn)備了一個(gè)非常有意思的投票,大家看完了文章可以投個(gè)票哦,開心一下,一直到這里,你愿意給狗哥點(diǎn)個(gè)關(guān)注嗎?文章來源地址http://www.zghlxwxcb.cn/news/detail-454872.html
到了這里,關(guān)于520要來了,CSS3模擬3D旋轉(zhuǎn)節(jié)日表白動(dòng)畫特效的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!