UNPKG

toggle-js

Version:

A simple toggle script for menus, accordions, navigation, and more.

230 lines (201 loc) 5.93 kB
<!doctype html> <html lang="en-US"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>Toggle Recipe – Dropdown Menu</title> <!-- Stylesheets --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/styles/default.min.css"> <link rel="stylesheet" href="examples.css"> <style type="text/css"> /* Hide collapsed */ [aria-expanded="false"] { display: none; } /* Horizontal menu */ .menu > ul > li { display: inline-block; } /* Dropdown menus */ .toggle-parent { position: relative; } .toggle-parent > ul { left: 0; position: absolute; top: 100%; } /* Deep dropdown menus (pop-out right) */ .toggle-parent .toggle-parent > ul { left: 100%; top: 0; } /* Add icon to parents */ .toggle-parent > a::after { content: '\f107'; /* Font Awesome 'angle-down' */ display: inline-block; font-family: 'FontAwesome'; margin-left: 0.5rem; transition: transform 0.3s ease; } /* Add different icon to deep parents */ .toggle-parent .toggle-parent > a::after { content: '\f105'; /* Font Awesome 'angle-right' */ } /* Flip the icon */ .toggle-parent > a.toggle-btn-active::after { transform: rotate(180deg); } </style> <!-- /Stylesheets --> </head> <body> <!-- HTML --> <header class="navbar"> <div class="container"> <nav class="menu horizontal"> <ul> <li> <a href="#">Pie</a> <ul> <li><a href="#">Apple Pie</a></li> <li> <a href="#">Cherry Pie</a> <ul> <li><a href="#">With Pastry Crust</a></li> <li><a href="#">With Graham Cracker Crust</a></li> </ul> </li> <li><a href="#">Pumpkin Pie</a></li> <li><a href="#">Chocolate Pie</a></li> </ul> </li> <li> <a href="#">Cake</a> <ul> <li> <a href="#">Vanilla Cake</a> <ul> <li><a href="#">With Vanilla Icing</a></li> <li><a href="#">With Chocolate Icing</a></li> <li><a href="#">With Sprinkles</a></li> </ul> </li> <li><a href="#">Chocolate Cake</a></li> <li><a href="#">Fruit Cake</a></li> </ul> </li> <li><a href="#">Ice Cream</a></li> </ul> </nav> </div> </header> <!-- /HTML --> <!-- Source code --> <main class="container"> <h1>Script</h1> <pre><code>var toggle = new Toggle({ blur: true, buttonClassExpanded: 'toggle-btn-active', buttonSelector: 'a', parentClass: 'toggle-parent', singleSibling: true, targetSelector: '.menu ul ul' })</code></pre> <h1>HTML</h1> <pre><code>&lt;nav class="menu"&gt; &lt;ul&gt; &lt;li&gt; &lt;a href="#"&gt;Pie&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;Apple Pie&lt;/a&gt;&lt;/li&gt; &lt;li&gt; &lt;a href="#"&gt;Cherry Pie&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;With Pastry Crust&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;With Graham Cracker Crust&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Pumpkin Pie&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Chocolate Pie&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt; &lt;a href="#"&gt;Cake&lt;/a&gt; &lt;ul&gt; &lt;li&gt; &lt;a href="#"&gt;Vanilla Cake&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;With Vanilla Icing&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;With Chocolate Icing&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;With Sprinkles&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Chocolate Cake&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Fruit Cake&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;Ice Cream&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/nav&gt;</code></pre> <h1>CSS</h1> <pre><code>/* Hide collapsed */ [aria-expanded="false"] { display: none; } /* Horizontal menu */ .menu > ul > li { display: inline-block; } /* Dropdown menus */ .toggle-parent { position: relative; } .toggle-parent > ul { left: 0; position: absolute; top: 100%; } /* Deep dropdown menus (pop-out right) */ .toggle-parent .toggle-parent > ul { left: 100%; top: 0; } /* Add icon to parents */ .toggle-parent > a::after { content: '\f107'; /* Font Awesome 'angle-down' */ display: inline-block; font-family: 'FontAwesome'; margin-left: 0.5rem; transition: transform 0.3s ease; } /* Add different icon to deep parents */ .toggle-parent .toggle-parent > a::after { content: '\f105'; /* Font Awesome 'angle-right' */ } /* Flip the icon */ .toggle-parent > a.toggle-btn-active::after { transform: rotate(180deg); }</code></pre> </main> <!-- /Source code --> <!-- Script --> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script src="toggle.js"></script> <script> // Create the toggle var toggle = new Toggle({ blur: true, buttonClassExpanded: 'toggle-btn-active', buttonSelector: 'a', parentClass: 'toggle-parent', singleSibling: true, targetSelector: '.menu ul ul' }) </script> <!-- /Script --> </body> </html>