Почему страница прокручивается вверх, при открытии изображении через fancybox?
Потому что fancybox создает div в самом начале страницы, скроллит к нему, а после закрытия скроллит обратно.
Попробуйте:jQuery('.fancybox').fancybox({
  padding: 0, //убираем отступ
  helpers: {
    overlay: {
      locked: false // отключаем блокировку overlay
    }
  }});
Дополню, у меня была такая же проблема но при открытии видео через fancybox. Исправилось после того, как убрал из стилей
html, body {
    height: 100%;
}