Hill30/NGScroller — pull request #48 by dhilt (2014-05-29 15:52:51+00:00)
Title: Fix bootstrap's well css class bug (issue #4)

Еще раз о замене viewport.height() на viewport.outerHeight().

При расчете bufferPadding и bottomVisiblePos используется высота viewport. Если viewport не стилизован дополнительными отступами и рамками, то для расчета его высоты подходит вариант viewport.height(), поскольку он совпадает с viewport.outerHeight(). Однако применение well-класса добавляет отступы (по 19px) и рамку (по 1px). В этом и была проблема. При расчете же topVisiblePos высота viewpot не используется, поэтому в данном issue мы не видим проблем со скроллом вверх.

И аналогичный момент пришлось учесть при перехвате всплытия события на wheelHandler в моем собственном коде. То есть offsetHeight я заменил на clientHeight, поскольку по спецификации clientHeight в отличие от offsetHeight учитывает рамки. И по результатам отладки (в случае с применением well-класса) именно этих двух пикселей не хватало, чтобы попасть в условие прерывания события.

-------------

И на счет замены нативных scrollTop, scrollHeight и clientHeight на jquery-аналоги. Исходя из данных w3c, проблемы с нативными свойствами есть у ie<=7, а также у кое-каких Опер (непоследних). Так что жесткой необходимости по замене я не вижу. Тем не менее, если мы все же хотим использовать jquery-аналоги, то в ui-scroll-jqlite.coffee необходимо будет добавить метод scrollHeight()... И это должен быть отдельный issue с отдельным pull request, тем более что в настоящее время в мастере NGScroller в части кода по перехвату скролла используются нативные scrollTop и т.д..