带有jquery的圆形旋转/放大菜单
我正在尝试制作一个包含5个项目/图标的菜单,其中所选项目位于中心。单击此居中图标的左侧或右侧,向左或向右旋转菜单,环绕边缘并移动最靠近边缘的项目通过相反的边缘。单击居中的项目将转到其链接的URL。
菜单也应该以类似于OS X底座的方式放大,除了放大级别是根据位置而不是鼠标悬停设置的。
我做了一个比我的ramblings更容易理解的图表。
alt text http://img442.yfrog.com/img442/9321/navdiagram.png
我已经设法凑齐了一个简单的jQuery版本,其中的项目根据需要交换位置,但无法弄清楚如何动画这个动作,尤其是环绕边缘部分,并根据位置改变大小。
我猜我的代码可能不是最好的:)
HTML如下:
<div id="nav">
<div id="leftnav"></div>
<div id="rightnav"></div>
<div id="navblock1" class="navblock">
one
</div>
<div id="navblock2" class="navblock">
two
</div>
<div id="navblock3" class="navblock">
three
</div>
<div id="navblock4" class="navblock">
four
</div>
<div id="navblock5" class="navblock">
five
</div>
和JS:
function rotateNav(direction) {
var change = (direction=='left')?(-1):(+1);
$('div.navblock').each(function() {
oldPos = parseInt($(this).attr('id').substr(9));
newPos = oldPos+change;
if (newPos == 0)
newPos = 5;
else if (newPos == 6)
newPos = 1;
$(this).attr('id','navblock'+newPos);
});
}
$(document).ready(function(){
$("#leftnav").click(function() {
rotateNav('right');
});
$("#rightnav").click(function() {
rotateNav('left');
});
});
所有.navblock元素都是绝对定位的。 #leftnav和#rightnav元素也有,并且它们具有更高的z-index,因此浮动在项目/图标上方。
我看过各种jQuery插件,但似乎没有一个接近我需要的东西。
没有找到相关结果
已邀请:
3 个回复
耐钨徒
方法为旋转设置动画,而不是更改
属性(您实际上不应该首先做)。 你还需要做一些
ing让它看起来像边缘
s已经旋转到小部件的另一侧和一些
/
ing来处理多次点击。 工作演示: http://jsbin.com/ovemu(可通过http://jsbin.com/ovemu/edit编辑) 完整来源: JavaScript的
CSS #nav { 宽度:580px;身高:120px; 位置:相对;左:150px; 溢出:隐藏; } .navblock { 身高:100px;宽度:100px; 位置:绝对;上:10px; z-index:50; 背景颜色:灰色; } .navblock0 {left:-110px; } .navblock1 {left:10px; } .navblock2 {left:120px; } .navblock3 {left:230px;宽度:120px;身高:120px;顶部:0;} .navblock4 {left:360px; } .navblock5 {left:470px; } .navblock6 {left:590px; } #leftnav,#rightnav { 位置:绝对; z-index:100;身高:120px;宽度:228px; } #leftnav {left:0; } #rightnav {right:0; } / *取消注释以下内容以帮助调试或查看内部工作原理* / / * #nav {border:1px solid green;溢出:可见; } #leftnav,#rightnav {border:1px solid blue; } * / HTML
磐乓铝举
乏摩纶誊伟
应该在substr中使用8: