CSS で 3D ルービック キューブを実装するサンプル コード

CSS で 3D ルービック キューブを実装するサンプル コード

今日は簡単な3Dルービックキューブを作ってみましょう

まずはレンダリングを見てみましょう!これを学んだ後、インターネット上のいくつかの3Dフォトアルバムを使用できるようになります

1.まずHTMLコードを準備しましょう

<!DOCTYPE html>
<html lang="ja">
    <ヘッド>
        <title>3D ルービック キューブ</title>
        <メタ文字セット="UTF-8">
    </head>
    <本文>
    	<div class="top"></div> <!--トップ-->
    	<div class="bottom"></div> <!--次へ-->
    	<div class="left"></div> <!--左-->
    	<div class="right"></div> <!--右-->
    	<div class="after"></div> <!--後-->
    	<div class="before"></div> <!--前-->
    </本文>
</html>

さて、HTML コードの準備ができました。まず、3D 思考を身に付けて、脳内でルービック キューブがどのような形をしているかを想像する必要があります。6 つの面で構成されているのではないですか?

2. CSSスタイルを追加する

*{
    margin:0; /* デフォルトのスタイルは余白を削除します*/
    パディング:0;
}
div{ /*div 一般的なスタイル設定の高さと幅*/
    幅: 300ピクセル;
    高さ: 300px;
    不透明度:0.5; /*透明度*/
}
.top{ /* クラス名で色を設定します。以下はすべて設定されている色です*/
    背景色:茶色;				
}
。底{
    背景色:青紫;
}
。左{
    背景色:ブランチダルモンド;
}
。右{
    背景色:cadetblue;
}
。後{
    背景色:チョコレート;
}
。前に{
    背景色:シアン;
}

さて、この時点で基礎は築かれており、建物の建設を開始できます。


これが、皆さんが目にする効果です注意我這里是縮小了。皆さんも私と同じブロックをすべて隣り合わせに、柱のように積み重ねて表示しているはずです。今、私たちはそれらを紙切れのようにつなぎ合わせ始めなければなりません。

2. divを重ねる

div{							
    幅: 300ピクセル;
    高さ: 300px;
    position: absolute; /*divの一般的なスタイルに絶対位置を追加します*/
}
body{ /*次の手順は、すべてのdivを画面の中央に配置することです*/
    高さ:100vh;
    幅:100vw;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
} 


これでこの効果が見えました。明らかに 6 つの四角形がありますが、なぜ 1 つしかないのでしょうか。実はそうではありません。他の div がこの div の後ろにあり、前面の div が視界を遮っているため、この div が見えないのです。

3. 3D空間を開く

体{
    transform-style: preserve-3d; /*3D 空間を有効にするにはこのコードのみが必要です*/
    高さ:100vh;
    幅:100vw;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
}

divをまとめる

。トップ{
    背景色:茶色;
    transform:rotateX(90deg) translateZ(150px); /*まず回転してからオフセット*/
}
。底{
    背景色:青紫;
    変換:回転X(-90度) 移動Z(150ピクセル);
}
。左{
    背景色:ブランチダルモンド;
    変換:Y軸を回転(-90度)、Z軸を移動(150ピクセル)。
}
。右{
    背景色:cadetblue;
    変換:Y軸を90度回転、Z軸を150ピクセル移動します。
}
。後{
    背景色:チョコレート;
    変換:Y軸を180度回転、Z軸を150ピクセル移動します。
}
。前に{
    背景色:シアン;
    変換:Y軸を回転(0度)、Z軸を移動(150ピクセル)。
} 


表示されるのはこのように見えるはずです。実際、ルービック キューブの組み立ては完了していますが、ルービック キューブは平らに置かれていて見えません。そのため、回転させるアニメーションを作成します。你給div加上一點文字更容易觀察

4. アニメーションの回転

<!DOCTYPE html>
<html lang="ja">
    <ヘッド>
        <title>3D ルービック キューブ</title>
        <メタ文字セット="UTF-8">
        <スタイル タイプ="text/css">
*{
    マージン:0;           
    /* デフォルトのスタイルでは余白が削除されます*/
    パディング:0;
}
div{
    幅: 300ピクセル;
    高さ: 300px;
    位置: 絶対;
    不透明度: 0.5;
    テキスト配置: 中央;
    行の高さ: 300px;
}
体{
    変換スタイル: 3D を保持します。
    高さ:100vh;
    アニメーション: fram1 10s イーズ; /*参照アニメーション*/
    幅:100vw;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
}

