w3schools.com
THE WORLD'S LARGEST WEB DEVELOPER SITE
×
HTML and CSS
Learn HTML Learn CSS Learn W3.CSS Learn Colors Learn Bootstrap Learn Graphics Learn Icons Learn How ToJavaScript
Learn JavaScript Learn jQuery Learn jQueryMobile Learn AngularJS Learn JSON Learn AJAX Learn W3.JS Learn AppMLServer Side
Learn SQL Learn PHP Learn ASP Learn Node.jsWeb Building
Web Templates Web Statistics Web Certificates
×
HTML
HTML Tag Reference HTML Event Reference HTML Color Reference HTML Attribute Reference HTML Canvas Reference HTML SVG Reference Google Maps ReferenceCSS
CSS Reference CSS Selector Reference W3.CSS Reference Bootstrap Reference Icon Reference
×
Google
Google Maps Google Translate Google Charts Google Fonts
HOW TO
HowTo Home Slideshow Calendar Alert Buttons Animated Buttons Social Media Buttons Loading Buttons Modal Boxes Modal Images Lightbox Filter List Filter Table Sort List Sort Table JS Animations Progress Bars Skill Bar Tooltips Popups Responsive Tables HTML Includes To Do List Image Overlay Image Effects Full Page Image Hero Image Meet The Team Scroll To Top Button Loaders Overlay Effect Contact Chips Cards Profile Card Animated Search Alerts Notes Next/prev Equal Height Snackbar Toggle Switch Scroll Drawing Pricing Table Login Form Signup Form Contact Form Parallax Aspect Ratio Web Site 2016 Toggle Like/Dislike Toggle Hide/Show Toggle Class Arrows Animate Icons Countdown Timer Coming Soon Page Center Website Thumbnails TestimonialsMenus
Icon Bar Menu Icon Accordion Tabs Vertical Tabs Tab Headers Top Navigation Responsive Topnav Side Navigation Fullscreen Navigation Off-Canvas Menu Hover Sidenav Buttons Horizontal Scroll Menu Vertical Menu Fixed Menu Hover Dropdowns Click Dropdowns Pagination Breadcrumbs Button Group Vertical Button GroupConverters
Convert Weight Convert Temperature Convert Length Convert SpeedHow TO - Off-Canvas Menu
Learn how to create an off-canvas menu.
Create an Off-Canvas Menu
Step 1) Add HTML:
Example
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)"
class="closebtn" onclick="closeNav()">×</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Clients</a>
<a href="#">Contact</a>
</div>
<!-- Use any element to open the sidenav -->
<span onclick="openNav()">open</span>
<!-- Add all page content inside this div if you want the side nav to
push page content to the right (not used if you only want the sidenav to
sit on top of the page -->
<div id="main">
...
</div>
Step 2) Add CSS:
Example
/* The side navigation menu */
.sidenav {
height: 100%; /*
100% Full-height */
width: 0; /* 0 width - change this
with JavaScript */
position: fixed; /* Stay in place
*/
z-index: 1; /* Stay on top */
top: 0;
left: 0;
background-color: #111; /* Black*/
overflow-x: hidden; /* Disable horizontal scroll */
padding-top: 60px; /* Place content 60px from the top */
transition: 0.5s; /* 0.5 second transition effect to slide in the sidenav */
}
/* The navigation menu links */
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s
}
/* When you mouse over the navigation links,
change their color */
.sidenav a:hover, .offcanvas a:focus{
color: #f1f1f1;
}
/* Position and style the close button (top
right corner) */
.sidenav .closebtn {
position:
absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
/* Style page content - use this if you want to push the page content to
the right when you open the side navigation */
#main {
transition: margin-left .5s;
padding: 20px;
}
/* On smaller screens, where height is less than
450px, change the style of the sidenav (less padding and a smaller font
size) */
@media screen and (max-height: 450px) {
.sidenav
{padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
Step 3) Add JavaScript:
Off-Canvas Menu
/* Set the width of the side navigation to 250px and the left margin of the
page content to 250px */
function
openNav() {
document.getElementById("mySidenav").style.width
= "250px";
document.getElementById("main").style.marginLeft
= "250px";
}
/* Set the width of the side navigation to 0 and the
left margin of the page content to 0 */
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
}
Try it Yourself »
The example below also slides in the side navigation, and pushes the page content to the right, only this time, we add a black background color with a 40% opacity to the body element, to "highlight" the side navigation:
Off-Canvas Menu w/ opacity
/* Set the width of the side navigation to 250px and the left margin of the
page content to 250px and add a black background color to body */
function
openNav() {
document.getElementById("mySidenav").style.width
= "250px";
document.getElementById("main").style.marginLeft
= "250px";
document.body.style.backgroundColor = "rgba(0,0,0,0.4)";
}
/* Set the width of the side navigation to 0 and the
left margin of the page content to 0, and the background color of body to
white */
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
document.body.style.backgroundColor = "white";
}
Try it Yourself »
Tip: Go to our CSS Navbar Tutorial to learn more about navigation bars.
×
Your Suggestion:
×
Thank You For Helping Us!
Your message has been sent to W3Schools.
W3Schools is optimized for learning, testing, and training. Examples might be simplified to improve reading and basic understanding.
Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content.
While using this site, you agree to have read and accepted our terms of use,
cookie and privacy policy.
Copyright 1999-2017 by Refsnes Data. All Rights Reserved.
Powered by W3.CSS.
Powered by W3.CSS.
