Dropdown menu without JavaScript
by bc_rikko
HTML
<header>
<nav>
<ul class="nav-menu">
<li class="item">menu1</li>
<li class="item">menu2</li>
<li class="item">
<details class="dropdown-menu">
<summary class="dropdown-title">
<img src="https://avatars0.githubusercontent.com/u/5305599?s=30" />
<span>▼</span>
</summary>
<ul class="dropdown-items">
<li><a href="#">Link1</a></li>
<li><a href="#">Link2</a></li>
<li><a href="#">Link3</a></li>
</ul>
</details>
</li>
</ul>
</nav>
</header>
CSS
body {
margin: 0;
padding: 0;
}
header {
background-color: #23282d;
color: white;
height: 50px;
padding: 5px 20px;
display: flex;
align-items: center;
justify-content: flex-end;
}
.nav-menu {
margin: 0;
list-style: none;
display: flex;
align-items: center;
}
.nav-menu > .item {
margin-left: 2rem;
}
/* ドロップダウンメニューのタイトル */
.dropdown-menu {
position: relative;
}
/* ドロップダウンメニュー */
.dropdown-menu > .dropdown-items {
position: absolute;
top: 40px;
right: 0;
width: 100px;
padding: 10px;
border-radius: 4px;
list-style: none;
background-color: white;
box-shadow: 0 0 3px rgba(0, 0, 0, .7);
}
/* メニューにつける▲ */
.dropdown-menu > .dropdown-items::before {
content: "";
position: absolute;
top: -5px;
right: 30px;
border-bottom: 5px solid white;
border-right: 5px solid transparent;
border-left: 5px solid transparent;
}
/* ナビゲーションに表示するタイトル */
.dropdown-menu > .dropdown-title {
cursor: pointer;
display: flex;
align-items: center;
/* デフォルトの▼を消す */
list-style: none;
}
/* デフォルトの▼を消す:Chrome用 */
.dropdown-menu > .dropdown-title::-webkit-details-marker {
display: none;
}
/* カスタムの▼ */
.dropdown-menu > .dropdown-title > span {
margin-left: 10px;
font-size: 10px;
}