JQuery Navigation Items(锚标签)下的线条动画

JQuery Line animation under Navigation Items (anchor tag)

我目前正在重做我的投资组合网站,这是一项正在进行中的工作。我遇到了一个使用 jquery 的教程,该教程允许在悬停时在锚元素下方设置一条线,这非常简洁。我目前有两个问题。

  1. 它在悬停时获得了适当的宽度和左侧位置,但是当悬停未激活时它似乎没有获取适当的属性。

  2. 我不确定如何更新活动元素,以便该行保留在 link 被单击的任何位置。目前,第一个锚标记是活动元素,因此它总是动画回到那个。我想我需要以某种方式具有清除当前活动元素然后将活动 class 应用于新活动元素的点击功能,但不完全确定。

我将提供下面的代码,但您可以在现场查看实际问题 Here

这里是代码如下

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<header id="header">
        <div class="container">
            <nav id="example-one">
                <ul>
                    <li><a class="nav" href="#home">Welcome</a></li>
                    <li  class="current_page_item"><a class="nav" href="#featuredWork">Work</a></li>
                    <li><a class="nav" href="#caseStudy">Case Study</a></li>
                    <li><a class="nav" href="#about">About</a></li>
                    <li><a class="nav" href="#contact">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

CSS:

#magic-line { 
    position: absolute;
    bottom: 10px; 
    /*left: 0; 
    width: 100px; */
    height: 3px;
    background: #fe4902;
}

JQuery:

//Magic line

$(function() {


    /* Add Magic Line markup via JavaScript, because it ain't gonna work without */

    $("#example-one").append("<li id='magic-line'></li>");


    /* Cache it */
    var $magicLine = $("#magic-line");

    $magicLine
        .width($(".current_page_item").width())
        .css("left", $(".current_page_item a").position().left)
        .data("origLeft", $magicLine.position().left)
        .data("origWidth", $magicLine.width());

    $("#example-one li").find("a").hover(function() {
        $el = $(this);
        leftPos = $el.position().left;
        newWidth = $el.parent().width();

        $magicLine.stop().animate({
            left: leftPos,
            width: newWidth
        });
    }, function() {
        $magicLine.stop().animate({
            left: $magicLine.data("origLeft"),
            width: $magicLine.data("origWidth")
        });    
    });


});

在此先感谢您的帮助。

我不是很肯定,但我想这就是你想要的?

我认为你只需要删除

function() {
        $magicLine.stop().animate({
            left: $magicLine.data("origLeft"),
            width: $magicLine.data("origWidth")
        });    
    });

这导致滑块立即滑回原来的位置。或者您只希望该滑块在单击时保持不变?