В последнее время я работаю над мобильным webapp. Я оптимизирую первый мобильный телефон, ориентируясь именно на iOS для iPhone прямо сейчас. Мне не нужен точный внешний вид родного приложения, но я считаю, что чувство принадлежности к природе является абсолютным. Я сделал разметку и CSS, чтобы отразить эту идею, оставив меня с этим (аннотированный, чтобы лучше понять проблему, с которой я столкнулся):
 
Все это работает без проблем, и у него также есть преимущество иметь собственное ощущение со статическим верхним и нижним колонтитулом и прокручиваемый внутренний вид (благодаря -webkit-overflow-scrolling: touch).
Как любой, кто использовал iOS более 5 минут, будет знать, когда вы прокручиваете вверх или вниз, вы получаете хорошую импульсную прокрутку. Кроме того, когда вы попадаете в верхнюю часть списка, вы получаете хороший эффект "отскока":
 
Я чувствую, что это помогает определить ощущение iOS, и такая маленькая деталь может пройти долгий путь. К счастью, когда вы находитесь под вершиной списка в прокручиваемом элементе в webapp и прокручиваете верхнюю часть, вы получаете тот же эффект. Это желаемое поведение в действии:
 
Однако, когда вы находитесь в верхней части списка и пытаетесь воссоздать одно и то же поведение отскока вверху списка (à la Setting.app, см. выше), мы получаем следующее поведение, которое  Нежелательный:

Я видел несколько похожих questions в переполнении стека, но все они выбирают отключить подпрыгивая. Мне интересно, возможно ли  продолжать прыгать, но всегда делать это на body section section#main, а не на webapp chrome. Я не использую jQuery, поэтому я бы предпочел, чтобы ответы были в прямом JavaScript (бонусные баллы для решения CSS).
Здесь GitHub repo со всем кодом (Sinatra, HAML и Sass, текущая ветвь so) или JSFiddle со сломанными изображениями и ссылками, но показывает проблему, о которой идет речь на iPhone (лучше всего добавить на рабочий стол для проверки).