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 にデプロイする詳細な手順

推薦する

MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

MySQLのダウンロードとインストール(バージョン8.0.20)のチュートリアルは参考までに、具体的...

JavaScriptはボタンをクリックして4桁のランダムな検証コードを生成します

この記事の例では、ボタンをクリックすることで4桁のランダムな検証コードを生成するjsの具体的なコード...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

コードをコピーコードは次のとおりです。 <object classid="clsid...

Vueのトランジションとアニメーションの深い理解

1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

Linux で XFS パーティション形式のルート ディレクトリを縮小する方法

目次序文システム環境現在のシステムパーティションレイアウトデータのバックアップレスキューモードに入る...

Linux でのデータベースのスケジュールバックアップの実装スクリプト

目次シナリオ: サーバーデータベースを毎日定期的にバックアップする必要がある1. まずバックアップス...

キャンバスをベースにした超クールな水光効果を実現

この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...

MySQL 8.0 に移行する際の注意点 (要約)

パスワードモードPDO::__construct(): サーバーがクライアントに不明な認証方法を要求...

Vueは複数列レイアウトドラッグを実装します

この記事では、マルチカラムレイアウトドラッグを実装するためのVueの具体的なコードを参考までに共有し...

secure_file_priv nullの問題を解決する

secure_file_priv = ' ';管理者としてcmdを実行します。 my...

Linux で PCIe のバージョンと速度を確認する方法

PCIE には 4 つの異なる仕様があります。下の図でそのうちの 2 つを見てみましょう。マザーボー...

CSSリストのスライドにより、下部に隠れるのを防ぎ、長い画面モデルの処理に適応します。

1. モバイル端末がリストスライドを処理するとき、WeChat には下部にページに戻るボタンが組み...

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...