У меня тоже есть эта проблема, и я думаю, что вижу, что происходит.
Блок "column" с массивным (5678 пикселей) полем и отступами делает этот блок очень высоким. В браузерах, отличных от Firefox, положительные и отрицательные значения взаимно компенсируют друг друга, но FF действительно делает его таким высоким.
FF также знает, что оба взаимно отменяют друг друга, но, похоже, смотрит на отступ 5678px и решает, что блок столбца высовывает нижнюю часть блока #wrapper. Это переполнение - и при переполнении, установленном в auto на #wrapper, вы видите истинный размер #wrapper с полосой прокрутки вниз.
Если для переполнения задано значение «скрыто», FF убирает полосу прокрутки, но все равно, кажется, прокручивает содержимое #wrapper, так что элемент, на который указывает фрагмент, находится вверху страницы. Это нормальное поведение для ссылок на фрагменты в прокручиваемых блоках, но поскольку полоса прокрутки отсутствует, вы не можете снова прокрутить содержимое вниз, следовательно, похоже, что фрагмент был изменен фрагментом.
Короче говоря, я подозреваю, что FF использует невидимую полосу прокрутки в этом примере. Это можно считать ошибкой, но, вероятно, это правильное поведение. Возможность прокручивать содержимое вверх и вниз внутри не переполненного блока фиксированного размера с использованием фрагментов URL - это метод, который можно эффективно использовать для реализации «ползунков» изображений, которые работают даже в отсутствие JavaScript.
Надеюсь, это поможет. Это озадачивало меня в течение многих лет, и это объяснение внезапно поразило меня на ровном месте. Мой текущий способ решения этой проблемы - использовать плагин jQuery "scroll to" для прокрутки всей страницы до фрагмента, так как это, похоже, предотвращает внутреннюю прокрутку содержимого #wrapper.
Вы также можете снять «display: hidden» с #wrapper, но ваша страница в итоге получится длиной в полмили.