径向菜单的制作

最终效果:

在径向菜单的制作前,首先需要知道几点知识点:

Math.sin(x)      x 的正玄值。返回值在 -1.0 到 1.0 之间;

Math.cos(x)    x 的余弦值。返回的是 -1.0 到 1.0 之间的数;

这两个函数中的X 都是指的“弧度”而非“角度”,弧度的计算公式为: 2*PI/360*角度,使用js表示是这样的:Math.PI/180*度数(1度=180/Math.PI)

如:30° 角度 的弧度 = 2*PI/360*30

如何计算圆的极坐标(用于计算出子菜单相对于圆的位置)

以父容器左上角为圆点,建立坐标系

代码如下:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<title>径向菜单的制作</title>
<meta charset="utf-8"/>
<meta name="keywords" content="" />
<meta name="description" content="" />
<script type="text/javascript" src="jquery.js"></script> <!--此处需引入jquery文件-->
<style type="text/css">
* {
margin: 0;
padding: 0;
}
body {
background-color: #292a38;
font-family: "Microsoft Yahei";
}
h1 {
margin-top: 20px;
text-align: center;
color: #fff;
}
.navWrap {
position: relative;
width: 200px;
height: 200px;
margin: 50px auto;
border: 2px dotted #4e5061;
border-radius: 50%;
}
.navWrap .main-nav {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);/*分别向左上移动元素对象的50%,保证居中*/
width: 40px;
height: 40px;
line-height: 40px;
font-size: 12px;
text-align: center;
text-decoration: none;
color: #fff;
border-radius: 3px;
text-shadow: 1px 1px 0px #000;
background: #15a5f3;
cursor: pointer;
}
.navWrap nav {
position: absolute;
width: 100%;
height: 100%;
transform: scale(0);
transition: all 0.5s ease-out;
opacity: 0;
}
.navWrap.active nav {
transform: scale(1);
opacity: 1;
}
.navWrap nav > a{
position: absolute;
width: 30px;
height: 30px;
background: #f44283;
text-align: center;
line-height: 30px;
text-decoration: none;
color: #fff;
border-radius: 3px;
text-shadow: 1px 1px 0px #000;
transform: translate(-50%,-50%);
}
</style>
</head>
<body>

<h1>径向动画菜单效果演示</h1>

<div class="navWrap">
<nav>
<a>1</a>
<a>2</a>
<a>3</a>
<a>4</a>
<a>5</a>
<a>6</a>
<a>7</a>
<a>8</a>
</nav>
<a class="main-nav">点我</a>
</div>

<script type="text/javascript">
$(document).ready(function() {
var isLocated = false; //防止重复初始化子菜单位置
$(".navWrap").on(‘click‘, ‘.main-nav‘, function(event) {
event.preventDefault();
var me = $(this);
var navWrap = me.closest(‘.navWrap‘);
var nav = navWrap.find(‘nav a‘);
if(!navWrap.hasClass(‘active‘)&&!isLocated){
//Y=R+Rsinθ
//X=R+Rcosθ
var r = navWrap.width()/2;
var startAngle =0, endAngle=360; //可以通过改变角度,做出各种各样的径向菜单

//子菜单的夹角
var total = nav.length;
var gap = (endAngle - startAngle)/total;

//角度->弧度
var radian = Math.PI/180;

/*
* 计算并确定各个子菜单的最终位置
*/
$.each(nav,function(index, el) {
// 当前子菜单与x轴正向的夹角 θ (角度->弧度)
var myAngle = (startAngle + gap*index) * radian; // θ
var x = r+r*Math.cos(myAngle),//myAngle为弧度
y = r+r*Math.sin(myAngle);
// 设置当前子菜单的位置 (left,top) = (x,y)
$(this).css({
left: x + ‘px‘,
top: y + ‘px‘
});
});
isLocated = true;
}
navWrap.toggleClass(‘active‘);
});
})
</script>
</body>
</html>

时间: 2024-10-10 06:02:30

径向菜单的制作的相关文章

行内/块级垂直居中、图像文本替换以及二级下拉菜单的制作

经过近一个月对HTML与css的学习,利用HTML以及div+css对简单的静态网页进行简单的布局有了一定的基础,但是对于网页结构布局的分析.部分属性的使用存在着问题,希望在以后的学习能有所提高,这里就最近的学习情况进行一下总结与归纳: 一.行内元素与块级元素水平.垂直居中问题 (一)CSS设置行内元素的水平居中 div{text-align:center} /*DIV内的行内元素均会水平居中*/ CSS设置行内元素的垂直居中 div{height:30px; line-height:30px}

简易菜单的制作

为大家提供一种简易的菜单的制作方法,代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href=""> <title></title> </head>

Web网页简单的静态导航菜单的制作

Web网页导航菜单的制作 最近初学Html/Css,今天学习了一个简单的静态导航条的制作.属于很简单,很基础的东西. 思路:导航菜单–>书籍的目录,条目性结构–>用无需列表构建导航菜单 1. 首先在html代码中建立ul: <ul> <li><a href="#">首 页</a></li> <li><a href="#">新闻快讯</a></li>

手风琴菜单的制作

用到的知识点如下: 一.jQuery 1.slideDown()向下展示 2.slideUp()向上卷起 3.slideToggle()依次展开或卷起某个元素 二.jQuery链式调用 jquery对象的方法在执行完之后返回这个jquery对象,所有的jQuery对象的方法可以连起来写: $("#div1").chlidren("ul").slideDown("fast").parent().siblings().chlidren("u

css分类导航和圆角菜单的制作

#纵向分类 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> /*清除默认的边框*/ *{margin: 0px;padding: 0px;} /*不显示li前面的.号 */ ul{list-style: none;width: 100px;} /*

下拉菜单的制作无js

下拉菜单有许多种制作方法: 今天我们就做最简单的一种: 话不多说先看html <body> <div class="menubox"> <ul> <li class="list1"><a href="">首页</a></li> <li class="list1"><a href="">公司简介<

菜单的制作 纯css :hover事件

<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8"> <title>选项卡的制作</title> <script src="../js/try.js"></script> <style> /*整体设置*/ *{ margin:0; padding:0; } #menu

css学习:斜角菜单的制作

制作斜角菜单就是利用边框的接角构造一个斜角,每一个菜单项的a元素,放置一个span元素,设置为corner类,实现斜角效果. 设置a元素为相对定位,a是span的子元素设置其为绝对定位,再设置span的top和left为零,以便使斜角定位在以边框为界的左上角. 以下代码显示效果如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD

[刘阳Java]_CSS菜单侧边栏制作

再来写一个菜单侧边栏的制作,先看截图 源代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } body { font-family: "微软雅黑"; font-siz