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 SQL ステートメントが遅い場合の一般的な原因と解決策

1. インデックス不足または無効なインデックスによるクエリの遅延数千万件のデータを含むテーブルで、イ...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

WeChatアプレットのスクロールビューが左右にスライドできない問題を解決する方法

私は現在、自分自身の小さなプログラム プロジェクトに取り組んでいます。プロフェッショナルなフロントエ...

Mybatisの各SQL文の実行時間の統計

背景最近、面接でデータベース トランザクションについてよく質問されます。通常は、@Transacti...

Linux の Centos7 に Mysql5.7.19 をインストールする詳細なチュートリアル

1. MySQLをダウンロードするURL: https://dev.mysql.com/downlo...

jQueryは動的タグイベントを実装します

この記事では、タグイベントを動的に追加するためのjQueryの具体的なコードを参考までに紹介します。...

ウェブサイトに天気予報を挿入する方法

天気予報をウェブサイトに挿入すると、次のような効果が得られます。次のコードを挿入する必要があります:...

Tomcat が設定ファイルを外部に配置するためのソリューション

質問通常の開発では、プロジェクトを Tomcat にデプロイする場合、プロジェクトを war パッケ...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

WeChatアプレットが弾丸画面を送信するビデオプレーヤーを実装

この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...

docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例

ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...

画像ファイルの形式とその選択方法

1. どの 3 つの形式ですか?それぞれ、gif、jpg、png です。画像ファイルを最適化すること...

MySQL の指定文字によるマージと分割の例のチュートリアル

序文指定した文字による結合または分割は一般的なシナリオです。MySQL では結合の記述は比較的簡単で...

WeChatアプレットでラッキーホイールゲームを実装する方法

ここでは主に、WeChat アプレットでラッキーホイール ゲームを開発する方法を紹介します。主に J...