All Projects → aullah → Quickmenu

aullah / Quickmenu

Licence: mit
The new era of mobile navigation for the web, we're out of hamburgers.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Quickmenu

Slinky
A light-weight, responsive, mobile-like navigation menu plugin
Stars: ✭ 649 (+445.38%)
Mutual labels:  mobile, navigation, menu, sass
Cirrus
☁️ The CSS framework for the modern web.
Stars: ✭ 716 (+501.68%)
Mutual labels:  scss, sass, responsive, front-end
ml-stack-nav
Customizable, responsive, accessible, easy-to-use multi-level stack navigation menu with slide effect.
Stars: ✭ 20 (-83.19%)
Mutual labels:  navigation, responsive, menu
Input Range Scss
Styling Cross-Browser Compatible Range Inputs with Sass
Stars: ✭ 272 (+128.57%)
Mutual labels:  scss, sass, front-end
Motherplate
A bare bones responsive SCSS boilerplate for web designers
Stars: ✭ 392 (+229.41%)
Mutual labels:  mobile, scss, sass
Lightning Admin Angular
A mobile first design of a responsive admin template built with angular and bootstrap
Stars: ✭ 107 (-10.08%)
Mutual labels:  scss, sass, responsive
priority-plus
A modern implementation of the priority plus navigation pattern.
Stars: ✭ 30 (-74.79%)
Mutual labels:  navigation, responsive, menu
Sidr
Sidr is a jQuery plugin for creating side menus and the easiest way for doing your menu responsive.
Stars: ✭ 2,924 (+2357.14%)
Mutual labels:  navigation, menu, responsive
Fast
Develop, build, deploy, redeploy, and teardown frontend projects fast.
Stars: ✭ 126 (+5.88%)
Mutual labels:  scss, sass, front-end
Waffle Grid
An easy to use flexbox grid system.
Stars: ✭ 602 (+405.88%)
Mutual labels:  scss, sass, responsive
Light Blue Dashboard
🔥 Free and open-source admin dashboard template built with Bootstrap
Stars: ✭ 110 (-7.56%)
Mutual labels:  scss, sass, responsive
Bootstrap Dark
The Definitive Guide to Dark Mode and Bootstrap 4 - A proof of concept
Stars: ✭ 54 (-54.62%)
Mutual labels:  scss, responsive, front-end
Hc Offcanvas Nav
JavaScript library for creating toggled off-canvas multi-level navigations, allowing endless nesting of submenu elements, supporting swipe gestures, keyboard interactions and ARIA attributes.
Stars: ✭ 201 (+68.91%)
Mutual labels:  mobile, navigation, menu
Responsive Sidebar Navigation
An easy-to-integrate side, vertical navigation, ideal for dashboards and admin areas.
Stars: ✭ 111 (-6.72%)
Mutual labels:  navigation, scss, responsive
Rfs
✩ Automates responsive resizing ✩
Stars: ✭ 2,789 (+2243.7%)
Mutual labels:  scss, sass, responsive
Mini.css
A minimal, responsive, style-agnostic CSS framework!
Stars: ✭ 2,938 (+2368.91%)
Mutual labels:  sass, responsive, front-end
Refills
Refills is maintained by the thoughtbot design team. It is funded by thoughtbot, inc. and the names and logos for thoughtbot are trademarks of thoughtbot, inc.
Stars: ✭ 1,523 (+1179.83%)
Mutual labels:  scss, sass, front-end
Mq Scss
Extremely powerful Sass media query mixin. Allows you to create almost any media query you can imagine.
Stars: ✭ 122 (+2.52%)
Mutual labels:  scss, sass, responsive
Long Haul
A minimal, type-focused Jekyll theme.
Stars: ✭ 524 (+340.34%)
Mutual labels:  navigation, scss, sass
React Responsive Navbar
Nothing crazy, nothing flashy, just a simple, flexible & completely customisable responsive navigation bar component.
Stars: ✭ 42 (-64.71%)
Mutual labels:  navigation, menu, responsive

Quick Menu

The new forward-thinking standard of mobile navigation for the web, providing an unparalleled user experience. Everything is in thumb's reach. No need to stretch or use a second hand to open a hamburger menu.

