jQuery實(shí)現(xiàn)徑向動(dòng)畫菜單效果
最終效果:

在徑向菜單的制作前,首先需要知道幾點(diǎn)知識(shí)點(diǎn):
Math.sin(x) x 的正玄值。返回值在 -1.0 到 1.0 之間;
Math.cos(x) x 的余弦值。返回的是 -1.0 到 1.0 之間的數(shù);
這兩個(gè)函數(shù)中的X 都是指的“弧度”而非“角度”,弧度的計(jì)算公式為: 2*PI/360*角度,使用js表示是這樣的:Math.PI/180*度數(shù)(1度=180/Math.PI)
如:30° 角度 的弧度 = 2*PI/360*30
如何計(jì)算圓上任何點(diǎn)坐標(biāo)(用于計(jì)算出子菜單相對于圓的位置)

以父容器左上角為圓點(diǎn),建立坐標(biāo)系
代碼如下:
<!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%);/*分別向左上移動(dòng)元素對象的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>徑向動(dòng)畫菜單效果演示</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">點(diǎn)我</a>
</div>
<script type="text/javascript">
$(document).ready(function() {
var isLocated = false; //防止重復(fù)初始化子菜單位置
$(".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;
/*
* 計(jì)算并確定各個(gè)子菜單的最終位置
*/
$.each(nav,function(index, el) {
// 當(dāng)前子菜單與x軸正向的夾角 θ (角度->弧度)
var myAngle = (startAngle + gap*index) * radian; // θ
var x = r+r*Math.cos(myAngle),//myAngle為弧度
y = r+r*Math.sin(myAngle);
// 設(shè)置當(dāng)前子菜單的位置 (left,top) = (x,y)
$(this).css({
left: x + 'px',
top: y + 'px'
});
});
isLocated = true;
}
navWrap.toggleClass('active');
});
})
</script>
</body>
</html>
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- jQuery實(shí)現(xiàn)兩款有動(dòng)畫功能的導(dǎo)航菜單代碼
- jQuery實(shí)現(xiàn)帶動(dòng)畫效果的多級下拉菜單代碼
- jQuery實(shí)現(xiàn)美觀的多級動(dòng)畫效果菜單代碼
- jquery+CSS3模擬Path2.0動(dòng)畫菜單效果代碼
- jQuery實(shí)現(xiàn)菜單感應(yīng)鼠標(biāo)滑動(dòng)動(dòng)畫效果的方法
- jQuery實(shí)現(xiàn)級聯(lián)菜單效果(仿淘寶首頁菜單動(dòng)畫)
- Jquery實(shí)現(xiàn)帶動(dòng)畫效果的經(jīng)典二級導(dǎo)航菜單
- 33個(gè)優(yōu)秀的jQuery 教程分享(幻燈片、動(dòng)畫菜單)
- jquery 經(jīng)典動(dòng)畫菜單效果代碼
- jQuery實(shí)現(xiàn)有動(dòng)畫淡出效果的二級折疊菜單代碼
相關(guān)文章
jQuery調(diào)用RESTful WCF示例代碼(GET方法/POST方法)
本篇文章主要介紹了jQuery調(diào)用RESTful WCF示例代碼(GET方法/POST方法),需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
jQuery實(shí)現(xiàn)的一個(gè)自定義Placeholder屬性插件
這篇文章主要介紹了jQuery實(shí)現(xiàn)的一個(gè)自定義Placeholder屬性插件,本文最后附有插件完整源碼,需要的朋友可以參考下2014-08-08
jQuery使用hide方法隱藏指定元素class樣式用法實(shí)例
這篇文章主要介紹了jQuery使用hide方法隱藏指定元素class樣式,實(shí)例分析了jQuery中hide隱藏class樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
jQuery動(dòng)態(tài)操作表單示例【基于table表格】
這篇文章主要介紹了jQuery動(dòng)態(tài)操作表單,結(jié)合實(shí)例形式分析了jQuery針對table表格的數(shù)據(jù)添加、刪除、元素修改、提交等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
使用JQuery快速實(shí)現(xiàn)Tab的AJAX動(dòng)態(tài)載入(實(shí)例講解)
這篇文章主要介紹了使用JQuery快速實(shí)現(xiàn)Tab的AJAX動(dòng)態(tài)載入(實(shí)例講解)需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
簡單的jquery左側(cè)導(dǎo)航欄和頁面選中效果
這篇文章主要介紹一個(gè)簡單的jquery左側(cè)導(dǎo)航欄和頁面選中效果,此功能需引用jquery,需要的朋友可以參考下2014-08-08

