@substrate-system/hamburger-two
v0.0.13
Published
[](https://github.com/substrate-system/hamburger-two/actions/workflows/nodejs.yml) [
// programmatically open the menu
el?.isOpen = true
// listen for events, then change the class on our navigation element
el?.addEventListener(HamburgerTwo.event('open'), () => {
debug('menu is open...')
document.querySelector('.mobile-nav-menu')!.classList.add('open')
})
// or use .on, because this extends @substrate-system/web-component
el.on('open', ev => {
// ...
})
el?.addEventListener(HamburgerTwo.event('close'), () => {
debug('menu is closed...')
document.querySelector('.mobile-nav-menu')!.classList.remove('open')
})CSS
Only display on small screens. This needs to be part of the application code; it is not in this library.
hamburger-two {
display: none;
}
/* show/hide our menu */
.mobile-nav-menu {
display: none;
&.open {
display: flex;
}
}
@media (width < 680px) {
hamburger-two {
display: block;
}
}events
Typically you would use the tag in the DOM, then listen for events and show/hide a menu element in response.
open
HamburgerTwo.event('open')
// => 'hamburger-two:open'document.querySelector('hamburger-two')
.addEventListener(HamburgerTwo.event('open'), () => {
document
.querySelector('.mobile-nav-menu')
.classList
.add('open')
})close
HamburgerTwo.event('close')
// => 'hamburger-two:close'document.querySelector('hamburger-two')
.addEventListener(HamburgerTwo.event('close'), () => {
document
.querySelector('.mobile-nav-menu')
.classList
.remove('open')
})Example
See ./example.
// after registering the component
document.body.innerHTML += `
<hamburger-two></hamburger-two>
`
const el = document.querySelector('hamburger-two')
el?.addEventListener(HamburgerTwo.event('open'), () => {
debug('menu is open...')
document.querySelector('.mobile-nav-menu')!.classList.add('open')
})
el?.addEventListener(HamburgerTwo.event('close'), () => {
debug('menu is closed...')
document.querySelector('.mobile-nav-menu')!.classList.remove('open')
})Modules
This exposes ESM and common JS via
package.json exports field.
ESM
import { HamburgerTwo } from '@substrate-system/hamburger-two'Common JS
require('@substrate-system/hamburger-two')pre-built
This package exposes minified JS and CSS files too. Copy them to a location that is accessible to your web server, then link to them in HTML.
copy
cp ./node_modules/@substrate-system/hamburger-two/dist/index.min.js ./public/hamburger-two.min.js
cp ./node_modules/@substrate-system/hamburger-two/dist/style.min.css ./public/hamburger-two.cssHTML
<head>
<link rel="stylesheet" href="./hamburger-two.css">
</head>
<body>
<!-- ... -->
<script type="module" src="./hamburger-two.min.js"></script>
</body>CSS
Import CSS
import '@substrate-system/hamburger-two/css'Or minified:
import '@substrate-system/hamburger-two/css/min'Customize CSS via variables
You can redefine some CSS variables. --burger-open-color sets the color of
the close "x" button when the menu is open. Default is "white".
:root {
--burger-open-color: white;
--fade-in-time: 0.4s;
}test
Run some tests locally with tape-run.
npm testDevelop
Start a localhost server of the example page.
npm startSee also
- @substrate-system/hamburger The same thing, different style.
