この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本当に目が見えなくなりました。二度とこのような愚かな間違いはしません >_< 1. 知識ポイント分析 1. APDivの配置レイアウト 2. クリック イベントでの遷移と変換の効果。 3. 各小さいアイコンの左と上の値を計算します。 4. 小さなアイコンをクリックした後、アイコンの遷移イベントをリッスンします。 2. HTMLソースコード <div id="ステージ"> <div id="nav"> <img src="images/1.png"> <img src="images/2.png"> <img src="images/3.png"> <img src="images/4.png"> <img src="images/5.png"> </div> <div id="home"> <img src="images/home.png"> </div> </div> 3. CSSスタイル 体 { マージン: 0; } 体{ 背景色:#eee;} #ステージ{ 幅: 300ピクセル; 高さ: 300px; 位置: 相対的; 上: 150px; マージン: 0 自動; } #ナビ{ 位置: 絶対; 幅: 120ピクセル; 高さ: 107px; 左: 50%; 左マージン: -60px; 上位: 50%; 上マージン: -53px; } #ナビ画像{ 幅: 100%; 位置: 絶対; 左: 0; 上: 0; カーソル: ポインタ; } #家 { 位置: 絶対; 幅: 150ピクセル; 高さ: 134px; 左: 0; 上: 0; 右: 0; 下部: 0; マージン: 自動; カーソル: ポインタ; 遷移: 0.5 秒のイーズインアウト; } #ホーム画像{ 幅: 100%; } 4. JavaScript ソースコード window.onload = 関数(){ var oHome = document.getElementById("home"); var oNav = document.getElementById("nav"); var aImg=oNav.getElementsByTagName("img"); var imgLen=aImg.length; var onOff = true; var iR = -260; //マウスが各小さなアイコンをクリックすると for(var i=0;i<imgLen;i++){ aImg[i].onclick=関数(){ this.style.transition="0.2秒"; this.style.transform="スケール(1.2) 回転(720度)"; スタイル不透明度 = 0.1; addEnd(this,end); // 小さな画像がクリックされるたびにイベント リスナーを追加します。イベントが終了すると、終了関数が実行されます。 } } //イベントが終了したら、終了関数を実行し、デフォルト値を復元し、イベント リスナーを削除します。 関数終了(){ this.style.transition="0.1秒"; this.style.transform="スケール(1) 回転(720度)"; スタイル不透明度 = 1; 終了を削除します(this,end); } //ホーム アイコンをクリックすると、最初は時計回りに回転し、2 回目は反時計回りに回転します。 oHome.onclick=関数(){ if(オンオフ) { this.style.transform="回転(360度)"; //各画像の左と上の値を設定します。 for(var i=0;i<imgLen;i++){ // 開始角度は 30 度です。 var oLt=getLeftTop(iR,120/(imgLen-1)*i+30); aImg[i].style.left=oLt.l+"px"; aImg[i].style.top=oLt.t+"px"; // 各画像には 100 ミリ秒の遅延があります。 aImg[i].style.transition="0.5s イーズインアウト "+100*i+"ms"; aImg[i].style.transform="スケール(1) 回転(720度)"; } } それ以外 { this.style.transform="回転(0度)"; for(var i=0;i<imgLen;i++){ aImg[i].style.left=0+"px"; aImg[i].style.top=0+"px"; // 画像は逆の順序で取得されます。各画像には 100 ミリ秒の遅延があります。 aImg[i].style.transition="0.5s イーズインアウト "+100*(imgLen-i-1)+"ms"; aImg[i].style.transform="スケール(1) 回転(0度)"; } } onOff=!onOff; } } //img画像の左と上の値を取得します。ピタゴラスの定理では、内角と斜辺が与えられれば、対辺の長さは sin(ラジアン)*斜辺で求められます。辺の長さ: cos(ラジアン)*斜辺。ラジアン = 度 / 180 * 円周率。 関数 getLeftTop(iR,iDeg){ var ileft=Math.round(Math.sin(iDeg/180*Math.PI)*iR); var iTop=Math.round(Math.cos(iDeg/180*Math.PI)*iR); // 2 つの値を返す場合は、オブジェクト メソッドを使用します。 戻る { "l":i左, "t":iトップ } } //終了関数を追加し、終了関数を削除します。遷移イベントをリッスンします。 関数addEnd(obj,fn){ obj.addEventListener("transitionend",fn,false); } 関数removeEnd(obj,fn){ obj.removeEventListener("transitionend",fn,false); } 完全なページコード <!doctypehtml> <html> <ヘッド> <メタ文字セット="utf-8"> <title>円形ナビゲーション</title> <スタイル> 体 { マージン: 0; } 体{ 背景色:#eee;} #ステージ{ 幅: 300ピクセル; 高さ: 300px; 位置: 相対的; 上: 150px; マージン: 0 自動; } #ナビ{ 位置: 絶対; 幅: 120ピクセル; 高さ: 107px; 左: 50%; 左マージン: -60px; 上位: 50%; 上マージン: -53px; } #ナビ画像{ 幅: 100%; 位置: 絶対; 左: 0; 上: 0; カーソル: ポインタ; } #家 { 位置: 絶対; 幅: 150ピクセル; 高さ: 134px; 左: 0; 上: 0; 右: 0; 下部: 0; マージン: 自動; カーソル: ポインタ; 遷移: 0.5 秒のイーズインアウト; } #ホーム画像{ 幅: 100%; } </スタイル> <スクリプト> window.onload = 関数(){ var oHome = document.getElementById("home"); var oNav = document.getElementById("nav"); var aImg=oNav.getElementsByTagName("img"); var imgLen=aImg.length; var onOff = true; var iR = -260; //マウスが各小さなアイコンをクリックすると for(var i=0;i<imgLen;i++){ aImg[i].onclick=関数(){ this.style.transition="0.2秒"; this.style.transform="スケール(1.2) 回転(720度)"; スタイル不透明度 = 0.1; addEnd(this,end); // 小さな画像がクリックされるたびにイベント リスナーを追加します。イベントが終了すると、終了関数が実行されます。 } } //イベントが終了したら、終了関数を実行し、デフォルト値を復元し、イベント リスナーを削除します。 関数終了(){ this.style.transition="0.1秒"; this.style.transform="スケール(1) 回転(720度)"; スタイル不透明度 = 1; 終了を削除します(this,end); } //ホーム アイコンをクリックすると、最初は時計回りに回転し、2 回目は反時計回りに回転します。 oHome.onclick=関数(){ if(オンオフ) { this.style.transform="回転(360度)"; //各画像の左と上の値を設定します。 for(var i=0;i<imgLen;i++){ // 開始角度は 30 度です。 var oLt=getLeftTop(iR,120/(imgLen-1)*i+30); aImg[i].style.left=oLt.l+"px"; aImg[i].style.top=oLt.t+"px"; // 各画像には 100 ミリ秒の遅延があります。 aImg[i].style.transition="0.5s イーズインアウト "+100*i+"ms"; aImg[i].style.transform="スケール(1) 回転(720度)"; } } それ以外 { this.style.transform="回転(0度)"; for(var i=0;i<imgLen;i++){ aImg[i].style.left=0+"px"; aImg[i].style.top=0+"px"; // 画像は逆の順序で取得されます。各画像には 100 ミリ秒の遅延があります。 aImg[i].style.transition="0.5s イーズインアウト "+100*(imgLen-i-1)+"ms"; aImg[i].style.transform="スケール(1) 回転(0度)"; } } onOff=!onOff; } } //img画像の左と上の値を取得します。ピタゴラスの定理では、内角と斜辺が与えられれば、対辺の長さは sin(ラジアン)*斜辺で求められます。辺の長さ: cos(ラジアン)*斜辺。ラジアン = 度 / 180 * 円周率。 関数 getLeftTop(iR,iDeg){ var ileft=Math.round(Math.sin(iDeg/180*Math.PI)*iR); var iTop=Math.round(Math.cos(iDeg/180*Math.PI)*iR); // 2 つの値を返す場合は、オブジェクト メソッドを使用します。 戻る { "l":i左, "t":iトップ } } //終了関数を追加し、終了関数を削除します。遷移イベントをリッスンします。 関数addEnd(obj,fn){ obj.addEventListener("transitionend",fn,false); } 関数removeEnd(obj,fn){ obj.removeEventListener("transitionend",fn,false); } </スクリプト> </head> <本文> <div id="ステージ"> <div id="nav"> <img src="images/1.png"> <img src="images/2.png"> <img src="images/3.png"> <img src="images/4.png"> <img src="images/5.png"> </div> <div id="home"> <img src="images/home.png"> </div> </div> </本文> </html> 上記は、CSS3 が変換変形とイベントを組み合わせて扇形ナビゲーションを完成させる方法についての詳細です。CSS3 扇形ナビゲーションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 |
<<: Layui は複数条件クエリのサンプルコードを実装します
目次NFS サービスの概要NFS とは何ですか? NFS マウントの原則NFS サーバーはデータ転送...
目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...
1. CSSナビゲーションバー(1)ナビゲーションバーの機能ナビゲーション バーを使いこなすことは、...
MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...
1. 従来のLRUリンクリストについて簡単に説明するLRU:最も最近使われなかったものLRU リンク...
上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用...
目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...
1. システム環境yum updateアップグレード後のシステムバージョンは[root@yl-web...
目次umask umaskの使用法原理1. umask値2. ファイルディレクトリの最大権限3. 従...
目次1. 問題の背景2. 仮想マシン ネットワーク カードの接続方法は何ですか? 2.1 NAT 2...
この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...
カーネル 2.6 の時代には、アクセス制御セキュリティ ポリシーのメカニズムを提供するために新しいセ...
以前のブログのログインページを作成していたときに、この問題に遭遇しました。突然、透明な背景画像と不透...
1. 準備ミドルウェア: Tomcat、Redis、Nginx Jar パッケージ: commons...
ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...