ホームページ > 記事 > ウェブフロントエンド > jQuery CSS は横スライド ナビゲーション メニューを実装します code_jquery
サイド メニューは web サイトのデザインで広く使用されており、このタイプのメニューは多くの web サイトで見られます。重要な情報を表示し、より読みやすく美しくし、ユーザー体験価値を満足させることができます。
今日は、jquery と css を使用して横スライド メニューを実装する方法を説明します。
ナビゲーション メニューを構築するには、まず html 構造を見てみましょう。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>animation menu demo</title> <link rel="stylesheet" href=" <link href='https://fonts.googleapis.com/css?family=montserrat' rel='stylesheet' type='text/css'> <link rel="stylesheet" href=" <script src=" </script> <script src="script.js"> </script> <link rel="stylesheet" href="style.css"> </head><body> <!-- content goes here --> </body> </html>
まず、メニューがすべてのブラウザで同じになるように、normalize.css をデフォルトのスタイルとして参照します。メニュー項目の下のアイコンを表示するには、フォント アイコン fontawesome を使用します。メニュー切り替えを実装するには jquery も参照する必要があります。
パネル ボタン
サイト パネルのナビゲーション ボタンはどれも似ています。 fontawesome のようなアイコンフォントになることが多いですが、このチュートリアルではアニメーションを加えたいので、横線で行います。基本的に、私たちのボタンは水平線として表示される 3 つの div を含むスパンです。
<span class="toggle-button"> <div class="menu-bar menu-bar-top"></div> <div class="menu-bar menu-bar-middle"></div> <div class="menu-bar menu-bar-bottom"></div> </span>
スタイルは次のようになります:
.toggle-button { position: fixed; width: 44px; height: 40px; padding: 4px; transition: .25s; z-index: 15; } .toggle-button:hover { cursor: pointer; } .toggle-button .menu-bar { position: absolute; border-radius: 2px; width: 80%; transition: .5s; } .toggle-button .menu-bar-top { border: 4px solid #555; border-bottom: none; top: 0; } .toggle-button .menu-bar-middle { height: 4px; background-color: #555; margin-top: 7px; margin-bottom: 7px; top: 4px; } .toggle-button .menu-bar-bottom { border: 4px solid #555; border-top: none; top: 22px; } .button-open .menu-bar-top { transform: rotate(45deg) translate(8px, 8px); transition: .5s; } .button-open .menu-bar-middle { transform: translate(230px); transition: .1s ease-in; opacity: 0; } .button-open .menu-bar-bottom { transform: rotate(-45deg) translate(8px, -7px); transition: .5s; }
ボタンの位置は固定されており、移動していないときにページをスクロールします。また、他の重なり合う要素の上に常に配置されるように、z-index :15 を持っています。ボタンは 3 本の水平線で構成されています。それぞれの水平線には独自のスタイルがあり、それに .menu-bar スタイルを追加します。クラスの残りのスタイルは、別のスタイル ファイルに移動されました。アニメーションが発生したら、クラス .button-open を追加します。より便利に実装できる jquery を引用します。
$(document).ready(function() { var $togglebutton = $('.toggle-button'); $togglebutton.on('click', function() { $(this).toggleclass('button-open'); }); });
初心者は jquery に慣れていないかもしれません。何が起こっているのか説明しましょう。まず、ボタンを含む $togglebutton という変数を初期化します。これを変数として保存し、ボタンのクリックを監視するイベント モニターを作成します。クリックされるたびに、イベント リスナーはメソッド関数 toggleclass() を実行して .button-open を切り替えます。
.button-open これを使用して、これらの要素の表示方法を変更できます。 css3のtranslate()関数とrotate()関数を使用して、上下の水平線を45度回転し、中央の水平線が徐々に消えます。デモ内のボタンをクリックして効果を確認できます。
サイド メニュー
サイド スライド メニューの html 構造は次のとおりです:
<div class="menu-wrap"> <div class="menu-sidebar"> <ul class="menu"> <li><a href="#">home</a></li> <li><a href="#">about</a></li> <li><a href="#">blog</a></li> <li class="menu-item-has-children"><a href="#">click the arrow</a> <span class="sidebar-menu-arrow"></span> <ul class="sub-menu"> <li><a href="#">alignment</a></li> <li><a href="#">markup</a></li> <li><a href="#">comments</a></li> </ul> </li> <li><a href="#">courses</a></li> <li><a href="#">get in touch</a></li> </ul> </div> </div>
メニューの各スタイルについてはここでは詳しく説明しませんので、.menu-wrapのdivを見てみましょう。そのスタイルは次のとおりです:
.menu-wrap { background-color: #6968ab; position: fixed; top: 0; height: 100%; width: 280px; margin-left: -280px; font-size: 1em; font-weight: 700; overflow: auto; transition: .25s; z-index: 10; }
その位置は固定されているため、メニューは常に同じ場所でスクロールします。高さは 100% に設定されます。左マージンが負の数に設定されているため、メニューが表示されなくなることに注意してください。外観効果を与えるために、jquery を使用して別のクラスを呼び出して表示し、閉じます。 javascript コードは次のとおりです。
$(document).ready(function() { var $togglebutton = $('.toggle-button'), $menuwrap = $('.menu-wrap'); $togglebutton.on('click', function() { $(this).toggleclass('button-open'); $menuwrap.toggleclass('menu-show'); }); });
メニューのすべての項目を含む変数 $menuwrap を追加し、同じイベントを使用してボタンを作成します。この .menu-show の左マージンは 0 で、いくつかのボックス シャドウ効果が追加されています。
.menu-show { margin-left: 0; box-shadow: 4px 2px 15px 1px #b9adad; }
サブメニューとリンク
リスト項目にクラス .menu-item-has-children があることに気づくかもしれません。サブメニューが含まれています。同時に、リンクの後に、クラス .sidebar-menu-arrow があります。
<li class="menu-item-has-children"><a href="#">click the arrow</a> <span class="sidebar-menu-arrow"></span> <ul class="sub-menu"> <!-- list items --> </ul> </li>
span には、fontawesome 矢印を実装する ::after 疑似要素パッケージがあります。デフォルトでは、サブメニューは非表示になっており、親メニューをクリックした場合にのみ表示されます。
$(document).ready(function() { var $sidebararrow = $('.sidebar-menu-arrow'); $sidebararrow.click(function() { $(this).next().slidetoggle(300); }); });
矢印をクリックすると、ターゲットの次の要素の後のスパンを使用して関数が呼び出され、表示されます。 jqueryのslidetoggleを使用します。要素のスライド効果を表示または非表示にします。この関数にはアニメーション時間パラメータがあります。
最後に、デモ メニュー項目にはホバー効果があります。 ::after 疑似要素を使用します。コードは次のとおりです。
.menu-sidebar li > a::after { content: ""; display: block; height: 0.15em; position: absolute; top: 100%; width: 102%; left: 50%; transform: translate(-50%); background-image: linear-gradient(to right, transparent 50.3%, #fffa3b 50.3%); transition: background-position .2s .1s ease-out; background-size: 200% auto; } .menu-sidebar li > a:hover::after { background-position: -100% 0; }
この ::after 疑似要素には、高さと幅が 0.15em で、各リンクの下に絶対配置されたブロックレベルの要素が含まれています。線に背景色を適用するだけではなく、背景画像に linear-gradient() 関数を使用します。この関数の目的は色のグラデーションを作ることですが、パーセンテージを指定することで色のグラデーションを作ることができます。
.menu-sidebar li > a::after { background-image: linear-gradient(to right, transparent 50.3%, #FFFA3B 50.3%); }
ここの線の半分は透明で、残りの半分は黄色です。透明な部分がすべてのリンクの幅を占めるように、背景サイズを幅の 200% に渡します。
透明部分は他の色を使用することもできます。これにより、線が別の色で塗りつぶされたように見えますが、実際には 2 色の線にすぎません。
上記は、横スライド ナビゲーション メニュー code_jquery を実装するための jquery css の内容です。さらに関連した内容については、php 中国語 web サイト (www.php.cn) に注目してください。