主に使用される知識ポイント: •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-compose でコンテナ ポートを公開する方法は、ports と expose の ...
会社の影響力が拡大し、製品が改良され続けるにつれて、関連するイメージデザインもそれに追いつき、徐々に...
背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...
デプロイされるプロジェクトが増えるにつれて、Tomcat にデプロイされるリリース パッケージも増え...
まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...
1. 通常の背景ぼかしコード: <スタイル> html, 体 { 幅: 100%; 高...
オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...
目次1. セットアップ1. セットアップ関数の最初のパラメータ - props 2. 文脈2. セッ...
1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...
<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...
Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...
この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を...
目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...
序文CSS グリッドは通常、さまざまなフレームワークにバンドルされていますが、実際のビジネス ニーズ...
1. 公式サイトを参照してdockerをインストールする2. MySQLイメージをプルします(デフォ...