У меня есть веб-страница с тремя div, которые синхронизируются вместе.
+----------+
| TOP |
+---+----------+
| | ||
| L | CENTER ||
| |_________||
+---+----------+
<!--Rough HTML-->
<div>
<div class="topbar-wrapper">
<div class="topbar"></div>
</div>
<div class="container">
<div class="sidebar-wrapper">
<div class="sidebar"></div>
</div>
<div class="center-wrapper"> <!-- Set to the window size & overflow:scroll -->
<div class="center"></div> <!-- Has the content -->
</div>
</div>
</div>
В центре div есть полосы прокрутки, как горизонтальные, так и вертикальные. Верхний и левый divs не имеют полос прокрутки. Вместо этого, когда перемещается горизонтальная полоса прокрутки, событие прокрутки обновляет верхний div margin-left
соответствующим образом. Аналогично, когда перемещается вертикальная полоса прокрутки, обновляется margin-top
. В обоих случаях они имеют отрицательное значение.
$('.center-wrapper').scroll(function(e) {
$('.sidebar').css({marginTop: -1 * $(this).scrollTop()});
$('.topbar').css({marginLeft: -1 * $(this).scrollLeft()});
});
Это отлично работает в Chrome и Firefox. Но в Safari существует задержка между перемещением полосы прокрутки и заданного отрицательного поля.
Есть ли лучший способ сделать это? Или есть какой-то способ избавиться от отставания в Сафари?
EDIT:
Посмотрите этот скрипт, чтобы увидеть отставание в Safari: http://jsfiddle.net/qh2K3/