
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>扇形导航</title>
</head>
<style>
body,
html {
height: 100%;
overflow: hidden;
}
#wrap {
position: fixed;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: red;
right: 10px;
bottom: 10px;
text-align: center;
line-height: 50px;
}
.inner {
height: 100%;
}
.inner span {
display: block;
width: 100%;
height: 100%;
position: absolute;
background-color: #000;
z-index: 1;
border-radius: 50%;
color: #fff;
left: 0;
top: 0;
}
.home {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
background-color: yellowgreen;
border-radius: 50%;
z-index: 9;
transition: .5s;
}
</style>
<body>
<div id="wrap">
<div class="inner">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
</div>
<div class="home">
1
</div>
</div>
<script>
window.onload = function() {
//获取类 .home
var homeEl = document.querySelector(“.home”);
//获取全部.inner > span
var spans = document.querySelectorAll(“.inner > span”);
var flag = true;
var c = 140;
//fn()函数
function fn() {
this.style.transition = “.3s”;
this.style.transform = “rotate(-720deg) scale(1)”;
this.style.opacity = 1;
this.removeEventListener(“transitionend”, fn)
}
//点击菜单触发的效果
for (var i = 0; i < spans.length; i++) {
spans[i].onclick = function() {
this.style.transition = “.5s”;
this.style.transform = “rotate(-720deg) scale(1.5)”;
this.style.opacity = 0.1;
this.addEventListener(“transitionend”, fn);
}
}
//点击home键展开菜单
homeEl.onclick = function() {
if (flag) {
this.style.transform = “rotate(-720deg) scale(1)”;
for (var i = 0; i < spans.length; i++) {
spans[i].style.transition = “all 1s ease “ + (i
.1) + “s”;
spans[i].style.transform = “rotate(-720deg) scale(1)”;
spans[i].style.left = -getPoint(c, 90
i / (spans.length - 1)).left + “px”;
spans[i].style.top = -getPoint(c, 90
i / (spans.length - 1)).top + “px”;
}
} else {
this.style.transform = “rotate(0)”;
for (var i = 0; i < spans.length; i++) {
spans[i].style.transform = “rotate(0) scale(1)”;
spans[i].style.transition = “1s “ + ((spans.length - 1 - i)
.1) + “s”;
spans[i].style.left = 0 + “px”;
spans[i].style.top = 0 + “px”;
}
}
flag = !flag;
};
//计算菜单旋转出去的坐标
function getPoint(c, deg) {
var x = Math.round(c
Math.sin(deg
Math.PI / 180));
var y = Math.round(c
Math.cos(deg
Math.PI / 180));
return {
left: x,
top: y
}
}
};
</script>
</body>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号