主に使用される知識ポイント: •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 にデプロイする詳細な手順
textarea の形式は保存時にデータベースに保存できますが、表示時には /n と相互に変換できな...
目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...
導入:従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。サーバーは検証コー...
テキストカルーセルは私たちの日常生活で非常に一般的です。スーパーマーケットや実店舗の入り口には、テキ...
理由は分かりませんが、UIではハニカム効果(手を広げたような効果)のデザインが好まれます。 1. 六...
<br />前回は、Web テーブルにセルの線を設定する方法を学びました。今日は、Web...
ステップ1: Ubuntuソースを追加するルートに切り替える suルートソフトウェアソースファイルの...
この記事では、すべてのチェックボックスを選択または解除するためのJavaScriptの具体的なコード...
私が使用しているデータベースはMySQLデータベースバージョン5.7ですまずデータベーステーブルを自...
React Hooks は React 16.8 で導入された新しい機能で、クラスを使用せずに状態や...
背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...
この記事では、参考までに、NFC読み取り機能を実装するためのuni-appの具体的なコードを紹介しま...
今日、小さなプログラムを書いていたときに、スクロールビューを使用したのですが、スクロールビュー内のテ...
以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...
実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...