Ich habe dieses feste Anker-Link-Menü komponiert, dass es beim Scrollen visuell geändert hat. Wie kann ich diese Änderung ALSO vornehmen, indem ich auf den Anker klicke und nicht nur die Seite scrollte? Wenn ich Scrollen meide und direkt die Anker-Links verwende, ändert sich das Sichtbare nicht. Ich hoffe, ihr könnt mir helfen.Machen Sie einen Scrolling-Effekt funktioniert auch mit Klick
HTML
<div id="pointer">
<a href="#first"><span class="one"></span></a>
<a href="#second"><span class="two"></span></a>
<a href="#third"><span class="three"></span></a>
<a href="#fourth"><span class="four"></span></a>
<a href="#areaTest"><span class="five"></span></a>
</div>
CSS
body{background-color: #003333;}
#pointer{
position: fixed;
top: 50%;
left: 50px;
}
#pointer span{
display: block;
height: 13px;
width: 25px;
border-top-color: #999999;
border-top-style: solid;
border-top-width: 1px;
}
JS
$(function() {
$(window).on('wheel', function(e) {
var delta = e.originalEvent.deltaY;
var windowScrollTop = $(this).scrollTop();
if (delta > 0) {
//scroll-down
if(windowScrollTop > 0){
$(".one").css("border-top-color","#fff").animate({width: '50px'}, 100);
}
if(windowScrollTop > 350){
$(".two").css("border-top-color","#fff").animate({width: '50px'}, 100);
}
if(windowScrollTop > 750){
$(".three").css("border-top-color","#fff").animate({width: '50px'}, 100);
}
if(windowScrollTop > 1150){
$(".four").css("border-top-color","#fff").animate({width: '50px'}, 100);
}
if(windowScrollTop > 1500){
$(".one, .two, .three, .four, .five").css("border-top-color","#999999");
$(".five").animate({width: '50px'}, 100);
$("body").css('background-color', '#fff');
}
}
else {
//scroll-up
if(windowScrollTop < 350){
$(".two").css("border-top-color","#999999").animate({width: '25px'}, 100);
}
if(windowScrollTop < 750){
$(".three").css("border-top-color","#999999").animate({width: '25px'}, 100);
}
if(windowScrollTop < 1150){
$(".four").css("border-top-color","#999999").animate({width: '25px'}, 100);
}
if(windowScrollTop < 1500){
$(".one, .two, .three, .four, .five").css("border-top-color","#fff");
$(".five").animate({width: '25px'}, 100);
$("body").css('background-color', '#003333');
}
}
});
});
Danke @Andrea! Es funktioniert super! Ich wollte nur noch eine Frage stellen, wenn ich darf. Gibt es eine Möglichkeit, den Bildlauf weicher zu gestalten, wenn der Benutzer auf die Anker-Links klickt? –
Ich könnte den Bildlauf mit $ ("body") glatter machen. Animate ({scrollTop: $ ('#' + targetId) .offset(). Top-200}, "langsam"); aber jetzt wird die bgColor nicht wieder in grau geändert, wenn scrollUp gedrückt wird –