document.getElementByIdで、アイコンがクリックされた際に、document.body.className = ‘menu-open’とdocument.body.className = ”を返します。なお、font-awesomeはCDNで取得します。
https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Top Menu Tab</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body {
padding: 0;
margin: 0;
font-family: Verdana, sans-serif;
background: #eee;
color: #333;
padding: 8px;
box-sizing: border-box;
width: 100%;
height: 100%;
overflow-x: hidden;
}
#cover {
background: #000;
opacity: 0.6;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left:0;
z-index:1;
display: none;
}
#menu {
z-index:2;
position: absolute;
top: 0;
right: -180px;
color: #fff;
background: #4c81e9;
padding: 8px;
box-sizing: border-box;
width: 180px;
min-height: 100%;
transition: .4s;
}
#show, #hide {
float: right;
cursor: pointer;
}
body.menu-open {
overflow-y: hidden;
}
body.menu-open #cover {
display: block;
}
body.menu-open #menu {
right: 0;
}
</style>
</head>
<body>
<i class="fa fa-bars" id="show"></i>
<h1>Hello</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque eveniet eius repudiandae aut, dolorum amet beatae distinctio quam, nemo minus, velit quod assumenda. Magnam distinctio fugiat in expedita officiis vitae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque eveniet eius repudiandae aut, dolorum amet beatae distinctio quam, nemo minus, velit quod assumenda. Magnam distinctio fugiat in expedita officiis vitae.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque eveniet eius repudiandae aut, dolorum amet beatae distinctio quam, nemo minus, velit quod assumenda. Magnam distinctio fugiat in expedita officiis vitae.</p>
<div id="cover"></div>
<div id="menu">
<i class="fa fa-times" id="hide"></i>
<ul>
<li>Menu</li>
<li>Menu</li>
<li>Menu</li>
<li>Menu</li>
<li>Menu</li>
</ul>
</div>
<script>
(function(){
'use strict';
var show = document.getElementById('show');
var hide = document.getElementById('hide');
show.addEventListener('click', function(){
document.body.className = 'menu-open'
});
hide.addEventListener('click', function(){
document.body.className = ''
});
})();
</script>
</body>
</html>