jquery ドロワー スマートフォン drawer

ウィンドウ: 480px以下でドロワー表示

<main>
	<div>テキスト テキスト テキスト</div>
	<!-- 以下ドロワー -->
	<div id="sp_content">
		<div id="overlay"></div>
		<div id="humberger">
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
		</div>
		<div id="drawer">
			<li>Menu1</li>
			<li>Menu2</li>
			<li>Menu3</li>
		</div>
	</div>
</main>
/* ドロワー */
#drawer {
	width: 280px;
	height: 100%;
	position: fixed;
	top: 0;
	right: -280px;
	z-index: 1;
	padding-top: 40px;
	color: #fff;
	background: green;
	transition: all 400ms cubic-bezier(1.000, 0.000, 0.000, 1.000);
	transition-timing-function: cubic-bezier(1.000, 0.000, 0.000, 1.000);
}

@media screen and (max-width: 480px) {
	/* スマホパーツ 外包*/
	#sp_content {
		position: relative;
		left: 0;
		z-index: 2;
		background: #fff;
		transition: all 400ms cubic-bezier(1.000, 0.000, 0.000, 1.000);
		transition-timing-function: cubic-bezier(1.000, 0.000, 0.000, 1.000);
	}
	.drawer_open #sp_content {
		left: -280px;
		box-shadow: 1px 0 2px #000;
		-webkit-box-shadow: 1px 0 2px #000;
	}

	/* ハンバーガーアイコン */
	#humberger {
		width: 30px;
		position: fixed;
		top: 10px;
		right: 10px;
		z-index: 3;
		padding: 7px 7px 0;
		border: 1px solid #ccc;
		border-radius: 5px;
		background: #fff;
		cursor: pointer;
	}
	#humberger .icon-bar {
		display: block;
		height: 2px;
		background: #333;
		margin-bottom: 7px;
		transition: all 400ms cubic-bezier(1.000, 0.000, 0.000, 1.000);
		transition-timing-function: cubic-bezier(1.000, 0.000, 0.000, 1.000);
	}
	.drawer_open #humberger :nth-child(1) {
		transform:translate(0, 8px) rotate(45deg);
	}
	.drawer_open #humberger :nth-child(2) {
		transform:translate(-20px, 0);
		opacity:0;
	}
	.drawer_open #humberger :nth-child(3) {
		transform:translate(0, -9px) rotate(-45deg);
	}

	/* オーバーレイ */
	#overlay {
		z-index: -1;
		opacity: 0;
		left: 0;
		top: 0;
		width: 100%;
		height: 100%;
		position: fixed;
		transition: all 400ms cubic-bezier(1.000, 0.000, 0.000, 1.000);
		transition-timing-function: cubic-bezier(1.000, 0.000, 0.000, 1.000);
	}
	.drawer_open #overlay {
		z-index: 3;
		left: -280px;
		opacity: 0.3;
		background: #000;
	}

	/* ドロワー */
	.drawer_open #drawer {
		right: 0;
	}
}
onload = function() {
	var touch = false;
	$('#humberger').on('click touchstart', function(e){
		switch (e.type) {
			case 'touchstart':
				drawerToggle();
				touch = true;
				return false;
			break;
			case 'click':
				if(!touch)
					 drawerToggle();
				return false;
			break;
		}
		function drawerToggle(){
			$('body').toggleClass('drawer_open');
			touch = false;
		}
	})
	$('#overlay').on('click touchstart', function() {
		$('body').removeClass('drawer_open');
	})
}
PAGE TOP