Demo illustrating the Quick Menu in action.

Contents

Key Features

  • Themeable with support for both light and dark mode based on user's device preference.
  • Mobile landscape orientation supported and tested up to Apple iPhone 12 Pro Max and Samsung Galaxy S20 Ultra.
  • Compatible with mobile devices with non-rectangular screens, i.e. notches and gesture areas.
  • Menu wording and content all customisable in HTML.
  • Responsive for mobile, tablet and desktop. Desktop will render a basic inline navigation.
  • SEO friendly. No need to duplicate navigation links for each device type and content display controlled purely via CSS.
  • No development dependencies, libraries or prerequisites required.

Live Demo

You can find a live demo at quickmenu.org.

Ensure you're on a mobile or tablet device to trial the Quick Menu, otherwise the desktop mode will be rendered which is an inline navigation.

Installation

Quick Start via CDN

For a quick and simple way to implement the Quick Menu into your project, we can use the free open source jsDelivr CDN.

The customisation capabilities are reduced by using a CDN, however you should still be able to make modifications by overwriting the Quick Menu styling properties in your own custom CSS.

<!-- Latest compiled CSS. To be placed in the <head> above over stylesheets. -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/quickmenu.min.css" rel="stylesheet" integrity="sha384-cgCuPlQWxTOydBb7K003NbZr2kylNPA7Mx7YMYtQPKu/co0fkW9E1mPMmqy2xJ/8" crossorigin="anonymous">

<!-- Latest compiled JS. To be placed before the closing <body> tag above over scripts. -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/quickmenu.min.js" integrity="sha384-J+7UVhxvYUPTb1N2qLj0dvniUcy8M1Ssxsic1xFI31naqNI4KlXP+r4D5eLVxhgg" crossorigin="anonymous"></script>

We recommend placing the stylesheet before any of your own custom stylesheets, which will ensure your customisations take precedence where possible. Similarly, it's required to place the script before any of your own custom scripts too.

NPM

The Quick Menu can be installed as a Node.js module into your project using NPM with the following command:

npm install quickmenu

Using a module bundler such as Webpack, import Quick Menu's JavaScript into your JS file (e.g. usually main.js or app.js):

import QuickMenu from "quickmenu";

Then for complete customisation, import Quick Menu's pre-compiled Sass into your .scss file: (Depending on your project file structure, you may need to prepend ../ appropriately to the import rule.)

@import "node_modules/quickmenu/src/scss/quickmenu";

Or alternatively you may import the ready-to-use compiled css (via a bundler, e.g. Webpack):

import "quickmenu/dist/css/quickmenu.min.css";

Usage

JavaScript

new QuickMenu(); // To initialise the Quick Menu.

HTML Examples

When in responsive mode for mobiles and tablets, the menu is fixed at the bottom of the screen within thumb reach. For desktops a regular inline menu is displayed, therefore you should place the HTML code where you want the navigation to be positioned for desktop visitors.

Utmost Minimal

<!-- Utmost Minimal -->
<nav class="quick-menu navigation">
    <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/about">About</a></li>
        <li><a href="/work">Work</a></li>
        <li><a href="/contact">Contact</a></li>
    </ul>
</nav>

Minimal: Renaming Quick Menu Button

<!-- Minimal: Renaming Quick Menu Button -->
<div class="quick-menu navigation">
    <div class="button">My Menu</div>
    <nav>
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/about">About</a></li>
            <li><a href="/work">Work</a></li>
            <li><a href="/contact">Contact</a></li>
        </ul>
    </nav>
</div>

Minimal: Renaming Close Button

<!-- Minimal: Renaming Close Button -->
<div class="quick-menu navigation">
    <div class="menu">
        <nav>
            <ul>
                <li><a href="/">Home</a></li>
                <li><a href="/about">About</a></li>
                <li><a href="/work">Work</a></li>
                <li><a href="/contact">Contact</a></li>
            </ul>
        </nav>
        <div class="menu-close">Dismiss</div>
    </div>
</div>

Full Fledged

