Creare un menu off-canvas con CSS3

by Code4Life

HTML

<div class="demo-content">
	<input type="checkbox" id="offcanvas-toggle" />
	<ul class="offcanvas">
		<li><a href="#">Lorem ipsum</a></li>
		<li><a href="#">Lorem ipsum</a></li>
		<li><a href="#">Lorem ipsum</a></li>
		<li><a href="#">Lorem ipsum</a></li>
		<li><a href="#">Lorem ipsum</a></li>
	</ul>
	<div class="wrapper">
		<nav>
			<label for="offcanvas-toggle">&equiv;</label>
		</nav>
		<div class="container">
			<h1>Offcanvas menu in CSS3</h1>
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Autem temporibus nisi beatae aperiam, similique quia voluptatibus, doloremque amet voluptatum pariatur fugiat ipsam iusto distinctio deserunt quam totam facere? Itaque, eaque?</p>
			<p>Sunt nostrum nisi at officiis non hic maxime asperiores laudantium necessitatibus nihil possimus, laborum nemo quod blanditiis optio iste voluptatum tempora, distinctio in? Aperiam velit accusamus placeat saepe possimus id.</p>
			<p>Modi nobis nulla magni animi voluptates debitis placeat dignissimos beatae eius sapiente, cupiditate ad, dolorum, impedit necessitatibus quod nisi. Magni, eum unde corporis esse dolorum architecto in voluptatem provident dolor?</p>
			<p>Ullam delectus, nobis distinctio. Laborum ex possimus esse dolore vitae atque voluptatem, quidem. Aliquid reprehenderit ab ipsum dolor, vitae possimus dolores magnam consequatur quaerat perspiciatis aut, totam asperiores, error iste.</p>
			<p>Aliquam iste sunt vitae repudiandae. Odit illo labore explicabo eligendi alias dolorum nostrum libero magnam perferendis laudantium voluptatibus ratione, provident saepe impedit, omnis eveniet magni itaque. Eligendi, reprehenderit fugit explicabo.</p>
		</div>
	</div>
</div>

<!-- Credits -->
<div class="credits">
	<a class="btn-credits" href="https://code4life.it/guide/creare-un-menu-off-canvas-con-css3/" target="_blank">Vedi articolo completo</a>
</div>

CSS

/*
 * TITLE:   Creare un menu off-canvas con CSS3
 * AUTHOR:  Code4Life
 * WEBSITE: https://code4life.it/
 * ARTICLE: https://code4life.it/guide/creare-un-menu-off-canvas-con-css3/
 */
 
/* Required snippet style */
.wrapper { transition: all 0.25s; }

.offcanvas {
	background: #33b5e5;
	bottom: 0;
	left: 0;
	padding: 4rem 0;
	position: fixed;
	top: 0;
	width: 320px;
	transform: translateX( -100% );
	transition: all 0.25s;
}

.offcanvas li { padding: 0 1rem; }

.offcanvas li a {
	color: #fff;
	display: block;
	padding: 1rem;
	text-decoration: none;
	transition: all 0.25s;
}

.offcanvas li a:hover { background: #185571; }

#offcanvas-toggle { display: none; }

#offcanvas-toggle:checked ~ .offcanvas { transform: translateX( 0 ); }

#offcanvas-toggle:checked ~ .wrapper { transform: translateX( 320px ); }

label[for="offcanvas-toggle"] {
	cursor: pointer;
	font-size: 3rem;
}

/* Demo style only */
.demo-content { margin-bottom: 70px; }

* {
	font-family: 'Roboto', sans-serif;
	margin: 0;
	padding: 0;
}

.container {
	margin: auto;
	padding: 5rem 0;
	width: 80%;
}

nav {
	background: #33b5e5;
	color: #fff;
	padding: .5rem 3rem;
}

h1 {
	font-size: 2.5rem;
	line-height: 1.1;
	margin-bottom: 1.5rem;
}

p {
	font-size: 1rem;
	line-height: 1.5;
	margin-bottom: 1rem;
}
 
/* Credits */
@import url( 'https://fonts.googleapis.com/css?family=Roboto:300' );
.credits { background: #F3F5F6; border: solid 1px #CFD6D9; bottom: 40px; left: 0; padding: 10px; position: fixed; right: 0; text-align: center; z-index: 1000; }
.btn-credits { border: 2px solid #33b5e5; border-radius: 10em; color: #33b5e5 !important; display: inline-block; font-family: 'Roboto', sans-serif; font-size: .8rem; line-height: 1.25; padding: .85rem 2.13rem;  text-decoration: none; text-transform: uppercase; transition: .2s ease-out; vertical-align: middle; }
.btn-credits:hover { background-color: #33b5e5; color: #fff !important; }