スタイリッシュなドロップダウンリストを作成します。 HTML のドロップダウン リストから選択する ホバー CSS のドロップダウン リスト
今日は CSS でリストを作成するための小さな「レシピ」を紹介したいと思います。 JQuery も CSS3 もありません。古き良きクロスブラウザー CSS だけです。 この例は非常に単純なので、経験豊富な同志は興味がないかもしれません。 ソーシャルボタンを備えたドロップダウンリストを実装します。
それでは、長々と話すのはやめて、本題に入りましょう
HTML
この投稿をシェアする
- フェイスブック
- ツイッター
- グーグルプラス
- 連絡中
- RSS
コードが大きくならないように、スタイルを含めるなどの一般的な点は意図的に省略しています。 ページの下部にソースへのリンクを記載します。すべてがそこにあります。
HTML にあるのは、通常のリストと珍しいヘッダーです。 珍しいのは、イベントを追跡できるハイパーリンクで作られていることです。 :ホバー、つまり指導です。 タイトルの上にカーソルを置くと、ドロップダウン リストが機能します。
CSS
まず、ドロップダウン リストの基本的なスタイルを見てみましょう。 わかりやすくするために、コードの各行にコメントを付けてみました。
/*パディングをリセット*/ .droplink ul,.droplink h3,.droplink h3 a(padding:0;margin:0 ) /*基本ラッパー*/ .droplink ( width:200px;position:absolute; margin:10px 0 0 25px ) /*ホバーブロックのスタイル*/ .droplink:hover( height:auto; background-color:#3E403D; border:solid 1px #3A3C39 ) /*通常状態のタイトル*/ .droplink h3 a( text-align:center ; width:100%; display:block; padding:12px 0px; color:#999; text-decoration:none ) .droplink h3 a img(border:none) /*ホバータイトルのスタイル*/ .droplink:hover h3 a (色:#FFF; フォントの太さ:太字; 位置:絶対 )
ここでは特別なことは何もありません。ブロックのサイズとスタイル、ヘッダーのスタイル、および両方の要素について、カーソルを置いたときのスタイルを指定しました。 どうぞ:
/*ホバーせずにリストを非表示にする*/ .droplink ul( list-style:none; display:none ) /*ホバーでリストを表示*/ .droplink:hover ul( display:block; margin-top:40px ) .droplink li(表示:ブロック)
このコードはさらに興味深いもので、どのように動作するかを示しています。 ドロップダウンリストカーソルを乗せたとき。 通常の状態では費用がかかります ディスプレイ:なし、つまり表示されません。 ホバーするとブロックとして表示されます。 それがすべての秘密です。 次に、リスト要素を少し装飾してアイコンを挿入しましょう。
/*リスト項目のスタイル*/ .droplink li a(padding:5px 12px 4px 34px; margin:1px; background-color:#484A47; display:block; color:#FFF; text-decoration:none; font-size:12px ;background-repeat:no-repeat;background-position: 10px 3px ) /*要素のホバー スタイル*/ .droplink li a:hover(background-color:#999 ) /*アイコン*/ .facebook a (background-image : url("icons/facebook.png")) .twitter a (background-image:url("icons/twitter.png")) .vk a (background-image:url("icons/vk.png")) 。 rss a (background-image:url("icons/rss.png")) .gplus a (background-image:url("icons/gplus.png"))
実はそれだけです。 ドロップダウン リストが完成し、非常に見栄えが良くなります。 自由裁量で要素をデザインしたり、丸い角やその他の付加機能を追加したりできます。
ホバー時にリストをその下のテキストに「重ねる」場合は、横に目を向けてください Zインデックス.
不明な点やうまくいかない場合は、コメント欄で質問するか、「メッセージを送信」ボタンを使用してください。 —>
水平ドロップダウンメニューサイトのナビゲーション構造を整理するために使用されます。 最適なネスト レベルの数は 1 つまたは 2 つです。 添付ファイルのレベルが少ないほど、サイト訪問者が必要な情報を見つけやすくなります。 通常の水平メニューの作成方法については、 で詳しく説明されています。
水平ドロップダウンメニューの作り方
1. 1 つのネストレベルを持つドロップダウン メニューの HTML マークアップと基本スタイル
水平ドロップダウン メニューの HTML マークアップは、目的のリスト項目にリンクしているという点で通常のメニューとは異なります。
- または<оl> .
- コード例には CSS プロパティのブラウザー接頭辞がありませんが、もちろんソース ファイル内で見つけることができます。
- 個人的には、 = + + のボックス モデルを使用します。 これを有効にするには、次のコードが必要です。
- > 隠れてるよ! >
- > 私もです! >
- > 私もそうです。 >
- まず、ドロップダウンの不透明度を 1 に変更して、ドロップダウンを表示します。
- 次に、小さな矢印の方向と色を変更します。
- 次に、グラデーションを使用して矢印の後ろの背景を変更します。
- > タイプ=「チェックボックス」 ID=「エル-1」 名前=「エル-1」 価値="ドーナツ"> > >
- > タイプ=「チェックボックス」 ID=「エル2」 名前=「エル2」 価値="近所の人"> > >
- > タイプ=「チェックボックス」 ID=「エル3」 名前=「エル3」 価値=「ティラノサウルス」> > >
- > href="#" > クラス=「アイコンユーザー」> > プロフィール > >
- > href="#" > クラス=「アイコンコグ」> > 設定 > >
- > href="#" > クラス=「アイコンの削除」> > 外出 > >
- 選択済み - リスト項目を強調表示するように設計されています。 multiple 属性が設定されている場合、ユーザーは複数の項目を選択できます (上記を参照)。
- 値 - 値。 この属性は必須です。 Web サーバーは、ユーザーがどのリスト項目を選択したかを理解する必要があります。
- ラベル。 この属性は、長すぎるリスト項目を短縮するために使用できます。 たとえば、オプションタグで指定した「ミラノはロンバルディア州の行政の中心地です」の代わりに「ミラノ」が画面に表示されます。 北イタリア」。 この属性は、リスト内の項目をグループ化するためにも使用されます。
メイン メニューを基準にしてサブメニューを配置するには、次のスタイルを宣言します。
— ドロップダウン リストがネストされているリスト要素の場合: li (position:相対;) ;
— ドロップダウン メニュー ul (position: ABSOL;) および左と上の値の場合。
わかりやすくし、書式設定を容易にするために、クラスのトップメニューをメイン メニューに追加し、サブメニューをドロップダウン メニューに追加しましょう。
ドロップダウン メニューを非表示にする方法はいくつかあります。
1) ディスプレイ: なし。
2) 可視性: 非表示。
3) 不透明度: 0;
4) 変換: スケール Y(0);
5) jQuery ライブラリを使用します。
方法 1. (表示: なし;)
ドロップダウン メニューは .submenu (display: none;) を使用して非表示になり、ホバーすると .topmenu li:hover .submenu (display: block;) を使用して表示されます。
方法 2. (可視性: 非表示;)
メニューは .submenu (visibility: hidden;) を使用して非表示になり、 .topmenu li:hover .submenu (visibility:visible;) を使用して表示されます。
方法 3. (不透明度: 0;)
メニューは .submenu (opacity: 0;) を使用して非表示になり、 .topmenu li:hover .submenu (opacity: 1;) を使用して表示されます。 メニューが配置されている領域にマウスを移動したときにメニューが表示されないようにするには、visibility: hidden; を追加します。 、ホバリング時に、visibility:visible;に変更します。 。
方法 4. (変換:scaleY(0);)
メニューは .submenu (transform:scaleY(0);) を使用して非表示になり、 .topmenu li:hover .submenu (transform:scaleY(1);) を使用して表示されます。 デフォルトの要素の変換は中心から発生するため、 for .submenu (transform-origin: 0 0;) を追加する必要があります。 左上隅から。
方法 5: jQuery を使用する
$(".five li ul").hide(); // ドロップダウン メニューを非表示 $(".five li:has(".submenu")").hover(function())( $(".five li ul").stop().fadeToggle(300) ;) /* .submenu クラスの要素を含むリスト要素を選択し、ドロップダウン メニューを表示または非表示にするホバー関数をそれに追加します */);2. 3D ドロップダウン メニュー
CSS3 変換を使用すると、画面の奥からメニューを表示するなど、興味深い効果を作成できます。
* ( box-sizing: border-box; ) body ( margin: 0; background: radio-gradient(#BFD6E2 1px, rgba(255,255,255,0) 2px); background-size: 10px 10px; ) nav ul ( list-style : なし; マージン: 0; パディング: 0; ) nav a ( 表示: ブロック; テキスト装飾: なし; アウトライン: なし; トランジション: .4s イーズインアウト; ) .topmenu ( backface-visibility: hidden; 背景: rgba(255,255,255,.8); ) .topmenu > li ( 表示: インラインブロック; 位置: 相対; ) .topmenu > li > a ( font-family: "Exo 2", sans-serif; 高さ: 70px;行の高さ: 70px; パディング: 0 30px; font-weight: ボールド; カラー: #003559; text-transform: uppercase; ) .down:after ( content: "\f107"; margin-left: 8px; font-family : FontAwesome; ) .topmenu li a:hover ( color: #E6855F; ) .submenu ( バックグラウンド: ホワイト; ボーダー: 2px ソリッド #003559; 位置: 絶対; 左: 0; 可視性: 非表示; 不透明度: 0; z-index : 5; 幅: 150px; 変換: 視点(600ピクセル) 回転X(-90度); 変換原点: 0% 0%; 遷移: .6sイーズインアウト; ) .topmenu > li:hover .submenu( 可視性:見える; 不透明度: 1; 変換: 視点(600px) 回転X(0度); ) .submenu li a ( color: #7f7f7f; font-size: 13px; line-height: 36px; padding: 0 25px; font-family: "Kurale", serif; )
3. ロゴ付きの展開可能なドロップダウン メニュー
この例では、ページの上部セクションにロゴとサイト ナビゲーションが含まれています。 ロゴには画像またはテキストを使用できます。 ドロップダウン メニューは、CSS3 変換関数を使用して、トップ リスト項目の下から徐々に拡張されます。
4. ドロップダウンメニューの展開
ドロップダウン メニューの別の例。 メニューが表示されるときの拡大効果は、初期サイズを小さくすることで実現されます。submenu (transform:scale(.8);)、ホバーするとサイズは .topmenu > li:hover .submenu (transform:scale(1);) に増加します。 。
* ( box-sizing: border-box; ) body ( margin: 0; 背景: url(https://html5book.ru/wp-content/uploads/2015/10/background54.png) ) nav (背景: 白; ) nav ul (リストスタイル: なし; マージン: 0; パディング: 0; ) nav a (テキスト装飾: なし; アウトライン: なし; 表示: ブロック; トランジション: .4s easy-in-out; ) .topmenu ( text-align: センター; パディング: 10px 0; ) .topmenu > li ( 表示: インラインブロック; 位置: 相対; ) .topmenu > li:after ( content: ""; 位置: 絶対; 右: 0; 幅: 1px; 高さ: 12px; 背景: #d2d2d2; トップ: 16px; ボックスシャドウ: 4px -2px 0 #d2d2d2; 変換: 回転(30度); ) .topmenu > li:last-child:after (背景: なし; ボックス-shadow: none; ) .topmenu > li > a (padding: 12px 26px; color: #767676; text-transform: uppercase; font-weight: 太字; Letter-spacing: 1px; font-family: "Exo 2",サンセリフ; ) .topmenu li a:hover ( color: #c0a97a; ) .submenu ( 位置: 絶対; 左: 50%; 上: 100%; 幅: 210px; 左マージン: -105px; 背景: #fafafa ; ボーダー: 1px ソリッド #ededed; z インデックス: 5; 可視性: 非表示; 不透明度: 0; 変換: スケール(.8); トランジション: 0.4 秒のイーズインアウト。 ) .submenu li a (padding: 10px 0; margin: 0 10px; border-bottom: 1px Solid #efefef; font-size: 12px; color: #484848; font-family: "Kurale", serif; ) .topmenu > li:hover .submenu (可視性: 可視; 不透明度: 1; 変換: スケール(1); )
5. プルアップドロップダウンメニュー
ミニアニメーション付きの水平メニュー: 上部のメニュー リンクの上にマウスを置くと、小さな円が表示され、ドロップダウン メニューの外観も表示されます。
@import url("https://fonts.googleapis.com/css?.jpg); 背景の位置: 中央 中央; 背景の繰り返し: 繰り返しなし; 背景のサイズ: カバー; 高さ: 100vh; 位置: 相対; ) body:before (内容: ""; 位置: 絶対; 左: 0; 下: 0; 高さ: 100%; 幅: 100%; 背景: line-gradient(45deg, rgba(0,0,0,0) , rgba(255,255,255,.8)); ) nav ( text-align: center; padding: 40px 0 0; ) nav ul ( list-style: none; margin: 0; padding: 0; ) nav a ( text-decoration : なし; 表示: ブロック; カラー: #222; ) .topmenu > li ( 表示: インラインブロック; 位置: 相対; ) .topmenu > li > a ( 位置: 相対; パディング: 10px 15px; フォントファミリー: " Kaushan スクリプト"、筆記体; フォント サイズ: 1.5em; 行の高さ: 1; 文字間隔: 3px; ) .topmenu > li > a:before ( content: ""; Position: 絶対; z-index: 5;左: 50%; 上: 100%; 幅: 10px; 高さ: 10px; 背景: 白; 境界線の半径: 50%; 変換: 変換(-50%, 20px); 不透明度: 0; 遷移: .3s; ) .topmenu li:hover a:before (transform:translate(-50%, 0); 不透明度: 1; ) .submenu (位置: 絶対; z-index: 4; 左: 50%; 上: 100%; 幅: 150px; パディング: 15px 0 15px; margin-top: 5px; 背景: 白; 境界半径: 5px;ボックスシャドウ: 0 0 30px rgba(0,0,0,.2); ボックスサイズ: ボーダーボックス; 可視性: 非表示; 不透明度: 0; 変換: 変換(-50%, 20px); トランジション: .3s ; ) .topmenu > li:hover .submenu ( 可視性: 表示; 不透明度: 1; 変換: 変換(-50%, 0); ) .submenu a ( font-family: "Libre Baskerville", serif; font-size: 11px; 文字間隔: 1px; パディング: 5px 10px; トランジション: .3s リニア; ) .submenu a:hover (背景: #e8e8e8;)
この記事では、画像を使わずにCSSだけで美しいドロップダウンリストを作成する方法を紹介します。 また、それらを機能させるためにいくつかの jQuery コードを追加します。
始める前に、次の点に注意してください。
*,
* :後
* :前に (
ボックスのサイズ設定: ボーダーボックス;
}
では、どこから始めましょうか?
最初の質問: ドロップダウン メニューを作成するには何が必要ですか? 一般に、ネストされたスパンタグと、ドロップダウン メニューの順序なしリストを持つ DIV を使用します。
> 私はラベルのようなものです! >
>
JavaScript
ドロップダウン リストを期待どおりに機能させるには、少し JavaScript が必要です。 これはすべての例で使用する JS スニペットです。
//...
Obj.dd .on (「クリック」 、関数 (イベント) (
false を返します。
}
)
;
//...
$(関数() (
var dd = 新しい DropDown( $("#dd" ) ) ;
$(ドキュメント).クリック(関数() (
//すべてのドロップダウン
$(".wrapper-dropdown-1" ) .removeClass ( "active" ) ;
}
)
;
} ) ;
では、このスクリプトは何をするのでしょうか? まずはクラスチェンジ 。アクティブラッパーをクリックしたとき。 これは、ラッパーにクラスがない場合、 。アクティブの場合は追加され、このクラスがすでに割り当てられている場合は削除されます。
次に、スクリプトはドロップダウンのデフォルトの動作を作成し、画面上の他の場所をクリックするとドロップダウンを閉じます。
さて、仕組みは理解できたので、いくつかの例を作成してみましょう。
例1
シンプルなものから始めましょう。単純な性別ドロップダウン ボックスです。 まずマークアップを見てみましょう。
HTMLマークアップ
ラッパー (id#dd の div)、(非表示の) ドロップダウン、span タグでラップされる「ラベル」というものが必要です。 意味的に正しいと思うのでアンカー リンクを使用していますが、別のタグを使用することもできます。
>CSS
それではCSSに移りましょう。 ラッパーから始めましょう:
ラッパードロップダウン (
/* サイズと位置 */
位置: 相対的;
幅: 200ピクセル;
パディング: 10px;
マージン: 0 自動;
/* 色と背景 */
背景: #9bc7de ;
色: #fff ;
概要: なし。
カーソル: ポインタ;
/* フォント */
フォントの太さ: 太字;
}
そこで私たちはいくつかのことを行いました。 まず、リストの幅とパディングを設定します。 次に、色と背景を設定します。 最後に、フォントのオプションを設定します。
擬似要素を使用して右側に小さな矢印を追加して、「ラベル」を完成させましょう。
ラッパードロップダウン :after (
コンテンツ : "" ;
幅: 0;
高さ: 0;
位置: 絶対;
右: 16px;
トップ: 50%;
マージントップ: -6px ;
ボーダー幅: 6px 0 6px 6px ;
ボーダースタイル:ソリッド;
境界線の色: 透明 #fff ;
}
CSS で境界線を使用して小さな三角形を作成する方法は誰もが知っていると思います。 もちろんこれはハックですが、本当にうまくいくなら、やらない手はありません。 そこには特別なことは何もありません。右側に小さな白い矢印があります。
素敵な小さなボタンがありますが、ドロップダウン コンテンツがなければ意味がありません。 リストを見てみましょう!
ラッパードロップダウン-1 .dropdown (
/* サイズと位置 */
位置: 絶対;
上: 100%;
左: 0; /* サイズ */
右: 0; /* サイズ */
/* スタイル */
背景: #fff ;
フォントの太さ: 通常; /* 以前の font-weight:bold を上書きします。 */
/* 非表示にする */
不透明度: 0 ;
ポインターイベント: なし。
}
ドロップダウンに絶対位置を指定して、ボタンの後ろに配置します (top: 100%;)。 ボタンと同じ幅にしましょう。 最後に、不透明度を 0 に下げて非表示にします。
次に、リスト要素のスタイルを設定しましょう。
Wrapper-dropdown-1 .dropdown li a (
表示ブロック;
テキスト装飾: なし。
色: #9e9e9e ;
パディング: 10px 20px;
}
/* ホバー状態 */
.wrapper-dropdown-1 .dropdown li:hover a (
背景: #f3f8f8 ;
}
JavaScriptを使用してクラスを切り替えます 。アクティブボタンをクリックすると、このクラスに基づいて CSS を変更してドロップダウンを表示できます。
/* アクティブ状態 */
.wrapper-dropdown-1 .active .dropdown (
不透明度: 1 ;
ポインターイベント: 自動 ;
}
ラッパードロップダウン 1 .active :after (
境界線の色: #9bc7de 透明;
ボーダー幅: 6px 6px 0 6px ;
マージントップ: -3px ;
}
ラッパードロップダウン-1.active(
背景: #9bc7de ;
背景 : 線形グラデーション(右へ、 #9bc7de 0% 、 #9bc7de 78% 、 #ffffff 78% 、 #ffffff 100% ) ;
}
注意すべき 3 つの点:
JavaScript
最後になりましたが、ボタンに選択した値を表示させるために、別の JavaScript を追加する必要もあります。
関数 DropDown(el) (
この .dd = el;
this .placeholder = this .dd .children ( "span" ) ;
this .opts = this .dd .find ( "ul.dropdown > li" ) ;
この .val = "" ;
この .index = - 1 ;
this.initEvents();
}
DropDown.prototype = (
var obj = これ ;
$(this).toggleClass("アクティブ");
false を返します。
}
)
;
Obj.opts.on("クリック" , function() (
var opt = $(this ) ;
obj.val = opt.text();
obj.index = opt.index();
obj.placeholder.text("性別: " + obj.val);
}
)
;
}
,
getValue:function()(
この .val を返します。
}
,
getIndex:function()(
この .index を返します。
}
}
非常に単純なコード: 要素がクリックされると、その値を取得し、span タグに表示します。
例 2
2 番目の例では、さまざまなソーシャル ネットワークに登録するための美しいメニューを作成します。
HTMLマークアップ
>タグ FontAwesome の小さなアイコンを表示するために使用されます。 FontAwesome が何であるかについては、これまでの記事ですでに何度か説明されているため、ここでは説明しません。 動作することを確認してください。
CSS
ラッパーから始めましょう。 これは、前の例のラッパーとほぼ同じです。 5 ピクセルの左境界線に注目してください。
ラッパードロップダウン-2 (
/* サイズと位置 */
位置: 相対的; /* 子要素と疑似要素の絶対配置を有効にする */
幅: 200ピクセル;
マージン: 0 自動;
パディング: 10px 15px;
/* スタイル */
背景: #fff ;
border-left : 5px ソリッドグレー;
カーソル: ポインタ;
概要: なし。
}
さて、小さな矢印です。 以前とまったく同じです:
ラッパードロップダウン 2 :after (
コンテンツ : "" ;
幅: 0;
高さ: 0;
位置: 絶対;
右: 16px;
トップ: 50%;
マージントップ: -3px ;
ボーダー幅: 6px 6px 0 6px ;
ボーダースタイル:ソリッド;
境界線の色: 灰色透明;
}
そしてこれはドロップダウンリストです。 繰り返しますが、前の例とほぼ同じです。
ラッパードロップダウン-2 .dropdown (
/* サイズと位置 */
位置: 絶対;
上: 100%;
左: -5px;
右: 0px;
/* スタイル */
背景: 白;
リストスタイル: なし;
/* 非表示にする */
不透明度: 0 ;
ポインターイベント: なし。
}
最初のデモのようにドロップダウンをただ開くのではなく、トランジションを使用してドロップダウンをフェードイン (アニメーション化) することに注意してください。
リンクとアイコンのいくつかのスタイル:
Wrapper-dropdown-2 .dropdown li a (
表示ブロック;
テキスト装飾: なし。
カラー:#333;
ボーダー左: 5px ソリッド ;
パディング: 10px;
トランジション: すべて 0.3 秒のイーズアウト。
}
Wrapper-dropdown-2 .dropdown li:nth-child(1) a (
ボーダー左の色: #00ACED ;
}
Wrapper-dropdown-2 .dropdown li:nth-child(2) a (
ボーダー左の色 : #4183C4 ;
}
Wrapper-dropdown-2 .dropdown li:nth-child(3) a (
ボーダー左の色: #3B5998 ;
}
Wrapper-dropdown-2 .dropdown li i (
マージン右: 5px ;
色: 継承;
垂直配置: 中央;
}
/* ホバー状態 */
Wrapper-dropdown-2 .dropdown li:hover a (
色: グレー;
}
次に、展開された状態のリストのスタイルを扱いましょう。 矢印の方向を変更すると、ドロップダウン リストが表示されます。
ラッパードロップダウン 2 .active :after (
境界線の幅: 0 6px 6px 6px ;
}
ラッパードロップダウン 2 .active .dropdown (
不透明度: 1 ;
ポインターイベント: 自動 ;
}
JavaScript
関数 DropDown(el) (
この .dd = el;
this.initEvents();
}
DropDown.prototype = (
initEvents: function() (
var obj = これ ;
Obj.dd .on (「クリック」 、関数 (イベント) (
$(this).toggleClass("アクティブ");
イベント.stopPropagation();
}
)
;
}
}
例 3
3 番目の例に進みます。この場合、選択した項目がデフォルト値を置き換えます。
HTMLマークアップ
>以前と比べてコードはそれほど多くありません。 CSSに移りましょう!
CSS
ラッパードロップダウン-3 (
/* サイズと位置 */
位置: 相対的;
幅: 200ピクセル;
マージン:
0
自動;
パディング:
10ピクセル;
/* スタイル */
背景:
#fff;
境界半径 :
7px;
国境:
1ピクセル 固体 rgba (0
,
0
,
0
,
0.15
)
;
ボックスシャドウ :
0
1ピクセル 1ピクセル rgba (50
,
50
,
50
,
0.1
)
;
カーソル:
ポインタ;
概要:
なし;
/* フォント設定 */
フォントの太さ:
大胆な;
色:
#8AA8BD;
}
ここでは、境界線、ボックスの影、丸い角を使用します。 小さな矢印も必要です。
.wrapper-dropdown-3:後{
コンテンツ:
""
;
幅:
0
;
身長:
0
;
位置:
絶対;
右:
15ピクセル;
上:
50%
;
マージントップ:
-3px;
境界線の幅:
6ピクセル 6ピクセル 0
6ピクセル;
ボーダースタイル:
固体;
ボーダの色:
#8aa8bd 透明;
}
ここでの内容はすべて前と同じなので、コードについては詳しく説明しません。
.wrapper-dropdown-3 。落ちる {
/* サイズと位置 */
位置:
絶対;
上:
140%
;
左:
0
;
右:
0
;
/* スタイル */
背景:
白;
境界半径 :
継承する;
国境:
1ピクセル 固体 rgba (0
,
0
,
0
,
0.17
)
;
ボックスシャドウ :
0
0
5ピクセル rgba (0
,
0
,
0
,
0.1
)
;
フォントの太さ:
普通;
遷移 :
すべて0.5秒イーズイン ;
リスト形式:
なし;
/* 非表示にする */
不透明度 :
0
;
ポインタイベント :
なし;
}
.wrapper-dropdown-3 。落ちるりあ {
画面:
ブロック;
パディング:
10ピクセル;
テキスト装飾:
なし;
色:
#8aa8bd;
ボーダーボトム:
1ピクセル 固体 #e6e8ea;
ボックスシャドウ :
差し込み 0
1ピクセル 0
rgba (255
,
255
,
255
,
1
)
;
遷移 :
すべて0.3秒イーズアウト ;
}
.wrapper-dropdown-3 。落ちる李私 {
浮く:
右;
色:
継承する;
}
.wrapper-dropdown-3 。落ちるリー :タイプの最初ある {
境界半径 :
7px 7px 0
0
;
}
.wrapper-dropdown-3 。落ちるリー :最後のタイプある {
境界半径 :
0
0
7px 7px;
国境:
なし;
}
/* ホバー状態 */
.wrapper-dropdown-3 。落ちるリー :ホバーある {
背景:
#f3f8f8;
}
ドロップダウンの右上にある小さな矢印を除いて、すべてが素晴らしく見えます。 この矢印は重要です。この矢印がないと、ドロップダウンはボタンに接続せずに浮いているように見えます。
.wrapper-dropdown-3 。落ちる:後{
コンテンツ:
""
;
幅:
0
;
身長:
0
;
位置:
絶対;
底:
100%
;
右:
15ピクセル;
境界線の幅:
0
6ピクセル 6ピクセル 6ピクセル;
ボーダースタイル:
固体;
ボーダの色:
#fff 透明;
}
.wrapper-dropdown-3 。落ちる:前に{
コンテンツ:
""
;
幅:
0
;
身長:
0
;
位置:
絶対;
底:
100%
;
右:
13ピクセル;
境界線の幅:
0
8ピクセル 8ピクセル 8ピクセル;
ボーダースタイル:
固体;
ボーダの色:
rgba (0
,
0
,
0
,
0.1
)
透明;
}
この矢印の周囲に境界線を作成したいため、この矢印には 2 つの疑似要素を使用しました。
展開された状態のスタイルが設定されるようになりました。 すべて同じです。 ただし、移行を次のように設定していることに注意してください。 。落ちる通常より少し長くなります (0.3 秒ではなく 0.5 秒)。 こうすることでメニューを開くのがとてもスムーズになります。
.wrapper-dropdown-3。アクティブ 。落ちる {
不透明度 :
1
;
ポインタイベント :
自動;
}
JavaScript
このデモを完了するには、JavaScript を追加して、選択したボタンのデフォルト値を置き換える必要があります。 最初の例でこれがどのように行われるかを確認しましたが、ここでは「Transport」という単語を残さないため、JS は少し異なります。
関数ドロップダウン (エル )
{
これ .dd =
エル ;
これ .placeholder =
これ .dd。子供たち ("スパン")
;
これ .opts =
これ .dd。探す ("ul.dropdown >li")
;
これ .val =
""
;
これ 。索引 =
-1
;
this.initEvents ()
;
}
落ちる 。プロトタイプ =
{
initイベント :
関数 ()
{
変数オブジェクト =
これ ;
オブジェクト .dd。の上 ("クリック",
関数 (イベント )
{
$(これ )
.toggleClass ("アクティブ")
;
falseを返す ;
}
)
;
オブジェクト .opts。の上 ("クリック",
関数 ()
{
可変オプション =
$(これ )
;
オブジェクト .val =
選択します。 文章()
;
オブジェクト 。索引 =
オプトインデックス ()
;
オブジェクト .placeholder.文章(オブジェクト値)
;
}
)
;
}
,
getValue :
関数 ()
{
this.val を返す ;
}
,
インデックスの取得 :
関数 ()
{
this.index を返す ;
}
}
例 4
見た目が違いますね。 ここでは、チェックを入れて線を引くことができる、やるべきことのリストを作成します。 全体的には特別なことは何もありませんが、この例は以前のデモとは大きく異なります。
HTMLマークアップ
クラス="落ちる">
>
ここにはリンクやアイコンはありません。 各要素には、ラベルが付いたチェックボックスという 2 つのタグがあります。
CSS
.wrapper-dropdown-4 {
/* サイズと位置 */
位置:
相対的;
幅:
270ピクセル;
マージン:
0
自動;
パディング:
10ピクセル 10ピクセル 10ピクセル 30ピクセル;
/* スタイル */
背景:
#fff;
国境:
1ピクセル 固体 銀;
カーソル:
ポインタ;
概要:
なし;
}
左側のパディングを使用して、赤い線のための十分なスペースを作成します。 さて、右側の小さな矢印:
.wrapper-dropdown-4:後{
コンテンツ:
""
;
幅:
0
;
身長:
0
;
位置:
絶対;
右:
10ピクセル;
上:
50%
;
マージントップ:
-3px;
境界線の幅:
6ピクセル 6ピクセル 0
6ピクセル;
ボーダースタイル:
固体;
ボーダの色:
#ffaa9f 透明;
}
ドロップダウン リストのスタイルは前の例と同じです。
.wrapper-dropdown-4 。落ちる {
/* サイズと位置 */
位置:
絶対;
上:
100%
;
マージントップ:
1ピクセル;
/* ラッパーの境界線 */
左:
-1px;
右:
-1px;
/* スタイル */
背景:
白;
国境:
1ピクセル 固体 銀;
ボーダートップ:
なし;
リスト形式:
なし;
遷移 :
すべて0.3秒イーズアウト ;
/* 非表示にする */
不透明度 :
0
;
ポインタイベント :
なし;
}
ラッパーの境界線から少し下に移動する必要があるため、margin-top を 1px に設定する必要があります。
.wrapper-dropdown-4 。落ちるリー {
位置:
相対的;
/* チェックボックスの絶対位置を有効にする */
}
.wrapper-dropdown-4 。落ちるリーラベル {
画面:
ブロック;
パディング:
10ピクセル 10ピクセル 10ピクセル 30ピクセル;
/* ボタンと同じパディング */
ボーダーボトム:
1ピクセル 点在 #1ccfcf;
遷移 :
すべて0.3秒イーズアウト ;
}
.wrapper-dropdown-4 。落ちるリー :最後のタイプラベル {
国境:
なし;
}
.wrapper-dropdown-4 。落ちるリ入力 /* チェックボックス */ {
位置:
絶対;
画面:
ブロック;
右:
10ピクセル;
上:
50%
;
マージントップ:
-8px;
}
/* ホバー状態 */
.wrapper-dropdown-4 。落ちるリー :ホバーラベル {
背景:
#f0f0f0;
}
/* チェック状態 */
.wrapper-dropdown-4 。落ちるリ入力 :
~ラベルをチェックしました {
色:
グレー ;
テキスト装飾:
ラインスルー;
}
チェックボックスは絶対的に配置され、各行の右中央に配置されますが、ラベルに関連付けられているため、項目上の任意の場所をクリックしてチェックを入れることができます。
チェックボックスをオンにすると、テキストが灰色になり、取り消し線が付きます。 シンプルですが効果的です。
私たちの小さなノートの左側には、さらに 2 本の細い赤い線があります。 これを行うには 2 つの方法があります。1 つは擬似要素を使用する方法、もう 1 つはグラデーションを使用する方法です。 両方のオプションを見てみましょう。
/* 疑似要素を含む赤い線 */
.wrapper-dropdown-4 。落ちる:前に,
.wrapper-dropdown-4:前に{
コンテンツ:
""
;
幅:
4ピクセル;
身長:
100%
;
位置:
絶対;
上:
0
;
左:
15ピクセル;
国境:
1ピクセル 固体 #ffaa9f;
ボーダートップ:
なし;
ボーダーボトム:
なし;
Zインデックス:
2
;
}
/* または: */
/* グラデーションを使用した赤い線 */
.wrapper-dropdown-4。落ちる ,
.wrapper-dropdown-4 {
背景:
線形勾配 (左,
白 5%
,
#ffaa9f 5%
,
#ffaa9f 5.3%
,
白 5.3%
,
白 6.5%
,
#ffaa9f 6.5%
,
#ffaa9f 6.8%
,
白 6.8%
)
;
}
.wrapper-dropdown-4 。落ちるリー :ホバーラベル {
背景:
線形勾配 (左,
#f0F0F0 5%
,
#ffaa9f 5%
,
#ffaa9f 5.3%
,
#f0F0F0 5.3%
,
#f0F0F0 6.5%
,
#ffaa9f 6.5%
,
#ffaa9f 6.8%
,
#f0F0F0 6.8%
)
;
}
それでは、これらの方法のうちどれが優れているのでしょうか? おそらく最初のものです。リスト項目のホバー効果を変更したい場合は、グラデーションを変更する必要があり、これは非常に難しいからです。 さらに、グラデーション (IE10 まではサポートされていません) とは異なり、擬似要素はブラウザー (IE8 以降) でより適切にサポートされています。
展開された状態のスタイルが設定されるようになりました。 ここには何も新しいことはありません。
/* アクティブ状態 */
.wrapper-dropdown-4。アクティブ:後{
境界線の幅:
0
6ピクセル 6ピクセル 6ピクセル;
}
.wrapper-dropdown-4。アクティブ 。落ちる {
不透明度 :
1
;
ポインタイベント :
自動;
}
JavaScript
関数落ちる (エル )
{
これ.DD =
エル ;
これ.選択します =
これ.DD.探す("ul.dropdown >li")
;
これ.ヴァル =
[
]
;
これ.索引 =
[
]
;
これ.initイベント()
;
}
落ちる。 プロトタイプ =
{
initイベント :
関数()
{
変数オブジェクト =
これ;
観察 DD.の上("クリック",
関数(イベント )
{
$(これ)
.トグルクラス("アクティブ")
;
イベント。 伝播の停止()
;
}
)
;
観察 選択します.子供たち("ラベル")
.の上("クリック",
関数(イベント )
{
変数選択する =
$(これ)
.親()
,
chボックス =
選択します。 子供たち("入力")
,
ヴァル =
chボックス。 ヴァル()
,
いずみ =
選択します。 索引()
;
($.inArray(ヴァル ,
オブジェクト ヴァル)
!==
-
1
)
?
オブジェクト ヴァル.スプライス( $.inArray(ヴァル ,
オブジェクト ヴァル)
,
1
)
:
オブジェクト ヴァル.押す(ヴァル )
;
($.inArray(いずみ ,
オブジェクト 索引)
!==
-
1
)
?
オブジェクト 索引.スプライス( $.inArray(いずみ ,
オブジェクト 索引)
,
1
)
:
オブジェクト 索引.押す(いずみ )
;
}
)
;
}
,
getValue :
関数()
{
戻る これ.ヴァル;
}
,
インデックスの取得 :
関数()
{
戻る これ.索引;
}
}
例5
最後の例は、一部の管理パネルのドロップダウン メニューに似ています。 これを行うには、切り替え時にアニメーションを使用します。 表示/非表示ではなく、上下にスライドします。
HTMLマークアップ
クラス="落ちる">
>
CSS
.wrapper-dropdown-5 {
/* サイズと位置 */
位置:
相対的;
幅:
200ピクセル;
マージン:
0
自動;
パディング:
12ピクセル 15ピクセル;
/* スタイル */
背景:
#fff;
境界半径 :
5ピクセル;
ボックスシャドウ :
0
1ピクセル 0
rgba (0
,
0
,
0
,
0.2
)
;
カーソル:
ポインタ;
概要:
なし;
遷移 :
すべて0.3秒イーズアウト ;
}
.wrapper-dropdown-5:後{
/* 小さな矢印 */
コンテンツ:
""
;
幅:
0
;
身長:
0
;
位置:
絶対;
上:
50%
;
右:
15ピクセル;
マージントップ:
-3px;
境界線の幅:
6ピクセル 6ピクセル 0
6ピクセル;
ボーダースタイル:
固体;
ボーダの色:
#4cbeff 透明;
}
これらが主なスタイルです。 次に、通常とは少し異なるドロップダウン リストに進みます。
.wrapper-dropdown-5 。落ちる {
/* サイズと位置 */
位置:
絶対;
上:
100%
;
左:
0
;
右:
0
;
/* スタイル */
背景:
#fff;
境界半径 :
0
0
5ピクセル 5ピクセル;
国境:
1ピクセル 固体 rgba (0
,
0
,
0
,
0.2
)
;
ボーダートップ:
なし;
ボーダーボトム:
なし;
リスト形式:
なし;
遷移 :
すべて0.3秒イーズアウト ;
/* 非表示にする */
最大高さ:
0
;
オーバーフロー:
隠れた;
}
今回はメニューを非表示にするために不透明度を 0 に変更しませんでした。 max-height を 0 に設定し、overflow: hidden を設定します。 なぜ高さではなく最大高さを設定したのですか? 展開されたリストの正確な高さがわからないからです。
リスト要素のシンプルなスタイル。
.wrapper-dropdown-5 。落ちるリー {
パディング:
0
10ピクセル ;
}
.wrapper-dropdown-5 。落ちるりあ {
画面:
ブロック;
テキスト装飾:
なし;
色:
#333
;
パディング:
10ピクセル 0
;
遷移 :
すべて0.3秒イーズアウト ;
ボーダーボトム:
1ピクセル 固体 #e6e8ea;
}
.wrapper-dropdown-5 。落ちるリー :最後のタイプある {
国境:
なし;
}
.wrapper-dropdown-5 。落ちる李私 {
右マージン:
5ピクセル;
色:
継承する;
垂直整列:
真ん中;
}
/* ホバー状態 */
.wrapper-dropdown-5 。落ちるリー :ホバーある {
色:
#57a9d9;
}
そして今、アクティブな状態です:
/* アクティブ状態 */
.wrapper-dropdown-5。アクティブ {
境界半径 :
5ピクセル 5ピクセル 0
0
;
背景:
#4cbeff;
ボックスシャドウ :
なし;
ボーダーボトム:
なし;
色:
白;
}
.wrapper-dropdown-5。アクティブ:後{
ボーダの色:
#82d1ff 透明;
}
.wrapper-dropdown-5。アクティブ 。落ちる {
ボーダーボトム:
1ピクセル 固体 rgba (0
,
0
,
0
,
0.2
)
;
最大高さ:
400ピクセル;
}
ドロップダウンが開いたら、ボタンの下隅、その色、矢印の方向、矢印の色を変更し、その影と境界線を削除します。
メニューを表示するには、ドロップダウンの最大高さを 400px に設定します。 500px または 1000px に設定できますが、それは問題ではありません。
JavaScript
関数落ちる (エル )
{
これ.DD =
エル ;
これ.initイベント()
;
}
落ちる。 プロトタイプ =
{
initイベント :
関数()
{
変数オブジェクト =
これ;
観察 DD.の上("クリック",
関数(イベント )
{
$(これ)
.トグルクラス("アクティブ")
;
イベント。 伝播の停止()
;
}
)
;
}
}
下位互換性
これで、うまく機能する 5 つのドロップダウンができましたが、古いブラウザではどうなるでしょうか?
これらのブラウザは、たとえば不透明度プロパティを理解できません。
Modernizr ライブラリはこれに役立ちます。 知らない人のために簡単に言うと、Modernizr は HTML5 および CSS3 でサポートされるプロパティをユーザーのブラウザーに公開する JavaScript ライブラリです。
このおかげで、*この* プロパティをサポートしていない場合はブラウザに「伝える」ことができ、その場合は次の操作を実行します。 以下は、特定の CSS プロパティをサポートしていないブラウザのスタイルを管理する方法の例です。
/* CSS3 はサポートされていません */
.no-不透明度 .wrapper-dropdown-1。落ちる ,
.no-pointerevents .wrapper-dropdown-1 。落ちる {
画面:
なし;
不透明度 :
1
;
/* 不透明度はサポートされるが、ポインター イベントはサポートされない場合 */
ポインタイベント :
自動;
/* ポインター イベントはサポートされているが、ポインター イベントはサポートされていない場合 */
}
.no-不透明度 .wrapper-dropdown-1。アクティブ。落ちる ,
.no-pointerevents .wrapper-dropdown-1。アクティブ 。落ちる {
画面:
ブロック;
}
ブラウザが不透明度またはポインター イベントをサポートしていない場合は、display: block; プロパティが使用されます。 等々。
結論。
この記事がカスタム ドロップダウン メニューの作成方法の理解に役立つことを願っています。 ご覧のとおり、非常にシンプルです。
デモンストレーション
ご質問がある場合は、できるだけ早く回答を得るためにフォーラムを使用することをお勧めします
HTML の単純なドロップダウン リストは、select タグを使用して簡単に作成できます。 これはコンテナ タグであり、オプション タグがその中にネストされており、リストの要素を定義します。
select タグを使用して作成できるリストには、ドロップダウン リスト (メイン フィールドをクリックするか、その上にマウスを移動するとオプションが表示されます) と、ユーザーが複数の項目を選択できる複数選択リストなど、いくつかのオプションがあります。 前者はより一般的であり、現代のサイトのナビゲーションの重要な要素です。 複数選択ドロップダウン リストは、たとえば、製品のいくつかの特性を選択する必要があるカタログで使用できます。
汎用属性と特殊属性を使用して、リストの外観とプロパティを変更できます。
タグ属性の選択
1. 複数 - 複数選択を設定します。
2. サイズ - リスト内の表示行数、つまり高さを設定します。 そして、ここではすべて、multiple 属性が存在するかどうかによって決まります。 「はい」でサイズを指定しない場合、複数が存在する場合、ユーザーには可能なすべての選択オプションが表示されますが、複数が存在しない場合は 1 行のみが表示され、訪問者は残りの部分を読むことができます。右側にあるエレベーターのアイコンをクリックします。 高さのサイズが指定されていて、それがオプションの数より小さい場合は、右側にスクロール バーが表示されます。
3. 名前 - 名前。 ドロップダウン リストはなくても問題ありませんが、サーバー上のハンドラー プログラムと対話する必要がある場合があります。 原則として、名前は引き続き表示されます。
select タグには、option タグとは異なり、必須の属性がありません。
ネストされたオプションタグの属性
リストの幅については、デフォルトでリスト内の最も幅の広いテキストの長さに設定されます。 もちろん、HTML スタイルを使用して幅を変更することもできます。
他の方法でのドロップダウン リスト
これは CSS を使用して実行できます。たとえば、ページ要素の上にマウスを置くとリストが表示されます。 リストを作成するための優れたオプションは JavaScript によって提供されており、Jquery ライブラリによって簡素化されています。 このライブラリを使用して接続されたドロップダウン リストは、カスケードなど、非常に複雑になる場合があります。 つまり、1 つのリスト内の要素を選択すると、次のリストが表示されます。たとえば、メニュー項目「婦人服」があります (その上にカーソルを置くと、タイプの 1 つを選択します。たとえば、「アウターウェア」)。 」と表示すると、ジャケット、パーカー、コート、ショートコート、ファーコートなどの要素を含むリストがドロップされます。
ドロップダウン リストを作成する主な方法を表面的にリストしました。 もちろん、JavaScript にはリストの機能や外観を変更できる微妙な機能がたくさんあります。
多くの場合、初心者はドロップダウン リストの設計という問題に直面します。 オリジナルと同じように 選択する特別なことは何もできません。 それから助けに来ます jQuery, そうすれば、ほぼ何でもできるようになります。
標準的なものも可能ですと言ったらどうですか? HTMLドロップダウン リストをきれいにデザインするのは悪いことではありません CSS?
HTMLのドロップダウンリスト
背景と文字の色を変更することができ、非常に簡単です。
で スパン 2 つのクラスを追加しました。そのうち 1 つはメインのクラスで、すべてのメイン スタイルが含まれます。」 カスタムドロップダウン」、2番目は大きく、これによってサイズが決まります ドロップダウンリスト。 事前に3サイズほどご用意させていただきますが、 大、中、小、スタイルで設定 フォントサイズ。 そして今後も気にしないでください。 これはスキップしても構いません。すべてはサイトのデザインによって異なります。
Body (背景: #2a2a2b; カラー: #fff; text-align: center; font-family: Arial、Helvetica; ) .big ( font-size: 1.2em; ) /* カスタム ドロップダウン */ .custom-dropdown (position : 相対; 表示: インラインブロック; 垂直配置: 中央; マージン: 10px; /* デモのみ */ ) .custom-dropdown select ( カーソル:ポインター; 背景色: #2980b9; カラー: #fff; フォント-サイズ: 継承; パディング: .5em; パディング右: 2.5em; ボーダー: 0; マージン: 0; ボーダー半径: 3px; テキストインデント: 0.01px; テキストオーバーフロー: ""; -webkit-Appearance: ボタン; /* Chrome OSX でデフォルトの矢印を非表示にする */ ) .custom-dropdown::before, .custom-dropdown::after ( content: "";position:Absolute; pointer-events: none; ) .custom-dropdown:: after ( /* カスタム ドロップダウン矢印 */ content: "\25BC"; height: 1em; font-size: .625em; line-height: 1; right: 1.2em; top: 50%; margin-top: -.5em ; ) .custom-dropdown::before ( /* カスタムドロップダウン矢印カバー */ width: 2em; right: 0; top: 0;bottom: 0; border-radius: 0 3px 3px 0; ) .custom-dropdown select (色: rgba(0,0,0,.3); ) .custom-dropdown select::after ( color: rgba(0,0,0,.1); ) .custom-dropdown::before ( background-color: rgba(0,0,0,.15); ) .custom-dropdown::after ( color: rgba(0,0,0,.4); )
わざわざスタイルを検討したくない場合は、サイトに追加して、サイトのデザインに合わせて色を変更するだけです。 そうすれば、あなたはただスタイリッシュです」 .custom-ドロップダウン選択”値を変更する必要があります 背景色そして 色