Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencapai Tatal Tersegerak Lancar Antara Dua DIV dengan jQuery?

Bagaimana untuk Mencapai Tatal Tersegerak Lancar Antara Dua DIV dengan jQuery?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 18:37:02747semak imbas

How to Achieve Smooth Synchronized Scrolling Between Two DIVs with jQuery?

Tatal Tersegerak dengan jQuery: Mengatasi Isu Penyegerakan

Untuk mencapai tatal disegerakkan antara dua elemen DIV, adalah penting untuk mengambil kira perbezaan dalam mereka saiz. Kod yang disediakan menetapkan nilai scrollTop secara langsung, yang membawa kepada penyegerakan yang tidak konsisten. Untuk menyelesaikan masalah ini, adalah perlu untuk mengira peratusan kandungan yang ditatal dan melaraskan nilai tatal atas dengan sewajarnya.

Untuk menentukan ketinggian sebenar dan kedudukan tatal semasa, anda boleh menggunakan formula berikut:

percentage = scrollTop / (scrollHeight - offsetHeight)

Pengiraan ini memberikan nilai antara 0 dan 1, mewakili peratusan kandungan yang ditatal. Mendarabkan DIV yang lain (scrollHeight - offsetHeight) dengan nilai ini menghasilkan nilai scrollTop yang sepadan untuk penatalan berkadar.

Selain itu, untuk mengelakkan gelung peristiwa tatal yang tidak terhingga dalam Firefox, anda harus melepaskan sementara pendengar, tetapkan nilai scrollTop, dan kemudian ikat semula pendengar:

$divs.on('scroll', function(e) {
  var $other = $divs.not(this).off('scroll'), other = $other.get(0);
  var percentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
  other.scrollTop = percentage * (other.scrollHeight - other.offsetHeight);
  // Firefox workaround. Rebinding without delay isn't enough.
  setTimeout(function() { $other.on('scroll', sync); }, 10);
});

Dengan melaksanakan penambahbaikan ini, anda boleh mencapai penatalan lancar dan disegerakkan antara elemen DIV, walaupun dengan saiz yang berbeza-beza, dan mengelakkan kemungkinan isu gelung tak terhingga dalam Firefox.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Tatal Tersegerak Lancar Antara Dua DIV dengan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn