在活动导航项目下方显示箭头

Display arrow below active navigation item

本文关键字:下方显示 项目 活动 导航      更新时间:2023-09-26

我目前正在建立一个作品集网站,以展示我在大学期间所做的一些工作,并决定采用单页设计。我希望该网站做的是,当您向下滚动并"进入"各个部分时,导航栏下方的向下箭头将水平滑动(作为动画(到当前活动部分/导航项下方。

我试过什么?老实说,没什么。我不是在寻找答案,虽然那会很好,但我只需要一个起点。主要问题是我真的不知道如何将其"捕捉"到每个列表项下方,以便它完全位于文本的中心并迎合不同的显示分辨率。

.HTML

  <div id="header">
        <div class="topbar">
        </div>
        <div class="headbar">
            <nav>
                <div class="wrapper">
                    <ul>
                        <li><a href="#home">Home</a></li>
                        <li><a href="#about">About</a></li>
                        <li><a href="#work">Projects</a></li>
                        <li><a href="#contact">Contact</a></li>
                        <li><a href="#">Blog</a></li>
                    </ul>
                </div>
            </nav>
        </div>
        <div class="shadow">
        </div>
        <div class="current"></div>
    </div>

.CSS

.wrapper {
width: 920px;
margin: 0 auto;
}
#header {
position: fixed;
width: 100%;
}
#header .topbar {
height: 10px;
background-color: #386c93;
}
#header .headbar {
height: 60px;
background: #f2f2f2;
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmMmYyZjIiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjY2JlYmZmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
background: -moz-linear-gradient(top, #ffffff 0%, #f2f2f2 100%, #cbebff 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f2f2f2), color-stop(100%,#cbebff));
background: -webkit-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
background: linear-gradient(to bottom, #ffffff 0%,#f2f2f2 100%,#cbebff 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cbebff',GradientType=0 );
border-bottom: 1px solid #9b9999;
}
#header .shadow {
height: 17px;
background-image: url('shadow.png');
background-repeat: none;
background-position: center;
}
#header a {
color: #5c5959;
text-decoration: none;
}
#header a:hover {
color: #0092ff;
}
#header .current {
background-image: url('nav-pointer.PNG');
height: 19px;
width: 22px;
margin-top: -18px;
margin-left: 715px;
}
#header ul{
padding-top: 20px;
text-align: center;
list-style: none;
}
#header li {
font-size: 16px;
//float: left;
display: inline;
color: #5c5959;
padding: 30px;
}

我创建了一个JSFiddle,只是为了让每个人的生活更轻松 - http://jsfiddle.net/GW6CG/2/- 如果CSS有点混乱,我打算在某个时候清理它。

或者,您可以在此处实时查看网站:http://www.jonline.me.uk/dev/

非常感谢您的时间!

从头开始

创建此功能是没有意义的。已经创建了许多插件来实现这一点。一个是滚动.js。

另外,如果您想在滚动时添加放屁的声音,请查看放屁卷轴.js

希望我有所帮助。

我前段时间写了一些东西,你可以很容易地用作这个的骨架:http://jsfiddle.net/LYqVk/2/

JQuery 看起来像这样:

$('a[href*=#]').click(function (e) {
    e.preventDefault();
    var id = $(this).attr('href');
    var scrollTo = $(id).offset().top;
    $('html,body').animate({
        'scrollTop': scrollTo
    }, 500);
});
$(document).scroll(function () {
    highlightSection();
});
function highlightSection() {
    // Where's the scroll at?
    var currentPosition = $(this).scrollTop();
    // Remove highlights from all
    $('a[href*=#]').removeClass('highlighted');
    // Loop over each section
    $('#content .section').each(function () {
        // Calculate the start and end position of the section
        var sectionStart = $(this).offset().top;
        var sectionEnd = sectionStart + $(this).height();
        // If the current scroll lies between the start and the end of this section
        if (currentPosition >= sectionStart  && currentPosition < sectionEnd) {
            // Highlight the corresponding anchors
            $('a[href=#' + $(this).attr('id') + ']').addClass('highlighted');
        }
    });
};
highlightSection();

仔细阅读代码中的注释,希望它们有足够的解释性,但以防万一它们不是基本过程是这样的:

  1. 找出我们在页面上的位置 - .scrollTop()
  2. 循环.sections
  3. 如果当前位置位于某个部分的顶部和底部之间,则这就是我们要突出显示的位置*

    • 在您的情况下,这将是箭头。