CSS3 はドラッグ可能なルービックキューブの 3D 効果を実現します

CSS3 はドラッグ可能なルービックキューブの 3D 効果を実現します

主に使用される知識ポイント:

•css3 3D変換 •ネイティブjsマウスドラッグイベント

•表示:グリッドレイアウト

実装された機能

• 3Dルービックキューブはクリックしてドラッグできます

• 効果を直接確認する

html:

<div class="コンテナ">
        <div class="box デフォルト">
            <div class="pic"><img src="./img/cat.jpg" alt=""></div>
            <div class="pic"><img src="./img/dog.jpg" alt=""></div>
            <div class="pic"><img src="./img/elephant.jpg" alt=""></div>
            <div class="pic"><img src="./img/lion.jpg" alt=""></div>
            <div class="pic"><img src="./img/rabbit.jpg" alt=""></div>
            <div class="pic"><img src="./img/monkey.jpg" alt=""></div>
        </div>
    </div>
    <h1>下の画像ボタンをクリックして切り替えます</h1>
    <div class="btn">
        <input type="image" class="1" src="./img/cat.jpg">
        <input type="image" class="2" src="./img/dog.jpg">
        <input type="image" class="3" src="./img/elephant.jpg">
        <input type="image" class="4" src="./img/lion.jpg">
        <input type="image" class="5" src="./img/rabbit.jpg">
        <input type="image" class="6" src="./img/monkey.jpg">
    </div>

CS: ...

   * {
        マージン: 0;
        パディング: 0;
    }
    html,
    体 {
        幅: 100%;
        高さ: 100%;
        背景: #66677c;
        テキスト配置: 中央;
    }
    。容器 {
        幅: 300ピクセル;
        高さ: 300px;
        マージン: 50px 自動 150px;
        パースペクティブ: 1200px;
    }
    .コンテナ .ボックス {
        幅: 300ピクセル;
        高さ: 300px;
        位置: 相対的;
        変換スタイル: 3D を保持します。
        遷移: 0.5 秒を変換します。
    }
    .コンテナ .ボックス .pic {
        位置: 絶対;
        左: 0;
        上: 0;
        幅: 300ピクセル;
        高さ: 300px;
        ボックスシャドウ: 0px 0px 5px #fff;
    }
    .コンテナ .ボックス .pic 画像 {
        幅: 100%;
        高さ: 100%;
        カーソル: ポインタ;
    }
    .コンテナ .ボックス .pic:nth-child(1) {
        変換: translateZ(150px);
    }
    .コンテナ .ボックス .pic:n番目の子(2) {
        変換: 回転Y(-180度) 移動Z(150ピクセル);
    }
    .コンテナ .ボックス .pic:nth-child(3) {
        変換: 回転Y(90度) 移動Z(150ピクセル);
    }
    .コンテナ .ボックス .pic:nth-child(4) {
        変換: 回転Y(-90度) 移動Z(150ピクセル);
    }
    .コンテナ .ボックス .pic:nth-child(5) {
        変換: 回転X(90度) 移動Z(150ピクセル);
    }
    .コンテナ .ボックス .pic:nth-child(6) {
        変換: 回転X(-90度) 移動Z(150ピクセル);
    }
    h1 {
        色: #fff;
        フォントサイズ: 30px;
        下部マージン: 30px;
    }
    .btn{
        表示: グリッド;
        コンテンツの中央揃え: 中央;
        グリッドテンプレートの列: 100px 100px 100px;
        グリッドテンプレートの行: 100px 100px;
        グリッドギャップ: 15px;
    }
    .btn 入力 {
        幅: 100ピクセル;
        高さ: 100px;
        アウトライン: なし;
        境界線: 2px 実線 #fff;
    }
    .btn 入力:フォーカス {
        境界線: 2px 実線 #e70;
    }
    。デフォルト {
        変換: translateZ(-150px) rotateX(-10deg) rotateY(15deg);
    }
    .image1 {
        変換: translateZ(-150px) rotateX(0deg) rotateY(0deg);
    }
    .image2 {
        変換: translateZ(-150px) rotateY(-180deg);
    }
    .image3 {
        変換: translateZ(-150px) rotateY(-90deg);
    }
    .image4 {
        変換: translateZ(-150px) rotateY(90deg);
    }
    .image5 {
        変換: translateZ(-150px) rotateX(-90deg);
    }
    .image6 {
        変換: translateZ(-150px) rotateX(90deg);
    }

js:

 (関数(){
        var btn = document.getElementsByClassName('btn')[0];
        var box = document.getElementsByClassName('box')[0];
        btn.addEventListener('click',function(e){
            var クラス名 = e.target.className;
            if(クラス名 !== 'btn'){
                ボックススタイル = '';
                box.classList.replace(box.classList[1],'画像'+クラス名);
            }
        })
        //マウスのドラッグ効果 var xN = 10, yN = 15;
        document.addEventListener('mousedown',function(e){
            e.preventDefault();
            e.stopPropagation();
            var x = e.clientX;
            var y = e.clientY;
            document.addEventListener('mousemove',move);
            document.addEventListener('mouseup', 上);
            関数move(e){
                e.preventDefault();
                e.stopPropagation();
                var x1 = e.clientX;
                var y1 = e.clientY;
                xN + = (x1 - x)*0.04;
                yN += (y1 - y)*0.04;
                box.style.transform = 'translateZ(-150px) rotateY(' + xN + 'deg) rotateX(' + -yN + 'deg)';
            }
            関数 up(){
                document.removeEventListener('mousemove', 移動);
            }
        })
    })()

要約する

上記は、CSS3 に基づくドラッグ可能なルービック キューブ 3D 効果の紹介です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

<<:  デザイン理論:人の心を理解する方法

>>:  TypeScript 環境を構築して VSCode にデプロイする詳細な手順

推薦する

Dockerでk8sをデプロイする方法

K8s k8s はクラスターです。クラスターには複数の名前空間があります。名前空間の下には複数のポッ...

Vue コンポーネント値転送中のデータ損失の分析と解決

序文前回の記事では、JavaScript の 2 つのデータ型、基本型と参照型、および参照型の浅いコ...

セマンティック HTML タグの紹介

ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...

JavaScript における this ポイントの問題の詳細な説明

要約する地球環境 ➡️ ウィンドウ通常関数 ➡️ ウィンドウまたは未定義コンストラクター ➡️ 構築...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデ...

Apple M1チップにnginxをインストールし、vueプロジェクトをデプロイする詳細な手順

nginx をインストールApple Mac ではインストールに brew を使用します。brew ...

Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード

1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...

html5 の新しいメソッドを使用して JavaScript で要素クラス名を操作する方法の詳細な説明

目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...

Nginx ドメイン名の書き換えとワイルドカードドメイン名の解決を設定する方法

この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...

MySql テーブル、データベース、シャーディング、パーティショニングの知識ポイントの紹介

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

Windows Server 2008 R2 リモート デスクトップのポート 3389 を変更する方法

Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...

Vue-cliフレームワークはタイマーアプリケーションを実装します

技術的背景このアプリケーションは vue-cli フレームワークを使用し、カスタム コンポーネント ...

Django+Mysql+Redis+Gunicorn+NginxのDockerデプロイメントの実装

I. はじめにDockerテクノロジーは現在非常に人気があります。コンテナを介してプロジェクト環境を...

Windows での MySQL インストール チュートリアル (画像とテキスト付き)

MySQL インストール手順 MySQL は、スウェーデンの MySQL AB によって開発された...