成果を達成する html <div class="コンテナ"> <h1 class="title">ドロップダウン メニュー</h1> <ul> <li class="dropdown"> <a href="#" data-toggle="dropdown">最初のメニュー <i class="icon-arrow"></i></a> <ul class="ドロップダウンメニュー"> <li><a href="#">ホーム</a></li> <li><a href="#">当社について</a></li> <li><a href="#">サービス</a></li> <li><a href="#">お問い合わせ</a></li> </ul> </li> <li class="dropdown"> <a href="#" data-toggle="dropdown">2 番目のメニュー <i class="icon-arrow"></i></a> <ul class="ドロップダウンメニュー"> <li><a href="#">ホーム</a></li> <li><a href="#">当社について</a></li> <li><a href="#">サービス</a></li> <li><a href="#">お問い合わせ</a></li> </ul> </li> <li class="dropdown"> <a href="#" data-toggle="dropdown">3 番目のメニュー <i class="icon-arrow"></i></a> <ul class="ドロップダウンメニュー"> <li><a href="#">ホーム</a></li> <li><a href="#">当社について</a></li> <li><a href="#">サービス</a></li> <li><a href="#">お問い合わせ</a></li> </ul> </li> </ul> <p class="text-center"> CSS3 のみで同じメニューをご覧ください: <a href="https://codepen.io/pedronauck/pen/jaluz" target="_blank">https://codepen.io/pedronauck/pen/jaluz</a> </p> </div> CS @import url("https://fonts.googleapis.com/css?family=Lato:300,400,700,900"); url をインポートします(https://fonts.googleapis.com/css?family=Pacifico); 体 { フォントファミリ: "Lato"、Helvetica、Arial; フォントサイズ: 16px; } .テキストセンター{ テキスト配置: 中央; } *、*:前、*:後 { -webkit-border-sizing: ボーダーボックス; -moz-border-sizing: 境界線ボックス; 境界線のサイズ: 境界線ボックス; } 。容器 { 幅: 350ピクセル; マージン: 50px 自動; } .コンテナ > ul { リストスタイル: なし; パディング: 0; マージン: 0 0 20px 0; } 。タイトル { フォントファミリー: 'Pacifico'; フォントの太さ: normal; フォントサイズ: 40px; テキスト配置: 中央; 行の高さ: 1.4; 色: #2980B9; } .ドロップダウン{ テキスト装飾: なし; } .dropdown [データトグル="ドロップダウン"] { 位置: 相対的; 表示: ブロック; 色: 白; 背景: #2980B9; -moz-box-shadow: 0 1px 0 #409ad5 インセット、 0 -1px 0 #20638f インセット; -webkit-box-shadow: 0 1px 0 #409ad5 インセット、0 -1px 0 #20638f インセット; ボックスシャドウ: 0 1px 0 #409ad5 インセット、0 -1px 0 #20638f インセット; テキストシャドウ: 0 -1px 0 rgba(0, 0, 0, 0.3); パディング: 10px; } .dropdown [データトグル="dropdown"]:hover { 背景: #2c89c6; } .ドロップダウン .アイコン矢印 { 位置: 絶対; 表示: ブロック; フォントサイズ: 0.7em; 色: #fff; 上: 14px; 右: 10px; } .dropdown .icon-arrow.open { -moz-transform:回転(-180度); -ms-transform:回転(-180度); -webkit-transform: 回転(-180度); 変換: 回転(-180度); -moz-transition: -moz-transform 0.6 秒; -o-transition: -o-transform 0.6秒; -webkit-transition: -webkit-transform 0.6 秒; 遷移: 変換 0.6 秒; } .dropdown .icon-arrow.close { -moz-transform:回転(0度); -ms-transform:回転(0度); -webkit-transform: 回転(0度); 変換: 回転(0度); -moz-transition: -moz-transform 0.6 秒; -o-transition: -o-transform 0.6秒; -webkit-transition: -webkit-transform 0.6 秒; 遷移: 変換 0.6 秒; } .dropdown .icon-arrow:before { 内容: '\25BC'; } .ドロップダウン .ドロップダウンメニュー { 最大高さ: 0; オーバーフロー: 非表示; リストスタイル: なし; パディング: 0; マージン: 0; } .dropdown .dropdown-menu li { パディング: 0; } .dropdown .dropdown-menu li a { 表示: ブロック; 色: #6f6f6f; 背景: #EEE; -moz-box-shadow: 0 1px 0 白のインセット、0 -1px 0 #d5d5d5 インセット; -webkit-box-shadow: 0 1px 0 白のインセット、0 -1px 0 #d5d5d5 インセット; box-shadow: 0 1px 0 白のインセット、0 -1px 0 #d5d5d5 インセット; テキストシャドウ: 0 -1px 0 rgba(255, 255, 255, 0.3); パディング: 10px 10px; } .dropdown .dropdown-menu li a:hover { 背景: #f6f6f6; } .dropdown .show、.dropdown .hide { -moz-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; -webkit-transform-origin: 50% 0%; 変換原点: 50% 0%; } .ドロップダウン .表示 { 表示: ブロック; 最大高さ: 9999px; -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); アニメーション: showAnimation 0.5s easy-in-out; -moz-animation: showAnimation 0.5s イーズインアウト; -webkit-animation: showAnimation 0.5s イーズインアウト; -moz-transition: 最大高さ 1s イーズインアウト; -o-transition: 最大高さ 1s イーズインアウト; -webkit-transition: 最大高さ 1s、イーズインアウト; 遷移: 最大高さ 1s、イーズインアウト; } .ドロップダウン .非表示 { 最大高さ: 0; -moz-transform: スケールY(0); -ms-transform: スケールY(0); -webkit-transform: スケールY(0); 変換: スケールY(0); アニメーション: hideAnimation 0.4s イーズアウト; -moz-animation: hideAnimation 0.4s イーズアウト; -webkit-animation: hideAnimation 0.4s イーズアウト; -moz-transition: 最大高さ 0.6 秒のイーズアウト; -o-transition: 最大高さ 0.6 秒のイーズアウト; -webkit-transition: 最大高さ 0.6 秒のイーズアウト; 遷移: 最大高さ 0.6 秒のイーズアウト; } @keyframes アニメーションを表示 { 0% { -moz-transform: スケールY(0.1); -ms-transform: スケールY(0.1); -webkit-transform: スケールY(0.1); 変換: スケールY(0.1); } 40% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 100% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } } @-moz-keyframes アニメーションを表示 { 0% { -moz-transform: スケールY(0.1); -ms-transform: スケールY(0.1); -webkit-transform: スケールY(0.1); 変換: スケールY(0.1); } 40% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 100% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } } @-webkit-keyframes アニメーションを表示 { 0% { -moz-transform: スケールY(0.1); -ms-transform: スケールY(0.1); -webkit-transform: スケールY(0.1); 変換: スケールY(0.1); } 40% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.04); -ms-transform: スケールY(1.04); -webkit-transform: スケールY(1.04); 変換: スケールY(1.04); } 100% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } } @keyframes アニメーションを非表示 { 0% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(0); -ms-transform: スケールY(0); -webkit-transform: スケールY(0); 変換: スケールY(0); } } @-moz-keyframes アニメーションを非表示 { 0% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(0); -ms-transform: スケールY(0); -webkit-transform: スケールY(0); 変換: スケールY(0); } } @-webkit-keyframes アニメーションを非表示 { 0% { -moz-transform: スケールY(1); -ms-transform: スケールY(1); -webkit-transform: スケールY(1); 変換: scaleY(1); } 60% { -moz-transform: スケールY(0.98); -ms-transform: スケールY(0.98); -webkit-transform: スケールY(0.98); 変換: スケールY(0.98); } 80% { -moz-transform: スケールY(1.02); -ms-transform: スケールY(1.02); -webkit-transform: スケールY(1.02); 変換: スケールY(1.02); } 100% { -moz-transform: スケールY(0); -ms-transform: スケールY(0); -webkit-transform: スケールY(0); 変換: スケールY(0); } } js // ドロップダウンメニュー var ドロップダウン = document.querySelectorAll('.dropdown'); var dropdownArray = Array.prototype.slice.call(dropdown,0); dropdownArray.forEach(関数(el){ var ボタン = el.querySelector('a[data-toggle="dropdown"]'), メニュー = el.querySelector('.dropdown-menu'), 矢印 = button.querySelector('i.icon-arrow'); button.onclick = 関数(イベント) { if(!menu.hasClass('show')) { menu.classList.add('表示'); menu.classList.remove('非表示'); 矢印.classList.add('開く'); 矢印.classList.remove('閉じる'); イベントをデフォルトにしない(); } それ以外 { menu.classList.remove('表示'); menu.classList.add('非表示'); arrow.classList.remove('open'); 矢印.classList.add('閉じる'); イベントをデフォルトにしない(); } }; }) Element.prototype.hasClass = function(className) { this.className を返し、新しい RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className); }; 上記は、HTML+CSS3+JS で実装されたドロップダウン メニューの詳細な内容です。HTML+CSS3+JS ドロップダウン メニューの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 |
>>: CSS スタイルのリセットとクリア (異なるブラウザで同じ効果を表示するため)
before/after 疑似クラスは、要素内に 2 つの追加タグを挿入するのと同じです。最も適した...
目次序文Dockerfile の紹介Dockerfileはイメージプロセスを構築するDockerfi...
結果:実装コードhtml <div class='iphone'> &l...
ストレージエンジンデータベース ストレージ エンジンとは何ですか?データベース エンジンは、データベ...
docker リポジトリ自体は非常に遅いですが、中国の Alibaba Cloud ミラー リポジト...
Firefox の下位バージョンでは中国語の文字を入力できず、上位バージョンでは文字化けした文字が表...
この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...
効果は以下のとおりです。ページジャンプボタンをクリックした後 対応する値はページ b で取得できます...
目次ステップ1: インストールステップ2: 引用ステップ3: 使用Webプロジェクトでは、データを読...
ウェブサイトを作成している際に、flv や MP4 形式などのビデオ ファイルはローカルでは正常に再...
目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...
まずケースを見てみましょう。vue+swiper を使用して実装します。スライドの高さが異なる場合、...
目次1. beforeCreate & created 2. マウント前とマウント済み3. ...
既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...
1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...