コピペでできる!cssとhtmlのみで作るメニュー

CSS HTML
 2018.01.31
 2018.03.17

cssとhtmlのみで作るメニューパーツです。
シンプルなものからちょっと凝ったものまで集めました。

browser:  65 11 20 10 

cssとhtmlのみで作るメニューパーツ

縦並びのメニュー

ニャン易度
<ul>
	<li><a class="active" href="#home">Home</a></li>
	<li><a href="#news">News</a></li>
	<li><a href="#contact">Contact</a></li>
	<li><a href="#about">About</a></li>
</ul>
ul {
	width: 200px;
	margin: 0;
	padding: 0;
	list-style-type: none;
	background-color: #eeeeee;
}
li a {
	display: block;
	padding: 8px 16px;
	text-decoration: none;
	color: #000000;
}
li {
	text-align: center;
}
li:last-child {
	border-bottom: none;
}
li a.active {
	color: #ffffff;
	background-color: #da3c41;
}
li a:hover:not(.active) {
	color: #ffffff;
	background-color: #1b2538;
}

横並びのメニュー

ニャン易度
<ul>
	<li><a class="active" href="#home">Home</a></li>
	<li><a href="#news">News</a></li>
	<li><a href="#contact">Contact</a></li>
	<li><a href="#about">About</a></li>
</ul>
ul {
	list-style-type: none;
	margin: 0;
	padding: 0;
	overflow: hidden;
	background-color: #1b2538;
}
li {
	float: left;
	border-right: 1px solid #bbbbbb;
}
li:last-child {
	border-right: none;
}
li a {
	display: block;
	color: white;
	text-align: center;
	padding: 14px 16px;
	text-decoration: none;
}
li a:hover:not(.active) {
	background-color: #a9bce2;
}
.active {
	background-color: #da3c41;
}

横並びメニュー+サブメニュー

ニャン易度
<div class="cp_navi">
<ul>
	<li><a href="#">Home</a></li>
	<li>
		<a href="#">Products <span class="caret"></span></a>
		<div>
			<ul>
				<li><a href="#cat">cat</a></li>
				<li><a href="#dog">dog</a></li>
				<li><a href="#rabbit">rabbit</a></li>
			</ul>
		</div>
	</li>
	<li><a href="#">About</a></li>
	<li><a href="#">Help</a></li>
</ul>
</div>
.cp_navi {
	background-color: #ffffff;
	border: 1px solid #dedede;
	border-radius: 4px;
	box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.055);
	color: #888888;
	display: block;
	margin: 1em 1%;
	overflow: hidden;
	width: 100%;
}
.cp_navi ul {
	margin: 0;
	padding: 0;
}
.cp_navi ul li {
	display: inline-block;
	list-style-type: none;
	-webkit-transition: all 0.2s;
	        transition: all 0.2s;
}
.cp_navi > ul > li > a > .caret {
	border-top: 4px solid #aaaaaa;
	border-right: 4px solid transparent;
	border-left: 4px solid transparent;
	content: '';
	display: inline-block;
	height: 0;
	width: 0;
	vertical-align: middle;
	-webkit-transition: color 0.1s linear;
	        transition: color 0.1s linear;
}
.cp_navi > ul > li > a {
	color: #aaaaaa;
	display: block;
	line-height: 56px;
	padding: 0 10px;
	text-decoration: none;
}
.cp_navi > ul > li:hover {
	background-color: rgb(218, 60, 65);
}
.cp_navi > ul > li:hover > a {
	color: rgb( 255, 255, 255 );
}
.cp_navi > ul > li:hover > a > .caret {
	border-top-color: rgb( 255, 255, 255 );
}
.cp_navi > ul > li > div {
	background-color: rgb(218, 60, 65);
	border-top: 0;
	border-radius: 0 0 4px 4px;
	box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.055);
	display: none;
	margin: 0;
	opacity: 0;
	position: absolute;
	width: 165px;
	visibility: hidden;
	-webkit-transiton: opacity 0.2s;
	       transition: opacity 0.2s;
}
.cp_navi > ul > li:hover > div {
	display: block;
	opacity: 1;
	visibility: visible;
}
.cp_navi > ul > li > div ul > li {
	display: block;
}
.cp_navi > ul > li > div ul > li > a {
	color: #ffffff;
	display: block;
	padding: 12px 24px;
	text-decoration: none;
}
.cp_navi > ul > li > div ul > li:hover > a {
	background-color: rgba( 255, 255, 255, 0.1);
}

縦並びのメニューレスポンシブ対応

ニャン易度
<ul class="sidenav">
	<li><a class="active" href="#home">Home</a></li>
	<li><a href="#news">News</a></li>
	<li><a href="#contact">Contact</a></li>
	<li><a href="#about">About</a></li>
</ul>
ul.sidenav {
	list-style-type: none;
	margin: 0;
	padding: 0;
	width: 200px;
	background-color: #f1f1f1;
	position: relative;
	overflow: auto;
}
ul.sidenav li a {
	display: block;
	color: #000000;
	padding: 8px 16px;
	text-decoration: none;
}
ul.sidenav li a.active {
	background-color: #da3c41;
	color: white;
}
ul.sidenav li a:hover:not(.active) {
	background-color: #1b2538;
	color: white;
}
div.content {
	margin-left: 25%;
	padding: 1px 16px;
	height: 1000px;
}
@media screen and (max-width: 900px) {
	ul.sidenav {
		width: 100%;
		height: auto;
		position: relative;
	}
	ul.sidenav li a {
		float: left;
		padding: 15px;
	}
	div.content {
		margin-left: 0;
	}
}
@media screen and (max-width: 480px) {
	ul.sidenav li a {
		text-align: center;
		float: none;
	}
}

