この記事では、純粋な Javascript を使用してシンプルな JS プラグインを開発する方法を紹介します。このプラグインを使用すると、マウスをナビゲーション上に置くと、下のスライダーが現在のメニューから選択したメニューに自動的にスライドするようにすることができます。 このプロジェクトのソースコードは GitHub でホストされています。星をクリックしてください: https://github.com/dosboy0716/sliding-nav 1. はじめに効果は以下のとおりです。 2. 使用方法このプラグインをプロジェクトで使用するには、次の 3 つの手順のみが必要です。 1. </body>タグの終わりの前に、sliding-nav.jsファイルを参照します。 2. スライダーが必要なメニューコンテナにクラス名sliding-navを追加し、現在の項目はクラス名activeを使用します。 3. 属性を使用して外観を決定します: sn-color="color" sn-radius="roundness" sn-height="height" <script src="/path/to/sliding-nav.js"></script> <ul class="nav スライド ナビ" sn-color="#F00" sn-radius="0px" sn-height="3px"> <li class="active">メニュー項目 1</li> <li>メニュー項目 2</li> <li>メニュー項目 3</li> <ul> 3. 開発プロセス1. モデル例ナビゲーションメニューは、一般的に上図のような階層構造になっています。外側のコンテナには <ul> タグ、メニュー項目には <li> タグを使用します。小さな黄色の横棒を表示したい場合は、その配置が重要です。 分析の結果、小さな水平バーは視覚的には UL 内に配置されていますが、元のナビゲーション スタイルを破壊しないようにするには、小さな黄色のバーは絶対配置を使用し、その初期位置は ul タグと同じにする必要があります。 したがって、上の小さな灰色の点に示すように、小さな水平バーを <ul> タグの前に挿入します。これが小さな水平バーの初期位置、つまり (left=0、top=0) です。 では、バーをメニュー項目の真下に表示するにはどうすればよいでしょうか?
上記の機能を実装するには、次のコードを使用できます。 関数init() { var navs = document.getElementsByClassName('sliding-nav'); (var i = 0; i < navs.length; i++) の場合 { //現在のナビゲーションと垂直に揃える DIV を作成します var indi = document.createElement("div"); indi.id = "slna-indicator" indi.style.borderRadius = navs[i].getAttribute("sn-radius") || "0px" indi.style.height = navs[i].getAttribute("sn-height") || "3px" indi.style.backgroundColor = navs[i].getAttribute("sn-color") || "#F00" indi.style.position = "絶対" indi.style.transition = "0.5秒" //現在のサブメニュー項目を検索します。クラス名が active または selected の場合、それが現在の項目とみなされます。そうでない場合は、最初の項目を使用します var selected = navs[i].getElementsByClassName('active') 選択された長さが 0 の場合 選択された = navs[i].getElementsByClassName('選択された') } 選択された長さが 0 の場合 選択された = navs[i].children } 選択された長さが 0 の場合 throw Error('申し訳ありませんが、ナビゲーション バーには項目がまったくありません。'); } 選択された = 選択された[0]; indi.style.width = selected.offsetWidth + "px"; indi.style.top = selected.offsetHeight + "px"; indi.style.left = selected.offsetLeft + "px"; navs[i].parentElement.insertBefore(indi, navs[i]); // 未完成。イベントをバインドするには以下のコードを挿入します} } 上記のコードは、次の初期化関数 init() を構築します。 クラス名が slide-nav であるすべてのタグを検索し、上記の方法に従って、前に div タグを挿入して「インジケーター バー」として機能させ、「アクティブ」メニュー項目を検索します。検索後、このメニュー項目のさまざまなプロパティを使用して「インジケーター バー」を配置します。 2. イベントとアニメーション「インジケーター バー」div タグの transition プロパティを 0.5 秒に設定しているので、次のようにイベント内で div を直接設定するだけです。
したがって、上記のコードの最後に次のコードを挿入して、イベントとアニメーションを実装できます。 (var j = 0; j < navs[i].children.length; j++) { ホバー(navs[i].children[j], 関数(e, elem) { indi.style.width = elem.offsetWidth + "px"; indi.style.left = elem.offsetLeft + "px"; }); //ナビゲーションから移動するときにデフォルト値を復元しますhover(navs[i], null, function(e, elem) { indi.style.width = selected.offsetWidth + "px"; indi.style.left = selected.offsetLeft + "px"; }); } このコードでは、ホバー イベントの実装に似たカスタム関数 hover を使用しています。JS には、ネイティブでは mouseover イベントと mouseout イベントしかありません。 この機能は、マウスインおよびマウスアウトイベントを DOM 要素にバインドします。具体的な実装プロセスについては、作者のオリジナルコードを参照してください。 4. すべてのオリジナルコードこの記事で実装したすべてのオリジナルコードは次のとおりです。読者の皆様がより最適化された提案をして、一緒により美しいフロントエンドエクスペリエンスを作り上げられることを願っています。 (var j = 0; j < navs[i].children.length; j++) { ホバー(navs[i].children[j], 関数(e, elem) { indi.style.width = elem.offsetWidth + "px"; indi.style.left = elem.offsetLeft + "px"; }); //ナビゲーションから移動するときにデフォルト値を復元しますhover(navs[i], null, function(e, elem) { indi.style.width = selected.offsetWidth + "px"; indi.style.left = selected.offsetLeft + "px"; }); } これで、Javascript を使用してスライダー効果のあるスライドナビゲーション プラグインを開発する方法についての記事は終了です。スライドナビゲーション バー プラグインの js 開発に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Linux 構成で MySQL データベースへのリモート接続が失敗する問題の解決方法
トランザクションとは何ですか?トランザクションは、データベース管理システムの実行プロセスにおける論理...
デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...
目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...
Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...
偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...
目次序文1. リスナーの基本的な使い方2. リスナー形式3. ページに入るとすぐに監視とディープモニ...
以下の質問はすべて InnoDB ストレージ エンジンに基づいています。 1. 最も大きな ID を...
この記事の例では、簡単な計算機を実装するための小さなプログラムの具体的なコードを参考までに共有してい...
最近、ポーターを学んでいます。こんなに強力なものがあったなんて、今まで知らなかった気がします。クラス...
ネイティブJSによって開始されたネットワークリクエストは、クエリ文字列の形でサーバーに送信されるため...
序文スタンドアロン ロックであっても分散ロックであっても、共有データに基づいて現在の操作の動作を判断...
Windows10にmysqlをインストールする1. 公式サイトからMySQLをダウンロードするウェ...
MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...
1. コマンドの紹介passwd コマンドは、ユーザー パスワード、アカウント ロック、パスワードの...
絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...