CodeBlanks Logo Icon CodeBlanks

Animasyon Küp

Altı HTML panelinden oluşan ve CSS transform ile perspective kullanarak iki eksende sürekli dönen 3D küp.

İçeriğe Git Tam Ekran
HTML
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>3D Dönen Küp</title>
    </head>
    <body>
        <div id="stage">
            <div id="front" class="plane"><p>@thecodeblanks</p></div>
            <div id="back" class="plane"><p>Html</p></div>
            <div id="right" class="plane"><p>Css</p></div>
            <div id="left" class="plane"><p>Javascript</p></div>
            <div id="top" class="plane"><p>Jquery</p></div>
            <div id="bottom" class="plane"><p>For You</p></div>
        </div>
    </body>
</html>
CSS
body {
    display: flex;
    align-items: center;
    justify-content: center;
    perspective: 800px;
    background-color: transparent;
}
#stage {
    width: 200px;
    height: 200px;
    margin: 50px auto;
    transform-style: preserve-3d;
    animation: rotate 10s linear infinite;
}
.plane {
    position: absolute;
    width: 200px;
    height: 200px;
    border: 2px solid black;
    background: rgba(0, 150, 255, 0.5);
    opacity: 0.8;
    display: flex;
    justify-content: center;
    align-items: center;
}
.plane p {
    color: white;
    font-size: 24px;
    font-weight: bold;
} /* Yazı stili */
#front {
    transform: translateZ(100px);
}
#back {
    transform: rotateY(180deg) translateZ(100px);
}
#right {
    transform: rotateY(90deg) translateZ(100px);
}
#left {
    transform: rotateY(-90deg) translateZ(100px);
}
#top {
    transform: rotateX(90deg) translateZ(100px);
}
#bottom {
    transform: rotateX(-90deg) translateZ(100px);
}

@keyframes rotate {
    from {
        transform: rotateX(0deg) rotateY(0deg);
    }
    to {
        transform: rotateX(360deg) rotateY(360deg);
    }
}

Bu snippet hakkında

Canvas yok, WebGL yok: bu dönen küp, CSS ile 3B uzayda konumlandırılmış altı sıradan div öğesinden oluşur. Her yüzün kendi etiketi vardır (HTML, CSS, JavaScript vb.) ve küpün tamamı 10 saniyelik bir döngüyle X ve Y eksenlerinde döner.

Nasıl çalışır?

  • Üst öğedeki perspective: 800px sahneye derinlik verir; daha küçük değerler 3B etkiyi abartır.
  • #stage öğesi transform-style: preserve-3d kullanır; böylece alt öğeler düzleşmez, 3B konumlarını korur.
  • Her yüz önce baktığı yöne döndürülür (rotateY(90deg), rotateX(-90deg) …), ardından küpün 200 piksellik genişliğinin yarısı kadar, yani translateZ(100px) ile dışarı itilir.
  • rotate keyframe'leri sahneyi iki eksende de 0°'den 360°'ye çevirir; linear zamanlama dönüş hızını sabit tutar.

Nasıl kullanılır?

  1. Altı .plane yüzünü içeren HTML yapısını ve CSS'i kopyala.
  2. Boyutu değiştirmek için #stage ve .plane için width/height değerlerini güncelle, sonra tüm translateZ değerlerini bunun yarısına ayarla.
  3. Her <p> içindeki yazıyı değiştir ya da yüzlere görsel koyarak bir ürün veya logo küpü yap.
  4. Dönüşü hızlandırmak ya da yavaşlatmak için animasyondaki 10s değerini değiştir.

İpuçları

Yüzlerde opak arka plan kullanıyorsan backface-visibility: hidden ekle. Küpü etkileşimli yapmak için üzerine gelindiğinde animation-play-state: paused ile durdurabilirsin.

Yorumlar 0

Henüz yorum yok. İlk yorumu sen yaz.