html+cssでメニューバーのスロードロップダウン効果を実現するコード例
目標:html+cssを使って、マウスをメニューバーに移動させるとメニューバーがゆっくり表示される効果を実現する。
この問題を解決するには、次の2つの方法があります。
方法1:遷移(トランジション)
フォーラムをオンにする-1
Absolute positioning
(絶対)であるため、内側の
li
を親要素の外に出すと、それ以降のコンテンツが右側に圧迫されるため、親要素の外にある
overflow: hidden
のように、高さを0に設定し、マウスオーバー後にそれに応じて高さを設定します。
.code .forum-1{
/* Enable absolute positioning */
position: absolute;
overflow: hidden;
height: 0;
transition-duration: 0.5s;
}
htmlのコードは以下の通りです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href=". /css/index.css">
<link rel="stylesheet" href=". /css/reset.css">
<title>Menu bar slow drop down</title>
</head>
<body>
<ul class="code">
<li><a href="#">blog</a></li>
<li class="forum"><a href="#">forum</a>
<ul class="forum-1">
<li><a href="#">css</a></li>
<li class="vue"><a href="#">vue</a></li>
<li><a href="#">python</a></li>
</ul>
</li>
<li><a href="#">live</a></li>
</ul>
</body>
</html>
cssのスタイルコードは以下の通りです。
a{
display: block;
text-decoration: none;
color: #333;
}
.code{
width: 390px;
height: 50px;
line-height: 50px;
background-color:#bfa;
margin: 5px auto;
}
.code li{
float: left;
width: 130px;
height: 50px;
background-color: #bfa;
text-align: center;
margin: 0 auto;
font-size: 20px;
}
.code > li:last-child{
margin-right: 0;
}
.code > li:hover{
background-color: #f8f192;
}
.forum{
position: relative;
margin: auto 90px;
}
.code .forum-1{
/* enable absolute positioning */
position: absolute;
overflow: hidden;
height: 0;
transition-duration: 0.5s;
}
.forum:hover .forum-1{
/* mouseover to release height */
height: 150px;
}
いろいろ試した結果、transitionはdisplay属性に対応していないので、display:noneでメニューバーを隠すことはできないことがわかりました
方法2:アニメーション
まず、CSSアニメーションを作成します。
@keyframes frames{
from{
height: 0px;
}
to{
height: 150px;
}
}
次に、メニュースタイルを隠すために display:none を設定し、それを forum-1 セレクタにバインドし、アニメーション名を animation にバインドし、デュレーションを設定します。
.forum-1{
position: absolute;
display: none;
overflow: hidden;
/* Bind the animation name and set the duration */
animation-name: frames;
animation-duration: 0.5s;
}
マウスオーバー時にブロックするようにdisplayプロパティを設定するだけです。
.forum:hover .forum-1{
display: block;
}
注意点としては、この場合、マウスオーバー直後にセカンダリメニューバーが自動的に引っ込むという問題が発生することです。この問題を回避するには、forum-1 セレクタの中に次のようなコードを追加すればよいでしょう。
.forum-1{
animation-fill-mode: forwards;
}
残りのコードは方法1と同じなので、ここでは割愛します
レンダリングは次のようになります。
メニューバーのサンプルコードの遅いプルダウン効果を達成するためにHTML + CSSの使用に関するこの記事は、これに導入され、より関連するHTML + CSSメニューバー遅いプルダウンの内容は、以前の記事のスクリプトのホームを検索したり、次の関連記事を閲覧し続け、私はあなたが将来的にはよりスクリプトのホームをサポートして願っています!この記事では、メニューバーのサンプルコードの遅いプルダウンの効果を達成するために、HTML + CSSの使用に関するこの記事は、以前の記事のスクリプトのホームを検索し続け、以下の関連記事の閲覧し続け、私はあなたが将来のスクリプトのホームをサポートしています。
関連
-
404の実装で雪見だいふくをする方法CANVAS
-
データストレージの3つの方法、Cookie sessionstorage localstorageの類似点と相違点の分析
-
HTML5 Blobによるファイルダウンロード機能のサンプルコード
-
クロスドメイン・モディフィケーション iframeページのコンテンツ詳細
-
HTML5によるアプリケーションキャッシュの実装
-
キャンバスでの複数描画の順番の説明
-
ページ下部のHTML5フッターの詳細(CSS+JS)
-
HTML5新タグの互換性 --> <! --<if lt IE 9><!endif--> の2つの方法があります。
-
HTMLでIMGをDIVコンテナのサイズに自動的に適応させる方法
-
html2 canvasで印刷用の鮮明な画像を生成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
HTML5でWeChatの共有を呼び起こす外部ブラウザ
-
html+css イメージスキャナ効果用
-
wx.hideMenuItemsを使用してH5の開発を解決する方法を説明する 効果がない 効果がない
-
iPhoneXの画面適応 WeChatアプリとH5でセーフエリア下部の小さな黒いバー
-
html5 色彩公差キーイング with canvas
-
html5 コロンセパレータのアライメント実装
-
HTML5新フォームコントロールとフォームプロパティのサンプルコード詳細
-
HTML5 postMessage使用マニュアル
-
Html5 Canvasアニメーションの基本的な衝突検出の実装
-
モバイルhtml5で長押しイベントをシミュレートする方法