<!-- Full Fledged: including FontAwesome icons, menu heading content, customised wording on open and close buttons. -->
<div class="quick-menu navigation">
    <div class="button"><i class="fas fa-bars"></i> My Menu</div>
    <div class="menu">
        <div class="menu-heading">
            <i class="far fa-compass"></i>
            <span>My Menu</span>
            <p>Explore the contents of this site by jumping around using the following handy menu.</p>
        </div>
        <hr>
        <nav>
            <ul>
                <li><a href="/"><i class="fas fa-home qm-only"></i>Home</a></li>
                <li><a href="/about"><i class="far fa-user-circle qm-only"></i>About</a></li>
                <li><a href="/work"><i class="fas fa-briefcase qm-only"></i>Work</a></li>
                <li><a href="/contact"><i class="far fa-paper-plane qm-only"></i>Contact</a></li>
            </ul>
        </nav>
        <div class="menu-close">Dismiss</div>
    </div>
</div>

The .qm-only Class

As a part of your requirements you may need to present additional content or features (e.g. such as a search field) inside the Quick Menu. You can embed additional content inside the .menu div (as illustrated in the "Minimal: Renaming Close Button" and "Full Fledged" HTML examples above).

To ensure that the additional content you insert only appears inside the Quick Menu for mobile and tablet devices and is not present on desktops, you can add the qm-only class to HTML elements.

CSS Customisations

The Quick Menu has been designed to balance providing minimal styling whilst still offering a ready-made solution, therefore even if you're using this package via a CDN you are still able to customise the styling properties. By targeting specific elements in your own custom CSS, you can overwrite the default values.

To ensure your custom CSS takes precedence, place the Quick Menu CSS before (i.e. above) your own stylesheet in your HTML document. The use of the !important property should be unnecessary when following these rules as none have been applied in the Quick Menu CSS.

Selectors

.quick-menu.navigation .button { /* The 'Quick Menu' floating button */ }
.quick-menu.navigation .menu { /* The entire menu container */ }
.quick-menu.navigation .menu .menu-heading { /* The heading content (i.e. top part) within the menu from the 'Full Fledged' example */ }
.quick-menu.navigation .menu .menu-close { /* The close button */ }
.quick-menu.navigation .menu nav ul li { /* The container for a single navigation link */
    min-width: 100px; /* The width of a link. You may adjust this to a fixed value or a % to ensure all items are of equal width. */
}
.quick-menu.navigation .menu nav ul li a { /* The actual hyperlink. */ }

Sass Customisations

By importing the pre-compiled Sass source files into your project, you can take additional advantage of configuring the Quick Menu to your preference/requirements. All custom and additional styling should still be incorporated in your own SCSS file(s) however, to retain the independence of the Quick Menu package and ensuring it can continue to be updated without conflicts.

Variable Defaults

All Quick Menu Sass variables are defined followed with a !default property, which ensures that if the variable has not been declared in your custom SCSS then the default value will be assigned. This enables your variables to take precedence without the need to modify the Quick Menu package.

Your variables should be set before importing the Quick Menu SCSS. For example:

// Your customisations
$backdrop-bg: rgba(255, 255, 255, 0.5);
$nav-item-width: 120px;

// Import Quick Menu SCSS
@import "node_modules/quickmenu/src/scss/quickmenu";

Available Variables

To view all the variables available for your customisation, please explore the 'src/scss/_variables.scss' file.

You should copy and paste the variables you need to modify into your own SCSS file, change the value(s) appropriately and then remove the !default property.

Modifying Device Breakpoints

Naturally by default a mobile version of the Quick Menu will appear for mobile devices, therefore there is only the need to define breakpoints for the tablet and desktop.

Following the above documentation of altering variables, we can also modify Sass maps (and in our case, device breakpoints) in a similar order. For example:

// Your customisations
$menu-breakpoints: (
    tablet: 768px,
    desktop: 1200px
);

// Import Quick Menu SCSS
@import "node_modules/quickmenu/src/scss/quickmenu";

Contributing

We appreciate your contributions to making this a better project for all of us. Please see our Contributing Guide for more details.

During participation on the Quick Menu project, we maintain a Code of Conduct which we require all individuals to adhere to.

To-Do / Future Plans

  • Remove FontAwesome specific styling and ensure compatibility with any iconography.
  • Provide the ability to toggle themes manually.
  • Implement the ability to have sub-menus for both desktop and mobile devices.

Credits / References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].