繁体   English   中英

导航滚动和单击锚标记

[英]Navigation Scrolling and Clicking anchor tag

我正在使用这两个脚本,一个用于单击锚标记时更改类,另一个用于向下滚动页面时更改类。 当我单击锚标记时,该类会更改,但是由于具有滚动功能,它会向后还原,因此我也向动画页面添加了动画。 如何避免两者之间的冲突。

根据锚点更改类。

<script>
$(document).ready(function () {
$('.sidebar-nav li a').click(function(e) { 
$('.sidebar-nav li').removeClass('active_nav');
var $parent = $(this).parent();
if (!$parent.hasClass('active_nav')) {
$parent.addClass('active_nav');
}
e.preventDefault();});});   
</script>

根据滚动更改类

<script>
$(window).scroll(function() {
var windscroll = $(window).scrollTop();
    $('.page').each(function(i) {
        if ($(this).position().top <= windscroll) {
            $('.sidebar-nav li').removeClass('active_nav');
            $('.sidebar-nav li').eq(i).addClass('active_nav');
        }
    });});  
</script>

滚动到页面

<script>
$('.scroll a').click(function(e) {
var goTo = $(this).attr('href'); // selects element that was clicked
$("html,body").animate({scrollTop:$(goTo).offset().top}, 1000);
e.preventDefault();
}); 
</script>

如果$(this).position().top + $(this).height() > windscroll则可能应该添加一个条件。

$(window).scroll(function() {
var windscroll = $(window).scrollTop();
$('.page').each(function(i) {
    var posTop = $(this).position().top, 
        h = $(this).height();

    if (posTop  <= windscroll && posTop + h > windscroll ) {
        $('.sidebar-nav li').removeClass('active_nav');
        $('.sidebar-nav li').eq(i).addClass('active_nav');
    }
});
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM