okayNavは横幅に応じてメニュー数が変動するナビゲーションです。
レスポンシブなナビゲーションで、横幅を変えると表示されるメニュー数が変動します。
レスポンシブデザインで、横幅が一定以下になるとメニューが隠れるデザインはよくありますが、隠れたメニューはクリックしないと表示されないため、ユーザーにとっては使いにくいものになってしまいます。隠すメニューは少ないほどいいはずです。
okayNavでは、横幅に応じて自動的に最低限のメニューのみが隠れるようになっています。常に最大数のメニューが初期表示される、ユーザーフレンドリーなUXです。
デモ
デモページを用意しました。
ダウンロード
Download ZIPからダウンロードできます。
実装方法
HTMLを用意します。
<header id="header"> <a class="site-logo" href="#"> Logo </a> <nav role="navigation" id="nav-main" class="okayNav"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Shop</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Services</a></li> <li><a href="#">Contacts</a></li> <li><a href="#">About us</a></li> <li><a href="#">Testimonials</a></li> </ul> </nav> </header>
CSSを読み込みます。ダウンロードしたzipの app > css フォルダにあります。
<link href="css/header.css"/ rel="stylesheet"> <link href="css/okayNav.css"/ rel="stylesheet"> <link href="css/basic-styles.css"/ rel="stylesheet">
jQueryと、jquery.okayNav.jsを読み込みます。jquery.okayNav.jsはダウンロードしたzipの app > jsフォルダにあります。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="js/jquery.okayNav.js"></script>
id=”nav-main”に対して、scriptを実行します。body閉じタグの直前に挿入します。
<script> var navigation = $('#nav-main').okayNav(); </script> </body>
以上で、完了です。
オプションも色々と用意されています。
var navigation = $('#nav-main').okayNav({ parent : '', // will call nav's parent() by default toggle_icon_class : 'okayNav__menu-toggle', toggle_icon_content: '<span /><span /><span />', align_right: true, // If false, the menu and the kebab icon will be on the left swipe_enabled: true, // If true, you'll be able to swipe left/right to open the navigation threshold: 50, // Nav will auto open/close if swiped >= this many percent beforeOpen : function() {}, // Will trigger before the nav gets opened afterOpen : function() {}, // Will trigger after the nav gets opened beforeClose : function() {}, // Will trigger before the nav gets closed afterClose : function() {}, // Will trigger after the nav gets closed itemHidden: function() {}, // Will trigger after an item moves to the hidden navigation itemDisplayed: function() {} // Will trigger after an item moves to the visible navigation });