HTML
<div class="radial-wrapper">
<button class="radial-button" id="menu-toggle">+</button>
<nav class="radial-menu" id="radial-menu">
<a href="#">TOP</a>
<a href="#">ABOUT</a>
<a href="#">WORKS</a>
<a href="#">CONTACT</a>
</nav>
</div>
CSS
.radial-wrapper {
position: relative;
width: 100px;
height: 100px;
margin: 100px auto;
}
.radial-button {
width: 60px;
height: 60px;
border-radius: 50%;
background: #d60000;
color: #fff;
font-size: 2rem;
font-weight: bold;
border: none;
cursor: pointer;
z-index: 10;
position: absolute;
top: 20px;
left: 20px;
transition: transform 0.3s ease;
}
.radial-button:hover {
transform: rotate(90deg);
}
.radial-menu {
position: absolute;
top: 20px;
left: 20px;
width: 60px;
height: 60px;
}
.radial-menu a {
position: absolute;
width: 50px;
height: 50px;
border-radius: 50%;
background: #111;
color: #fff;
text-align: center;
line-height: 50px;
text-decoration: none;
font-size: 0.8rem;
opacity: 0;
transform: translate(0, 0);
transition: all 0.4s ease;
pointer-events: none;
}
/* 展開位置と表示 */
.radial-menu.open a:nth-child(1) {
transform: translate(80px, 0);
opacity: 1;
pointer-events: auto;
}
.radial-menu.open a:nth-child(2) {
transform: translate(60px, 60px);
opacity: 1;
pointer-events: auto;
}
.radial-menu.open a:nth-child(3) {
transform: translate(0, 80px);
opacity: 1;
pointer-events: auto;
}
.radial-menu.open a:nth-child(4) {
transform: translate(-60px, 60px);
opacity: 1;
pointer-events: auto;
}
JavaScript
const toggleBtn = document.getElementById("menu-toggle");
const radialMenu = document.getElementById("radial-menu");
toggleBtn.addEventListener("click", () => {
radialMenu.classList.toggle("open");
});