Introduction:
Building a custom right-click menu is a great way to personalize user interactions on your website. This tutorial demonstrates how to create a custom context menu that appears at the exact spot where the user clicks, replacing the default browser menu.
Things You Will Learn:
- How to capture the right-click event
- How to prevent the browser’s default context menu
- How to position elements dynamically based on user interaction
- How to hide and show custom menus
Video Tutorial:
If you prefer to learn by watching a video tutorial over reading this lengthy blog post you can watch the video tutorial here down below. Also do not forget to subscribe to my YouTube channel where I post tips, tricks and tutorials related to web development regularly.
Project Folder Structure:
Now before we move on to actual coding we create a project folder structure. We name the project folder as – ‘Custom Right Click Menu | HTML, CSS & Javascript’. Within this folder we have 3 files. These files are:
- index.html
- style.css
- script.js
HTML:
We begin with the HTML code. Copy the code below and paste it into your HTML document.
<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Custom Right Click Menu</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div class="custom-menu" id="customMenu"> <ul> <li>Refresh</li> <li>Edit</li> <li>Delete</li> </ul> </div> <script src="script.js"></script> </body> </html>
CSS:
Time to bring some design to life! Add the following CSS code to your stylesheet.
body { background-color: #3d91f5; font-family: "Poppins", sans-serif; } .custom-menu { display: none; position: absolute; font-size: 20px; background-color: #ffffff; color: #020332; box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); z-index: 2000; border-radius: 10px; overflow: hidden; } .custom-menu ul { list-style: none; margin: 0; padding: 0; } .custom-menu ul li { padding: 10px 50px; cursor: pointer; transition: background 0.3s; } .custom-menu ul li:hover { background-color: #c7c8f5; }
JS:
Finally, we add functionality using Javascript. For this once again copy the code below and paste it into your script file.
const customMenu = document.getElementById("customMenu"); document.addEventListener("contextmenu", (event) => { event.preventDefault(); //Set positiom of the custom menu to where user clicked customMenu.style.top = `${event.pageY}px`; customMenu.style.left = `${event.pageX}px`; customMenu.style.display = "block"; }); document.addEventListener("click", () => { customMenu.style.display = "none"; });
Conclusion:
You created a custom right-click menu using JavaScript, allowing you to replace the browser’s default context menu with your own. This project demonstrated how to handle user interactions dynamically and enhance the functionality of a webpage. Add additional features, such as handling menu options, to further customize the user experience. Keep experimenting!