在活动导航项目下方显示箭头
Display arrow below active navigation item
我目前正在建立一个作品集网站,以展示我在大学期间所做的一些工作,并决定采用单页设计。我希望该网站做的是,当您向下滚动并"进入"各个部分时,导航栏下方的向下箭头将水平滑动(作为动画(到当前活动部分/导航项下方。
我试过什么?老实说,没什么。我不是在寻找答案,虽然那会很好,但我只需要一个起点。主要问题是我真的不知道如何将其"捕捉"到每个列表项下方,以便它完全位于文本的中心并迎合不同的显示分辨率。
.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();
仔细阅读代码中的注释,希望它们有足够的解释性,但以防万一它们不是基本过程是这样的:
- 找出我们在页面上的位置 -
.scrollTop()
- 循环
.sections
如果当前位置位于某个部分的顶部和底部之间,则这就是我们要突出显示的位置*
- 在您的情况下,这将是箭头。
相关文章:
- 如何在 jquery 中的速率按钮下方显示消息状态
- 选中时高亮显示项目
- 如何检查切换功能是否显示项目
- jQuery - 在其下方显示每个图像链接
- 煎茶 2.4.1 - 列表不显示项目
- 不要在某些元素下方显示任何内容
- AngularJS在URL正下方显示列表
- jquery :bxSlider 轮播活动类,用于所有显示项目(非单个)
- 对于数组 {{显示项目}} 中的每个项目
- 在活动导航项目下方显示箭头
- Instagram API 和 jquery 的问题:无法显示项目
- 如何正确对齐日期选取器文本框下方显示的日期选取器图标
- 如何以任何给定的方式在组合框中显示项目
- 如何在博客中的帖子标题下方显示广告,使其即使在博客的移动版上也能工作
- 引导-点击图标,在图标下方显示信息框
- 如何通过文本字段输入用户数据,然后在文本字段的正下方显示
- 使用jquery在同一位置显示项目
- 如何继续在我的页面上添加/显示项目,同时滚动垂直栏
- 在Array Controller ember.js中显示项目
- 格式错误的HTML:如何不在空的li元素上显示项目符号