Kaydırma ve CSS kaydırma yapıştırma için klavye olaylarını aynı anda kullanırken çakışma


11

Yatay basarak benim demo sayfası kaydırma yapabilirsiniz Space Bar, Page Up / Page Downve Left Arrow / Right Arrowanahtarlar. Fare veya izleme dörtgeni ile kaydırma da yapabilirsiniz.

Ama sadece biri ya da diğeri çalışıyor.

Klavye olaylarının ve CSS kaydırma yapışmasının bir arada var olabilmesinin bir yolu var mı? Neyi kaçırıyorum? Bir haftadan fazla bir süredir bu sorunla mücadele ettiğim için herhangi bir yardım gerçekten takdir edilecektir.


CodePen'deki demomu inceleyin

(Klavye kısayollarının çalışmayı durdurduğunu görmek için kaydırma yapıştırma efektini etkinleştirmek için lütfen ilgili CSS kod parçasını kaldırın.)



Not: Yumuşak kaydırma animasyonunu elde etmek için Animate Plus adlı küçük ve zarif bir modül kullanıyorum .


Güncelleme: @ Kostja'nın çözümü Chrome'da çalışıyor, ancak Mac veya iOS için Safari'de çalışmıyor ve Safari'de çalışması benim için çok önemli.

Yanıtlar:


3

Sanırım yok, css javascript üzerine yazar. Ancak, aşağıdaki gibi tekerlek olay listeleyicilerini ekleyebilirsiniz:

window.addEventListener("wheel", function() {
    if(event.deltaY > 0){
      animate({
        easing: "out-quintic",
        change: animateScroll(1)
      })      
    }
      if(event.deltaY < 0){
      animate({
        easing: "out-quintic",
        change: animateScroll(-1)
      })      
    }      
});

https://codepen.io/kostjaaa/pen/NWWVBKd


CodePen'de bir çatala bağlantı gönderebilir misiniz, çünkü çözümünüzü işe yaramıyor muyum? Teşekkürler.
Tzar

Üzgünüm, ama çalışmıyor. Bunu denediniz mi?
Tzar

evet Chrome Sürümü 78.0.3904.108 (64Bit) ile denedim
kostja

Yanınızda ne çalışmıyor? çırpıda veya kaydırmada? btw klavyesini kullanmadan önce görünümü tıklatmanız gerekir. Klavye, kaydırma ile birlikte üzerine gelindiğinde birleştirilmez.
kostja

Sadece Chrome'da test ettim ve işe yarıyor! Ancak Mac veya iOS için Safari'de çalışmıyor, bu da bu proje için benim için çok daha önemli. Sebep ne olabilir biliyor musun?
Tzar

0
window.onload = () => {
  window.addEventListener("wheel", () => {
    const direction = event.deltaY > 0 ? 1 : event.deltaY < 0 ? -1 : false;

    if (direction) {
      animate({
        easing: "out-quintic",
        change: animateScroll(direction)
      });
    }
  });

  document.body.onkeydown = event => {
    switch (event.key) {
      case " ": // Space Bar
      case "PageDown":
      case "ArrowRight": {
        animate({
          easing: "out-quintic",
          change: animateScroll(1)
        });
        break;
      }
      case "PageUp":
      case "ArrowLeft": {
        animate({
          easing: "out-quintic",
          change: animateScroll(-1)
        });
        break;
      }
    }
  };
};    

Bu çalışmalı.

https://codepen.io/JZ6/pen/XWWQqRK

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.