Xung đột khi sử dụng đồng thời các sự kiện bàn phím để cuộn và chụp nhanh cuộn CSS


11

Bạn có thể theo chiều ngang cuộn trang demo của tôi bằng cách nhấn Space Bar, Page Up / Page DownLeft Arrow / Right Arrowcác phím. Bạn cũng có thể chụp cuộn bằng chuột hoặc trackpad.

Nhưng chỉ có một hoặc các công trình khác.

Có cách nào để các sự kiện bàn phím và chụp nhanh cuộn CSS có thể cùng tồn tại không? Tôi đang thiếu gì? Bất kỳ trợ giúp sẽ thực sự được đánh giá cao, vì tôi đã phải vật lộn với vấn đề này trong hơn một tuần.


Hãy xem bản demo của tôi trên CodePen

(Vui lòng bỏ ghi chú đoạn mã CSS có liên quan để bật hiệu ứng chụp nhanh cuộn để thấy các phím tắt ngừng hoạt động.)



Lưu ý: Tôi đang sử dụng một mô-đun nhỏ và thanh lịch có tên là Animate Plus để đạt được hiệu ứng cuộn mượt mà.


Cập nhật: Giải pháp của @ Kostja hoạt động trong Chrome, nhưng không phải trong Safari cho Mac hoặc iOS và điều quan trọng với tôi là nó hoạt động trong Safari.

Câu trả lời:


3

Tôi đoán là không có, css ghi đè lên javascript. Nhưng bạn chỉ có thể thêm bánh xe sự kiện như:

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


Bạn có thể vui lòng gửi một liên kết đến một ngã ba trên CodePen không, vì tôi không thể làm cho giải pháp của bạn hoạt động được? Cảm ơn.
Tzar

Xin lỗi, nhưng nó không hoạt động. Bạn đã thử chưa?
Tzar

có, đã thử nó với Chrome Phiên bản 78.0.3904.108 (64Bit)
kostja

Những gì không làm việc về phía bạn? snap hoặc cuộn ở tất cả? bạn phải bấm vào xem trước khi sử dụng bàn phím btw. Bàn phím không được kết hợp với di chuột như cuộn.
kostja

Tôi mới thử nghiệm nó trong Chrome và nó hoạt động! Nhưng nó không hoạt động trong Safari cho Mac hoặc iOS, điều này quan trọng hơn với tôi đối với dự án này. Bạn có biết những gì có thể là lý do?
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;
      }
    }
  };
};    

Điều này nên làm việc.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.