この記事では、セカンダリメニュー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。 この実装の効果図は次のとおりです。 このセカンダリメニューの効果は次のとおりです。 ボックスをクリックすると、開いているボックスの内容が引き込まれ、現在クリックされているボックスの内容が展開されます。 では、この効果はどのようにして達成されるのでしょうか? 私たちは一歩ずつ 1. まず、フレーム全体、つまりすべてのボックスが展開された外観を表示する必要があります。これは、表示/非表示が 2. 次に、js 部分の作成を開始します。ボックスがクリックされると、閉じた状態から展開された状態に変わることを確認します。このボックスは span です。span の親 div のすべてのコンテンツを表示する場合は、まず 3. 次に、ボックスを展開するために span をクリックしたときに、展開されたボックスを折りたたむ必要があります。このとき、前回クリックされたボックスを記録するための変数now が必要です。初期値を null に設定します。now が現在クリックされているスパンと等しくない場合は、now の親ボックスを取得し、その高さをスパンの高さに設定してから、現在クリックされているスパンを展開します (展開方法については、2 番目のポイントで既に説明しました)。now が現在クリックされているスパンと等しい場合は、その親ボックスの高さを取得します。それがスパンの高さと等しい場合は、その高さを 4.タイマーを設定し、親ボックスの高さを増減する準備ができたら呼び出します。親ボックスの高さがスパンの高さに達するか、 コードは次のとおりです。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>ドキュメント</title> <スタイル> * { マージン: 0; パディング: 0; } 。容器 { 幅: 300ピクセル; 高さ: 700ピクセル; マージン: 100px 自動; } .コンテナdiv { 高さ: 43px; オーバーフロー: 非表示; } .コンテナ div span { 幅: 150ピクセル; 高さ: 40px; 行の高さ: 40px; 境界線の半径: 15px; 表示: ブロック; テキスト配置: 中央; 背景色: rgba(104, 250, 201, 0.849); カーソル: ポインタ; } { 幅: 150ピクセル; 高さ: 40px; 行の高さ: 40px; テキスト装飾: なし; 表示: ブロック; テキスト配置: 中央; } </スタイル> </head> <本文> <div class="コンテナ"> <div id=""> <span id="one">月曜日</span> 視覚化 視覚化 </div> <div id=""> 火曜日 <a href="">アルゴリズム設計</a> <a href="">グラフィックス</a> <a href="">デザイングループコースデザイン</a> オペレーティング·システム </div> <div id=""> <span id="three">木曜日</span> <a href="">状況と方針</a> オペレーティング·システム </div> <div id=""> <span id="four">金曜日</span> <a href="">アルゴリズム設計</a> </div> </div> <スクリプト> menu = document.getElementsByTagName("span"); now = null とします。 (i = 0 とします; i < menu.length; i++) { menu[i].onclick = 関数 () { par = menu[i].parentNodeとします。 もし(今 === i){ (par.style.height === "43px"の場合){ オープン(パー); } それ以外 { 閉じる(par); } } それ以外 { if (now !== null) { メニュー[now].parentNode を閉じます。 } オープン(パー); 今 = 私; } } } 関数 open(par) { time = setInterval(() => { を設定します。 num = par.offsetHeightとします。 (数値 >= par.scrollHeight)の場合{ クリア間隔(tem); } par.style.height = num + 1 + "px"; }, 7); } 関数close(par){ time = setInterval(() => { を設定します。 num = par.offsetHeightとします。 (数値<= 43)の場合{ クリア間隔(tem); 戻る; } par.style.height = num - 1 + "px"; }, 7); } </スクリプト> </本文> </html> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Dockerfileを使用してDockerイメージを構築する手順
シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...
目次仮想DOM仮想DOMとは何か仮想DOMの役割Vue の仮想 DOM vノードvNodeとはvNo...
この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...
mysql コマンドを入力します: mysql -u+(ユーザー名) -p+(パスワード) mysq...
1. はじめに場合によっては、Web プラットフォームがオンラインになった後、サービス インターフェ...
目次SVG による画像キャプチャCSS部分エフェクト画像表示ソースコードアドレスこれまで見てきたもの...
1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...
目次1. 動詞-if 2. <template> で v-if を使用する3. キーを使...
目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...
コメントとメッセージはもともと、ウェブマスターがコミュニティと読者層を構築するための優れた手段でした...
目次1. カスタム指示とは何ですか? 2. 指示をカスタマイズする方法フック機能3. 応用シナリオ入...
この記事では、ディスクを追加または拡張して、Vmare で有効にする方法について説明します。シナリオ...
Vue ユーザーとして、React を拡張する時が来ました。antd の導入、less と rout...
目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...
序文MySQL インデックスで最も重要なデータ構造は B+ ツリーなので、まずは B+ ツリーの原理...