横並びのメニューレスポンシブ対応

ニャン易度
<ul class="topnav">
	<li><a class="active" href="#home">Home</a></li>
	<li><a href="#news">News</a></li>
	<li><a href="#contact">Contact</a></li>
	<li class="right"><a href="#about">About</a></li>
</ul>
ul.topnav {
	overflow: hidden;
	margin: 0;
	padding: 0;
	list-style-type: none;
	background-color: #1b2538;
}
ul.topnav li {
	float: left;
}
ul.topnav li a {
	display: block;
	padding: 14px 16px;
	text-align: center;
	text-decoration: none;
	color: white;
}
ul.topnav li a:hover:not(.active) {
	background-color: #a9bce2;
}
ul.topnav li a.active {
	background-color: #da3c41;
}
ul.topnav li.right {
	float: right;
}
@media screen and (max-width: 480px) {
	ul.topnav li.right, ul.topnav li {
		float: none;
	}
}

左からニュッと出るメニュー

ニャン易度
<div class="cp_navi">
<div id="cp_sidenav" class="sidenav">
	<a href="#" id="home">Home</a>
	<a href="#" id="news">News</a>
	<a href="#" id="contact">Contact</a>
	<a href="#" id="about">About</a>
</div>
</div>
*, *:before, *:after {
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
}
.cp_navi {
	position: relative;
	overflow: hidden;
	width: 360px;
	height:360px;
}
.cp_navi #cp_sidenav a {
	font-size: 20px;
	position: absolute;
	left: -95px;
	width: 110px;
	height: 54px;
	padding: 12px 15px;
	transition: 0.3s;
	text-decoration: none;
	color: #ffffff;
	border-radius: 0 5px 5px 0;
}
.cp_navi #cp_sidenav a:hover {
	left: -10px;
}
.cp_navi #home {
	top: 20px;
	background-color: #da3c41;
}
.cp_navi #news {
	top: 80px;
	background-color: #1b2538;
}
.cp_navi #contact {
	top: 140px;
	background-color: #2e9b72;
}
.cp_navi #about {
	top: 200px;
	background-color: #a62e7a;
}

丸いハンバーガーメニューからメニューが出る

ニャン易度
<input type="checkbox" id="cp_navimenuid">
<label class="menu" for="cp_navimenuid">

<div class="menubar">
	<span class="bar"></span>
	<span class="bar"></span>
	<span class="bar"></span>
</div>

<ul>
	<li><a id="home" href="#home">Home</a></li>
	<li><a id="about" href="#about">About</a></li>
	<li><a id="contact" href="#contact">Contact</a></li>
</ul>

</label>
*, *:before, *:after {
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
}
.menu {
	display: block;
	overflow: hidden;
	width: 60px;
	height: 60px;
	margin: 30px auto;
	cursor: pointer;
	-webkit-transition: all 0.5s ease-in-out;
	        transition: all 0.5s ease-in-out;
	border: 3px solid transparent;
	border-radius: 50%;
	background-color: #1b2538;
}
.menu div.menubar {
	width: 30px;
	margin: 17px auto;
}
.menu div.menubar .bar {
	display: block;
	width: 100%;
	height: 5px;
	margin-top: 3px;
	border-radius: 2px;
	background-color: #ffffff;
}
.menu ul {
	display: none;
	margin: 0;
	padding: 0;
	list-style-type: none;
	-webkit-transition: all 0.5s ease;
	        transition: all 0.5s ease;
	text-align: center;
	opacity: 0;
}
.menu ul li {
	display: inline-block;
}
.menu ul li a {
	display: inline-block;
	padding: 0.7em 0.5em;
	-webkit-transition: all 0.3s ease-in;
	        transition: all 0.3s ease-in;
	text-decoration: none;
	color: #1b2538;
	border-bottom: 4px solid transparent;
	height: 56px;
	line-height: 2em;
}
.menu ul li a:hover {
	color: #ffffff;
	background-color: #1b2538;
}
.menu ul li a:target {
	border-bottom-color: #1b2538;
}
/* クリックした時の動き */
#cp_navimenuid {
	display: none;
}
#cp_navimenuid:checked ~ .menu {
	width: 100%;
	height: 60px;
	border: 3px solid #1b2538;
	border-radius: 5px;
	background-color: transparent;
}
#cp_navimenuid:checked ~ .menu > ul {
	display: block;
	opacity: 1;
}
#cp_navimenuid:checked ~ .menu > .menubar {
	display: none;
}

copypet.jp

CSS3などで新たに追加された要素・装飾方法など、日々コードを書いていないと忘れてしまったり、ささっとプロトタイプを作る時などちょっとしたことに時間をかけている暇はない。そんな時に「あ〜、あれストックしときゃよかったなぁ」って困った自分用のストックブログです。カスタマイズなどがしやすいよう、昨今のweb制作に取り入れられる一般的なコードを中心に掲載しています。

More Info

こんな記事はいかがですか?