。トップ{
    背景色:茶色;
    変換:回転X(90度) 移動Z(150ピクセル);

}
。底{
    背景色:青紫;
    変換:回転X(-90度) 移動Z(150ピクセル);
}
。左{
    背景色:ブランチダルモンド;
    変換:Y軸を回転(-90度)、Z軸を移動(150ピクセル)。
}
。右{
    背景色:cadetblue;
    変換:Y軸を90度回転、Z軸を150ピクセル移動します。

}
。後{
    背景色:チョコレート;
    変換:Y軸を180度回転、Z軸を150ピクセル移動します。
}
。前に{
    背景色:シアン;
    変換:Y軸を回転(0度)、Z軸を移動(150ピクセル)。
}
@keyframes fram1{ /* アニメーションの回転 X 軸と Y 軸 */
    0%,100%{
        変換: rotateY(0deg) rotateX(0deg);
    }
    50%{
        変換: rotateY(180deg)、rotateX(180deg);

    }
}
        </スタイル>
    </head>
    <body> <!-- 視覚的にわかりやすくするためにテキストを追加します -->
    	<div class="top">1</div> 			
    	<div class="bottom">2</div>		
    	<div class="left">3</div>		
    	<div class="right">4</div>		
    	<div class="after">5</div>		
    	<div class="before">6</div>		
    </本文>
</html>

すべてのコードはここにあります。私はあなたと一緒にそれを完成させました。3D フォト アルバムを作成する場合は、div に背景画像を追加し、 background-color替換為background-image

V. 結論

詳細についてお話ししましょう!もちろん、これが一番大事なことでもあるので、ぜひご覧になってください。これまで見てきたのは、スプライシング プロセスのコードだけです。まず、 width:300px與height:300pxの div を 6 つ作成しました。これらをposition:absoluteで重ね合わせました。絶対配置にするとレイヤーが重なるということを覚えておいてください。z z-inde:レイヤーを制御できます。次に、最も重要な部分であるtransform:rotateX(90deg) translateZ(150px);について説明します。なぜ最初に回転してからここでオフセットするのでしょうか。

簡単に言うと、右に曲がって前進したときに到達する場所と、前進してから右に曲がったときに到達する場所は異なります。これが原理です。理解してしまえば、まだ始めたばかりの人でも、3D で楽しめることはたくさんあります。ゆっくりと探索するのを待っています。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  HTML で Flash を読み込む方法 (2 つの実装方法)

>>:  ウェブデザインと制作に関する科学的原則と提案の要約

推薦する

MySQL 8.0.11 MSI バージョンのインストールと構成のグラフィック チュートリアル

この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

iostat を使用して Linux ハードディスクの IO パフォーマンスを表示する方法

TOP 観察: IO 待機に占められる CPU 時間の割合。30% を超えると、IO の負荷が高くな...

Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法

当社には、外部ネットワークからの干渉を受けることが多いサーバーが多数あります。侵入者はポート 338...

MySQLdump コマンドを使用した MySQL データの移行

このソリューションの利点はシンプルさと使いやすさですが、欠点はダウンタイムが長くなることです。 した...

MySQLインデックスの詳細な分析

序文インデックスの選択はオプティマイザ段階の作業であることはわかっていますが、オプティマイザは万能で...

MySQLのバージョンアップ方法を超詳しく解説

目次1. はじめに2. データベースをバックアップする3. オリジナルのMysqlをアンインストール...

Windows と Linux 間のリモート デスクトップ接続

Linux へのリモート デスクトップ接続といえば、まず VNC の使用を思い浮かべるかもしれません...

select count() と select count(1) の違いと実行方法

Count(*) または Count(1) または Count([column]) は、おそらく S...

静的ウェブサイトをRSSに変換するツール

<br /> この記事は allwebdesignresources.com から Ra...

MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策

問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...

高度なクローラー - JS 自動レンダリングのための Scrapy_splash コンポーネントの使用

目次1. scrapy_splash とは何ですか? 2. scrapy_splashの役割3. s...

MySQLの権限とインデックスの詳細な説明

mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...

Vueはシンプルな計算機を実装する

この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...

HTML で余分なテキストを省略記号に変換する方法

HTML で余分なテキストを省略記号として表示したい場合は、いくつかの方法があります。 1行テキスト...