У меня есть приложение PhoneGap, которое отображает довольно длинный текст с заголовками, таблицами и изображениями, которые я тестирую на Android.
Все работает отлично, за исключением элементов со стилем position:relative
Эти элементы "отстают" при прокрутке, то есть, если я прокручиваю страницу, то эти элементы начинают и заканчивают прокрутку примерно через четверть секунды позже.
Ошибка возникает при объединении абсолютного div с относительными дочерними элементами и дочернего с overflow:auto
. Удаление любой из этих вещей исправляет ошибку, но я бы предпочел оставить ее. Хотя я бы хотел удалить таблицу и показать ее отдельно (например, в диалоговом окне), если мне нужно.
Ошибка отображается только в стандартном Android-браузере (и, конечно же, в приложении PhoneGap). До сих пор я тестировал его со следующими устройствами:
- Samsung Galaxy Nexus (4.1.1)
- Samsung Galaxy S III (4.1.2)
Любая помощь приветствуется, но я бы предпочел решение, в котором HTML и функциональность не изменены (или не слишком).
Я создал минимальный пример, отображающий ошибку. Просто откройте его на своем Android и начните прокрутку, и вы сразу увидите проблему:
<!doctype html>
<html>
<head><meta name="viewport" content="initial-scale=1.0"></head>
<body style="margin:0">
<div style="position:absolute;overflow:auto;top:100px;bottom:100px;width:100%">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a quam arcu. Duis ultrices mollis nibh ut hendrerit. Etiam a interdum metus. Integer volutpat, nibh laoreet euismod suscipit, libero sem iaculis lorem, ut hendrerit magna orci eu elit. Nulla eu ultricies libero. Nulla facilisi. Maecenas nec turpis vitae magna lobortis ornare sit amet ut lacus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc vestibulum lobortis orci, sit amet ornare dui congue nec. Morbi id magna at turpis auctor ultricies. Ut rhoncus quam augue, ut consectetur risus.</p>
<div style="position:relative;background:red;">relative box<br>moves slower than the other text</div>
<p>Fusce congue orci a nunc gravida sed pretium lorem convallis. Etiam hendrerit, ligula eget lobortis vestibulum, arcu sapien pharetra magna, auctor suscipit nisl tellus quis lacus. Cras id elit at ante mollis venenatis. Donec eu sollicitudin odio. Aliquam erat volutpat. Cras et tortor sed mi faucibus sagittis non quis metus. Morbi mauris ante, posuere vel rutrum id, mattis id enim. Morbi purus quam, euismod facilisis blandit quis, commodo at justo. Aliquam in fermentum nibh. Curabitur pharetra blandit risus sit amet tristique. Suspendisse potenti. Curabitur interdum eleifend justo, et dapibus justo volutpat sed.</p>
<div style="overflow:auto">
<table>
<tr><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th><th>test</th></tr>
<tr><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td><td>test</td></tr>
</table>
</div>
</div>
</body>
</html>