dar*_*l90 2 javascript css jquery menu hover
我想创建一个像这样的页面,但我刚刚学习 javascript/jquery。我真的很喜欢这个菜单,但我不知道如何将无序菜单列表放置在一个圆圈中,然后如何制作悬停效果。
这是 html 菜单:
        <nav>
            <ul>
                <li><a href="#">Menu1</a></li>
                <li><a href="#">Menu2</a></li>
                <li><a href="#">Menu3</a></li>
                <li><a href="#">Menu4</a></li>
                <li><a href="#">Menu5</a></li>
                <li><a href="#">Menu6</a></li>
            </ul>
        </nav>
我尝试重新创建您在此jsFiddle 页面上寻找的内容。它绝对不是没有错误的,但希望它能帮助您理解制作循环列表所需的 jQuery 和 CSS。
CSS:
a {
position: absolute;
text-decoration: none;
border: 1px solid black;
width:98px;
height:98px;
border-radius:50px;
line-height:100px;
text-align:center;
}
我以绝对方式定位链接,以便我们可以操纵它们的顶部/左侧位置。宽度和高度约为边界半径的一半,这将为每个链接提供圆形形状。CSS 的其余部分是定位文本。
jQuery 代码开始:
$(function() {
circle_radius = 100;
$links = $('nav ul li a');
total_links = $links.size();
第一个变量circle_radius是圆形菜单本身(而不是各个链接)的半径。
$links获取导航标签中链接的完整列表并total_links存储该导航中拥有的链接数量。这对于确定每个链接的位置非常重要。
更多 jQuery 代码:
$links.each(function(index) {
    $(this).attr('data-index',index);
    animateCircle($(this), 1);
});
我们要做的第一件事是循环遍历每个单独的链接并向$links其添加索引值并调用animateCircle(...). 我们传递链接元素本身和另一个值(该值将用于鼠标悬停效果)。
圆内定位:
function animateCircle($link, expansion_scale) {
    index = $link.attr('data-index');
    radians = 2*Math.PI*(index/total_links);
    x = -(Math.sin(radians)*circle_radius*expansion_scale);
    y = -(Math.cos(radians)*circle_radius*expansion_scale);
    $link.animate({
        top: x+'px',
        left: y+'px'
    }, 200);
}
在 中animateCircle(...),我们首先获得 的$link索引。$link然后我们使用一些好的旧三角函数使用索引和链接总数来计算 的位置的角度(以弧度为单位) 。接下来,我们用来radians计算 的 x 和 y 位置$link。注意,我在这里调用了一些东西expansion_scale,这就是我们传递给这个函数的东西。目前,这只是 1,因此它不会影响 x 和 y 值。最后,一旦我们获得了 x 和 y 值,我们就$link使用新值对 的 top 和 left 属性进行动画处理。
鼠标悬停时对圆圈进行动画处理:
$('li a').hover(function() {
    animateCircle($(this), 1.5)
}, function() {
    animateCircle($(this), 1)
});
现在使用 可以轻松实现此效果animateCircle(...)。这就是expansion_scale最终发挥作用的地方。当我们将鼠标悬停在链接上时,它将以 1.5 进行调用animateCircle(...),expansion_scale这使得该特定链接比其他链接移出 1.5 倍,从而给您带来简洁的效果。最后,当您将鼠标移出时,它将链接移回其原始位置。
| 归档时间: | 
 | 
| 查看次数: | 2834 次 | 
| 最近记录: |