ヘッダーなどに追加するドロップダウンメニューのソースコードをご紹介!

ドロップダウンメニューの仕様

PC版ではhoverでメニューが開きます。

スマホ版はタップしてください。

ドロップダウンメニュー表示

ドロップダウンメニュースマホでの表示

スマホ用で確認すると下記のような表示になります。

ドロップダウンメニューのソースコード例

<div class="dropdown01">
	<ul class="level01">
		<li>
			<a href="#">メニュー1</a>
		</li>
		<li>
			<a href="#">メニュー2</a>
		</li>
		<li class="has-child icon-down">
			<span>メニュー3</span>
			<ul class="level02">
				<li>
					<a href="#">メニュー3-1</a>
				</li>
				<li>
					<a href="#">メニュー3-2</a>
				</li>
				<li>
					<a href="#">メニュー3-3</a>
				</li>
				<li>
					<a href="#">メニュー3-4</a>
				</li>
				<li>
					<a href="#">メニュー3-5</a>
				</li>
			</ul>
		</li>
		<li>
			<a href="#">メニュー4</a>
		</li>
		<li>
			<a href="#">メニュー5</a>
		</li>
		<li class="has-child icon-down">
			<span>メニュー6</span>
			<ul class="level02">
				<li>
					<a href="#">メニュー6-1</a>
				</li>
				<li>
					<a href="#">メニュー6-2</a>
				</li>
				<li>
					<a href="#">メニュー6-3</a>
				</li>
				<li>
					<a href="#">メニュー6-4</a>
				</li>
			</ul>
		</li>
	</ul>
</div>
.icon-down {
    position: relative;
}
.icon-down::before {
    content: "";
    position: absolute;
    top: 20px;
    right: 15px;
    width: 6px;
    height: 6px;
    border-top: 2px solid currentColor;
    border-right: 2px solid currentColor;
    transform: translate(0%,-65%) rotate(135deg);
}
.has-child {
    position: relative;
}
.has-child > .level02 {
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s;
    white-space: nowrap;
}
.dropdown01 .has-child ul li a {
    display: block;
}
.dropdown01 .level02 {
    background-color: #fff;
}
@media screen and (min-width: 992px) {
    .pc {
        display: block;
    }
    .dropdown01 .level01 {
        display: flex;
        align-items: center;
        gap: 24px;
    }
    .dropdown01 ul li:hover span,
    .dropdown01 ul a:hover,
    .dropdown01 ul > li:hover::before {
        color: #094;
    }
    .dropdown01 .has-child .level02 {
        position: absolute;
        top: 30px;
        left: 0;
        min-width: 150px;
        background-color: #fff;
        z-index: 1;
        border: 2px solid #094;
    }
    .dropdown01 .has-child:hover > .level02 {
        opacity: 1;
        visibility: visible;
    }
    .dropdown01 .has-child ul li a {
        padding: 12px;
    }
    .dropdown01 .has-child ul li:not(:first-child) {
        border-top: 2px solid #094;
    }
    .dropdown01 .icon-down::before {
        top: 50%;
        right: -15px;
    }
}
@media screen and (max-width: 991px) {
    .pc {
        display: none !important;
    }
    .dropdown01 {
        background-color: #f0f0f1;
    }
    .dropdown01 .has-child .level02 {
        height: 0;
        transform: scaleY(0);
        transform-origin: top left;
    }
    .dropdown01 ul li a,
    .dropdown01 ul li span {
        display: block;
        border-bottom: 1px solid currentColor;
    }
    .dropdown01 .level01 a,
    .dropdown01 .level01 span {
        padding: 10px 15px;
    }
    .dropdown01 .level02 a,
    .dropdown01 .level02 span {
        padding: 10px 15px 10px 30px;
    }
    .dropdown01 .level02
    .dropdown01 ul li:last-child > a,
    .dropdown01 ul li:last-child > span {
        border-bottom: 0
    }
    .dropdown01 .has-child.open .level02 {
        height: auto;
        background-color: #bababa;
        transform: scaleY(1);
        opacity: 1;
        visibility: visible;
    }
}
document.querySelectorAll('.has-child').forEach(function(element) {
	element.addEventListener('click', function() {
		element.classList.toggle('open');
	});
});
>お問い合わせはこちら

お問い合わせはこちら