Giter Site home page Giter Site logo

larnera / flexmenu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 352media/flexmenu

0.0 2.0 0.0 198 KB

FlexMenu lets you create menu bars that automatically collapse into a drop-down to fit the space available.

HTML 40.01% CSS 23.02% JavaScript 36.97%

flexmenu's Introduction

#flexMenu 1.1.1 flexMenu is a jQuery plugin that lets you create responsive menus that automatically collapse into a "more" drop-down when they run out of space. When there's only space to display one or two items, all the items collapse into a "menu" drop-down.

Demo

Source on GitHub

Written by Ryan DeBeasi and our fantastic contributors.

##Usage

First, download flexmenu.js from GitHub or install it with bower install flexmenu. Then, add a script tag that references flexMenu. For example: <script src="flexmenu.js"></script>.

Create an unordered list that contains your menu items. In CSS, use display: inline-block; or float: left; to get the li elements to line up horizontally.

Finally, call flexMenu on an unordered list that contains your menu items:

$('ul.menu.flex').flexMenu();

##Dependencies

###jQuery I've tested the plugin in jQuery 1.7-1.9. It probably works on older versions, but I haven't tested on those.

###Modernizr Modernizr is optional. If it's available, flexMenu will use it to detect touch support. If touch support is available, we'll toggle the menu on click. If touch support is not available, we'll toggle the menu on hover in/out. That way, we can avoid triggering the funky simulated mouseover/mouseout that happens on many touchscreen devices.

If Modernizr is not available, we'll always toggle the menu on click.

The zip for flexMenu includes a build of Modernizr contains only touch detection and the has-js/no-js class. Feel free to use this build, or go with more full-featured build if you're using other features. Or, if you do want to always toggle the menu on click, there is no need to include Modernizr at all - just set up a js/no-js class and you'll be good to go.

##Advanced usage

If you're feeling fancy, you can include any of the following options when calling flexMenu:

###threshold (integer, defaults to 2) If there are this many items or fewer in the list, we will not display a "View More" link and will instead let the list break to the next line. This is useful in cases where adding a "view more" link would actually cause more things to break to the next line.

###cutoff (integer, defaults to 2) If there is space for this many or fewer items outside of our "more" popup, just move everything into the more menu. In that case, also use linkTextAll and linkTitleAll instead of linkText and linkTitle. To disable this feature, just set this value to 0.

###linkText (string, defaults to 'More') What text should we display on the "view more" link?

###linkTitle (string, defaults to 'View More') What should the title of the "view more" button be?

###linkTextAll (string, defaults to 'Menu') If we hit the cutoff and collapse all the links into the popup, what text should we display on the "menu" link?

###linkTitleAll (string, defaults to 'Menu') If we hit the cutoff and collapse all the links into the popup, what should the title of the "menu" link be?

###showOnHover (boolean, defaults to 'true') Should we we show the menu on hover? If not, we'll require a click. If we're on a touch device - or if Modernizr is not available - we'll ignore this setting and only show the menu on click. The reason for this is that touch devices emulate hover events in unpredictable ways, causing some taps to do nothing.

###undo (boolean, defaults to 'false') If this is true, we'll move the list items back to where they were before, and remove the "View More" link. This is useful if you actually do want list items to stack in some cases, or if you want to recalculate the menu.

###popupAbsolute (boolean, defaults to 'true') Should we absolutely position the popup? Usually this is a good idea. That way, the popup can appear over other content and spill outside a parent that has overflow: hidden set. If you want to do something different from this in CSS, just set this option to false.

##License

flexMenu is licensesed under the MIT License, and is free for commercial or personal use.

Copyright © 2012-2014 352 Inc. & Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

flexmenu's People

Contributors

bmcleod avatar dsh avatar peterbernardo avatar rdebeasi avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.