Попробуйте так, замените ваш код на:
$(function(){
$('a[data-scroll^="#"]').click(function(){
$('.menu li').removeClass('active');
var target = $(this).attr('data-scroll');
$('html, body').animate({scrollTop: $(target).offset().top - 0}, 800);
return false;
});
});
var hide = false, show = true;
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
if (scrollTop >= 100 && !hide){
hide = true;
$('.navigation').stop()
.animate({"marginTop": "-210px"},"slow", function () {
show = false;
});
}
if (scrollTop < 100 && !show){
show = true;
$('.navigation').stop().animate({"marginTop": "+0px"}, "slow", function () {
hide = false;
});
}
});
Тут добавлены стопы к анимации и "замки", для того чтобы анимация отрабатывала только по разу на скрытие и открытие, а не при каждом проходе скрола.