Elegant Context Menu Inspired By Material Design
File Size: | 20.8 KB |
---|---|
Views Total: | 1332 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

This is a jQuery plugin that creates an animated, Android (Material Design) inspired popup menu to replace the native browser context (right-click) menu on any element within the document.
More Features:
- Smooth open/close animations based on CSS transitions.
- Semantic markup and SEO-friendly.
- Custom trigger events: right click, left click, middle click, etc.
- Allows you dynamically add items to the context menu.
- Easy to customize the styles with SCSS variables.
- Easy to implement without any JS call.
How to use it:
1. Load the complied stylesheet in the header of the document.
<link rel="stylesheet" href="./dist/jquery.context-menu.min.css" />
2. Insert menu items into an HTML unordered list named 'context-menu-content'.
<ul class="context-menu-content"> <li> <a href="#"> Menu 1 </a> </li> <li> <a href="#"> Menu 2 </a> </li> <li> <a href="#"> Menu 3 </a> </li> ... </ul>
3. Insert the menu list into a container in which you want to display the context menu and then determine the trigger event using the following CSS classes:
- .context-menu-trigger: required CSS class
- .context-menu-button-right: right click
- .context-menu-button-middle: middle click
<div class="context-menu-trigger context-menu-button-right"> <ul class="context-menu-content"> <li> <a href="#"> Menu 1 </a> </li> <li> <a href="#"> Menu 2 </a> </li> <li> <a href="#"> Menu 3 </a> </li> ... </ul> Left Click Menu </div>
4. Load jQuery library and the jQuery context-menu.js script at the end of the document. That's it.
<script src="/path/to/cdn/jquery.min.js"></script> <script src="./dist/jquery.context-menu.min.js"></script>
5. You can also append the context menu to a container using JavaScript:
// create a new context menu instance var contextMenu = $('#your-container').contextMenu(); // determine the trigger event contextMenu.button = mouseButton.LEFT; // add an item to the context menu contextMenu.menu().addItem('This is <b>first</b> item!'); // add an item with callback function contextMenu.menu().addItem('This is <u>Third</u> item', function () { alert('Hello world!'); }); // remove an item contextMenu.menu().addItem('Click to delete me!', function () { contextMenu.menu().removeItem(1); }); // change trigger button contextMenu.menu().addItem('Change trigger: <b>Mouse LEFT</b>', function () { contextMenu.button = mouseButton.LEFT; contextMenu.update(); }); // event handlers // onclick contextMenu.menu().addItem('onclick event', function () { contextMenu.onclick = function () { $('#log').append('You are clicked!<br>'); this.close(); } }); // onopen contextMenu.menu().addItem('onopen event', function () { contextMenu.onopen = function () { $('#log').append('Context menu opened!<br>'); } }); // initialize the context menu contextMenu.init();
6. To customize the styles, override the default variables in the jquery.context-menu.scss
as follows:
$context-menu-font-family: -apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto, Helvetica, Arial, sans-serif !default; $context-menu-font-weight: 400 !default; $context-menu-margin: 4px !default; $context-menu-padding: 12px 0px !default; $context-menu-border: none !default; $context-menu-border-radius: 3px !default; $context-menu-background: #ecf0f1 !default; $context-menu-foreground: #2c3e50 !default; $context-menu-shadow: 0px 4px 8px rgb(44, 62, 80, 0.4) !default; $context-menu-min-width: 140px !default; $context-menu-max-width: 280px !default; $context-menu-max-height: 480px !default; $context-menu-item-margin: 0px !default; $context-menu-item-padding: 8px 18px !default; $context-menu-item-cursor: pointer !default; $context-menu-item-background: $context-menu-background !default; $context-menu-item-foreground: $context-menu-foreground !default; $context-menu-item-hover-background: rgba(0, 0, 0, 0.05) !default; $context-menu-item-hover-foreground: $context-menu-foreground !default; $context-menu-item-transition: none !default;
This awesome jQuery plugin is developed by isaeken. For more Advanced Usages, please check the demo page or visit the official website.