CSSでワードアート風3Dテキストを表示する
テキスト用の要素を複数個用意し、1つずつtranslateZ()
で奥方向(Z軸方向)にずらしていくことで、CSSだけでワードアートのような3Dテキスト表現が実現できる。
<section clas="scene">
<div class="layered">
<span>Hello World!!</span>
<div class="layers" aria-hidden="true">
<div style="--i: 1;">Hello World!!</div>
<div style="--i: 2;">Hello World!!</div>
<div style="--i: 3;">Hello World!!</div>
...
<div style="--i: 19;">Hello World!!</div>
<div style="--i: 20;">Hello World!!</div>
</div>
</div>
</section>
.scene {
* {
perspective: 400px;
transform-style: preserve-3d;
}
.layered {
position: relative;
animation: wobble 12s infinite linear;
}
.layers, .layers > div {
position: absolute;
inset: 0;
}
.layers > div {
--n: calc(var(--i) / 20);
/* translateZで奥行きを出す */
transform: translateZ(calc(var(--i) * 3px));
color: hsl(100 50% calc(var(--n) * 100%));
}
}
@keyframes wobble {
from { transform: rotate(0deg) rotateX(30deg) rotate(360deg); }
to { transform: rotate(360deg) rotateX(30deg) rotate(0deg); }
}
デモ
Hello World!!