jQuery Waypoints 在页面底部触发
jQuery Waypoints fire at bottom of page
所以由于我对 jQuery 了解不多,主要是复制和粘贴代码,虽然我仍在尝试理解它们,但我在最后一部分失败了——理解。
好吧,现在我的问题是:
我正在构建一个 Onepager,顶部有一个导航,有 4 个导航点:工作、技能、关于、联系(相同的 ID)。
我试图在达到某个跨度时切换 class,以便突出显示导航中的 link。
这可以很好地联系 - 它位于页面底部。
所以我已经搜索了很长时间,发现它可能必须用 offset 属性做一些事情。但是我只是不知道如何添加它,所以当用户到达页面底部时触发最后一个路点 - 当底部看不见时再次触发。
到目前为止,这是我的 js 代码:
$('#work').waypoint(function(direction) {
$('#nav-work').toggleClass('nav-hover', direction === 'down');
});
$('#skills').waypoint(function(direction) {
$('#nav-work').toggleClass('nav-hover', direction === 'up');
});
$('#skills').waypoint(function(direction) {
$('#nav-skills').toggleClass('nav-hover', direction === 'down');
});
$('#about').waypoint(function(direction) {
$('#nav-skills').toggleClass('nav-hover', direction === 'up');
});
$('#about').waypoint(function(direction) {
$('#nav-about').toggleClass('nav-hover', direction === 'down');
});
$('#contact').waypoint(function(direction) {
$('#nav-about').toggleClass('nav-hover', direction === 'up');
});
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
{offset:'bottom-in-view'};
});
如您所见,我已经尝试了最后一部分,但这对我不起作用。
另外:我正在构建我的网站完全响应 - 我并避免明确的像素高度和宽度。我主要与 vh 和 vw 一起工作。
另一个注意事项:我的页脚高度是 20vh。
这意味着适用于所有设备。
非常感谢您的帮助,因为我已经在这里和互联网上浏览了所有相关主题,但找不到适合我的解决方案。
为了更清楚,我将尝试为您提供 html 和 css 的相关代码部分(因为整个页面的代码太多,而且效果不佳概述。)
HTML:
<!--Nav-->
<div class="sticky-nav">
<a href="#start"><img src="images/Bildmarke.svg" alt="home"></a>
<p>lisa röhl</p>
<ul>
<li><a class="nav" id="nav-contact" href="#contact">contact</a></li>
<li><a class="nav" id="nav-about" href="#about">about</a></li>
<li><a class="nav" id="nav-skills" href="#skills">skills</a></li>
<li><a class="nav" id="nav-work" href="#work">work</a></li>
</ul>
</div>
<span class="anchor-work" id="work"></span>
<span class="anchor" id="skills"></span>
<span class="anchor" id="about"></span>
<span class="anchor" id="contact"></span>
CSS:
.nav:hover{
color:#e76600 !important;
}
.nav-hover{
color:#e76600 !important;
}
.contact-down{
height:20vh;
background-color:#2b3534;
} /*Note:This is the css of the div, where the contact-part is in - so the height of the "footer"*/
希望对您有所帮助:)
看看这个 Jsbin:http://jsbin.com/fobecunaye/edit?html,css,js
我正在使用 waypoints 的无依赖版本,基本上默认情况下 waypoints 检查整个元素是否在视图中,添加一个小的视图点偏移可以修复任何滚动问题。以下是您的联系人元素的代码。
//This is the code for the bottom div (or in your case a span)
var waypoint = new Waypoint({
element: document.getElementById('contact'), //Select element
handler: function(direction) {
$('span').removeClass('nav-hover');
// The preceding line just removes all elements with nav-hover class, deselecting them
$('#nav-contact').addClass('nav-hover');
// This line just adds the nav-hover class
},
offset: 3 // Tells waypoint to instantiate when the element is 3px away from the top
});
通过 Waypoint4 的变量 Waypoint 将替换您现有的 js。另外waypoint的版本也改成了下面的
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.0/noframework.waypoints.min.js"></script>
如果您有任何问题,我很乐意提供帮助..
编辑:好的,我想我在代码中发现了问题,
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
{offset:'bottom-in-view'};
});
应该是:
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
}, {
offset: 'bottom-in-view'
});
{offset...} 部分应该是您刚刚放入函数中的航点中的另一个参数。
所以由于我对 jQuery 了解不多,主要是复制和粘贴代码,虽然我仍在尝试理解它们,但我在最后一部分失败了——理解。 好吧,现在我的问题是: 我正在构建一个 Onepager,顶部有一个导航,有 4 个导航点:工作、技能、关于、联系(相同的 ID)。 我试图在达到某个跨度时切换 class,以便突出显示导航中的 link。 这可以很好地联系 - 它位于页面底部。 所以我已经搜索了很长时间,发现它可能必须用 offset 属性做一些事情。但是我只是不知道如何添加它,所以当用户到达页面底部时触发最后一个路点 - 当底部看不见时再次触发。
到目前为止,这是我的 js 代码:
$('#work').waypoint(function(direction) {
$('#nav-work').toggleClass('nav-hover', direction === 'down');
});
$('#skills').waypoint(function(direction) {
$('#nav-work').toggleClass('nav-hover', direction === 'up');
});
$('#skills').waypoint(function(direction) {
$('#nav-skills').toggleClass('nav-hover', direction === 'down');
});
$('#about').waypoint(function(direction) {
$('#nav-skills').toggleClass('nav-hover', direction === 'up');
});
$('#about').waypoint(function(direction) {
$('#nav-about').toggleClass('nav-hover', direction === 'down');
});
$('#contact').waypoint(function(direction) {
$('#nav-about').toggleClass('nav-hover', direction === 'up');
});
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
{offset:'bottom-in-view'};
});
如您所见,我已经尝试了最后一部分,但这对我不起作用。 另外:我正在构建我的网站完全响应 - 我并避免明确的像素高度和宽度。我主要与 vh 和 vw 一起工作。 另一个注意事项:我的页脚高度是 20vh。 这意味着适用于所有设备。
非常感谢您的帮助,因为我已经在这里和互联网上浏览了所有相关主题,但找不到适合我的解决方案。
为了更清楚,我将尝试为您提供 html 和 css 的相关代码部分(因为整个页面的代码太多,而且效果不佳概述。)
HTML:
<!--Nav-->
<div class="sticky-nav">
<a href="#start"><img src="images/Bildmarke.svg" alt="home"></a>
<p>lisa röhl</p>
<ul>
<li><a class="nav" id="nav-contact" href="#contact">contact</a></li>
<li><a class="nav" id="nav-about" href="#about">about</a></li>
<li><a class="nav" id="nav-skills" href="#skills">skills</a></li>
<li><a class="nav" id="nav-work" href="#work">work</a></li>
</ul>
</div>
<span class="anchor-work" id="work"></span>
<span class="anchor" id="skills"></span>
<span class="anchor" id="about"></span>
<span class="anchor" id="contact"></span>
CSS:
.nav:hover{
color:#e76600 !important;
}
.nav-hover{
color:#e76600 !important;
}
.contact-down{
height:20vh;
background-color:#2b3534;
} /*Note:This is the css of the div, where the contact-part is in - so the height of the "footer"*/
希望对您有所帮助:)
看看这个 Jsbin:http://jsbin.com/fobecunaye/edit?html,css,js
我正在使用 waypoints 的无依赖版本,基本上默认情况下 waypoints 检查整个元素是否在视图中,添加一个小的视图点偏移可以修复任何滚动问题。以下是您的联系人元素的代码。
//This is the code for the bottom div (or in your case a span)
var waypoint = new Waypoint({
element: document.getElementById('contact'), //Select element
handler: function(direction) {
$('span').removeClass('nav-hover');
// The preceding line just removes all elements with nav-hover class, deselecting them
$('#nav-contact').addClass('nav-hover');
// This line just adds the nav-hover class
},
offset: 3 // Tells waypoint to instantiate when the element is 3px away from the top
});
通过 Waypoint4 的变量 Waypoint 将替换您现有的 js。另外waypoint的版本也改成了下面的
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.0/noframework.waypoints.min.js"></script>
如果您有任何问题,我很乐意提供帮助..
编辑:好的,我想我在代码中发现了问题,
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
{offset:'bottom-in-view'};
});
应该是:
$('#contact').waypoint(function(direction) {
$('#nav-contact').toggleClass('nav-hover', direction === 'down');
}, {
offset: 'bottom-in-view'
});
{offset...} 部分应该是您刚刚放入函数中的航点中的另一个参数。