ホバードロップダウンメニューを実装するためのネイティブJS

ホバードロップダウンメニューを実装するためのネイティブJS

JS はホバー ドロップダウン メニューを実装します。これは、フロントエンドの面接で遭遇するシナリオの質問です。原則は、メニュー スタイルの display 属性の属性値を none=>block から変更することです。具体的な実装を以下に示します。次の部分に注目してください。

  • 各セクションにフロートを設定します。
  • セクションの親ボックスの継承可能なプロパティ、フォント関連のプロパティを設定します。
  • ホバーを設定する場合、セクションの親ボックスにホバーすると、子要素のヘッドの背景が変わります。`.head:hover` と記述して、ヘッドクラスに直接ホバーすることもできます。ただし、マウスを li の上に移動すると、ヘッドが元の外観に戻ってしまうという問題が発生するため、セクションにホバーを配置することをお勧めします。
  • ただし、メニュー自体は表示されないため、親ボックス セクションにマウスを移動することによってのみメニューを表示できます (ヘッドは親ボックスではないため、ヘッドにマウスを移動することはできません)。
<!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>
    <スタイル>
 
        /* 必要に応じて、ワイルドカード、a、li の既存のスタイルを削除します*/
        
        * {
            マージン: 0;
            パディング: 0;
        }
        
        {
            テキスト装飾: なし;
            色: 黒;
        }
 
        /* ここでの li は幅を指定せずに既存のスタイルを削除するだけです */
        
        li {
            リストスタイル: なし;
        }
 
        /* 各セクションをアイテムとしてフレックスレイアウトする */
        
        。容器 {
            マージン: 50px 自動;
            幅: 40%;
            高さ: 40px;
            ディスプレイ: フレックス;
            /* 最初にスペース均等に表示*/
            コンテンツの均等配置: スペースを均等に;
            背景色: スカイブルー;
        }
 
        /* フローティングは各セクションでのみ実行する必要があります */
        /* セクションの「フォント サイズ、テキスト配置、行の高さ」を設定します => 継承可能なプロパティ*/
        
        。セクション {
            フロート: 左;
            フォントサイズ: 16px;
            行の高さ: 40px;
            テキスト配置: 中央;
        }
 
        /*ここではホバー時のヘッドのスタイルを指定します*/
        /* .head:hover と書くこともできます */
 
        .section:hover .head {
            色: 白;
            背景色: オレンジ;
        }
 
        /* 最初はメニュー全体が非表示で、スタイルが設定されています */
        
        .メニュー{
            表示: なし;
            背景色: 透明;
        }
 
        /* マウスオーバーするとメニューが表示されます。親ボックスにのみマウスオーバーできます*/
        
        .section:hover .menu {
            表示: ブロック;
        }
 
        /* ホバー時の li のスタイルを指定します*/
        
        .menu li:hover {
            背景色: オレンジ;
        }
    </スタイル>
</head>
 
<本文>
    <div class="コンテナ">
        <div class="section">
            <a href="#" class="head">論文を書く</a>
            <ul class="メニュー">
                <li>情報を検索する</li>
                <li>メモを取る</li>
                <li>再現する</li>
            </ul>
        </div>
        <div class="section">
            <a href="#" class="head">フロントエンドを学ぶ</a>
            <ul class="メニュー">
                <li>HTML</li>
                <li>CSS</li>
                <li>JavaScript</li>
                <li>リートコード</li>
            </ul>
        </div>
        <div class="section">
            <a href="#" class="head">リトルデイズ</a>
            <ul class="メニュー">
                <li>食べる</li>
                <li>睡眠</li>
                <li>豆をプレイ</li>
            </ul>
        </div>
    </div>
</本文>
 
</html>

最終的な効果は以下のようになります。

ヒント: クリックしてドロップダウン メニューを実装するという、似たような質問がもう 1 つあります。ここでの違いは、クリック イベントを追加し、それを JS で記述して、後で補足する必要があることです。 3 つのセクションを ul li の形式で記述することもできます。これにより、ネストされた 2 層の ul も実現でき、セマンティクスが向上し、読者の参照用に残されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript ドロップダウン メニュー実装コード
  • css+js ドロップダウンメニュー
  • jsは選択ドロップダウンメニューのデフォルトの選択項目を動的に設定します
  • 3 段階のドロップダウン メニューの JS 実装コード
  • 日付ドロップダウンメニューの js 実装コード
  • JS リアルマルチレベルリンクドロップダウンメニュークラス、省、市、地区のリンクメニューを簡単に実現します。
  • Js クリック ポップアップ ドロップダウン メニュー効果の例
  • Javascript は Sina ゲーム チャンネルを模倣し、マウスをホバーするとサブメニュー効果を表示します
  • JavaScript マウスホバーイベントの使用状況分析
  • マウスをホバーしたときに別の要素を表示する CSS または JS

<<:  UbuntuのVimにNERDTreeプラグインをインストールする詳細な手順

>>:  MySQL 8.0.20 圧縮版のインストールチュートリアル(画像とテキスト付き)

推薦する

JavaScript プロトタイプのデータ共有とメソッド共有の実装を調べる

データ共有プロトタイプにはどのようなデータを書き込む必要がありますか?共有する必要があるデータはプロ...

VueのTodoListケースの詳しい説明

<テンプレート> <div id="ルート"> <...

bashの初期化メカニズムの詳細な説明

Bash 初期化ファイル対話型ログインシェル次の場合にはログイン シェルを取得できます。ローカル端末...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

[LeetCode] 196.重複したメールを削除するSQL クエリを記述して、Person とい...

XHTML 入門チュートリアル: フレーム タグの使用

<br />フレーム構造により、ブラウザの 1 ページに複数の Web ページを同時に表...

ElementUI コンポーネント el-dropdown (落とし穴)

選択して変更: クリックすると現在の値が表示され、ページ UI が表示され、CSS スタイルが変更さ...

CSS3を使用してプログレスバー効果を実現し、動的にパーセンテージを追加する

プロジェクト中、プログレスバーを実装するために js の requestAnimationFrame...

MySQL 5.7 でデータベースのデータ保存場所を変更する方法

MySQL データベースに保存されるデータが徐々に増加すると、元のストレージ領域がいっぱいになり、M...

IE6では画像要素imgに余分な空白スペースがある

ページの DIV+CSS レイアウトを行う際、IE6 で画像要素 img の下に余分なスペースができ...

WeChatアプレットが9マスグリッド効果を実現

この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...

MySQL コマンドラインでよく使われる 18 個のコマンド

日常的なウェブサイトの保守と管理では、多くの SQL ステートメントが使用されます。熟練して使用する...

MySQLで最新のトランザクションIDを照会する方法

前に書いた内容: ビジネス ロジックの判断を行うために、最新のトランザクション ID を表示する必要...

Dockerで複数のSpringbootを実行するための詳細なチュートリアル

Dockerは複数のSpringbootを実行する1番目: ポートマッピング 2番目: メモリサイズ...