Hej Daniele
Det problem du oplever skyldes, at når du scroller en smule med musen, så aktiveres første del af din if-sætning.
I det øjeblik du så scroller lidt mere (og det gør man jo hele tiden, når man bruger scrollbaren), så aktiveres første del af din if-sætning igen, og her stopper du så animationen, inden den animeres igen.
Derfor opleveres det langsommere når man bruger scrollbaren.
Jeg vil foreslå, at du i første del af din if-sætning, inden du kører animationerne, tjekker om der allerede er tilføjet classen "box-shadow" til .site-header. Hvis dette er tilfældet, skal den IKKE animere igen, da den allerede har gjort dette.
Ligeledes i anden del af din if-sætning (elsen), så tjekker du om classen "box-shadow" er sat på .site-header og kun i dette tilfælde, skal den køre animationen den anden vej.
Dermed sikre du, at animationen kun bliver kørt én gang og ikke hver gang man scroller, som nu er tilfældet.
JS'en kunne se sådan ud:
- $(window).scroll(function() {
- var _val = $(window).scrollTop();
-
- if(_val > 113) {
- if (!$('.site-header').hasClass('box-shadow')) {
- $('.site-header').animate({
- height : '73px'
- }, 'fast').addClass('box-shadow');
-
- $('.main-navigation').stop().animate({
- marginTop : '10px'
- }, 'fast');
-
- $('.site-title').stop().animate({
- height : '43px',
- width : '69px',
- backgroundSize : '100%'
- }, 'fast');
-
- $('.site-title a').css({
- height : '43px',
- width : '69px'
- });
- }
- } else {
- if ($('.site-header').hasClass('box-shadow')) {
- $('.site-header').stop().animate({
- height : '113px'
- }, 'fast').removeClass('box-shadow');
-
- $('.main-navigation').stop().animate({
- marginTop : '30px'
- }, 'fast');
-
- $('.site-title').stop().animate({
- height : '83px',
- width : '134px'
- }, 'fast');
-
- $('.site-title a').css({
- height : '83px',
- width : '134px'
- });
- }
- }
- });
Tjek evt. denne jsfiddle, hvor jeg har prøvet at genskabe dit problem:
http://jsfiddle.net/jmz5Lqzm/