TopGit
Đánh giá repo GitHub

Hammer.js: Thư Viện Nhận Cử Chỉ Chạm JavaScript

hammerjs/hammer.js
HTopGit review image for hammerjs/hammer.js
Review by Topgit.dev for hammerjs/hammer.js, with GitHub repository stats and README context.
Nhận định nhanh

Hammer.js là một thư viện JavaScript nhỏ, chuyển thao tác chạm và con trỏ trên một phần tử DOM thành các cử chỉ có tên như tap, press và swipe. Nó làm tốt đúng một việc. Bạn có cử chỉ chạm phổ biến mà không phải tự viết state machine. Các sự kiện khởi động nhanh có sẵn press, tap và doubletap; còn lại, như triple-tap, bạn phải tự dựng một Hammer.Manager và recognizer, dùng cùng mẫu .on() quen thuộc.

Sao
★ 24.3k
Fork
⑂ 2.6k
Ngôn ngữ
JavaScript
Giấy phép
MIT
Chủ đề
Cập nhật
Jan 2026
Trang chủ
GitHub

Hammer.js Là Gì?

Hammer.js là một thư viện JavaScript nhận diện cử chỉ đa chạm trên các phần tử DOM, chuyển thao tác chạm và con trỏ thô thành các sự kiện như tap, press, doubletap và swipe. Bạn gắn nó vào một phần tử bằng new Hammer(element) rồi đăng ký cử chỉ cần theo dõi bằng .on(), giống cách dùng một event listener DOM thông thường. Hammer.js có trên npm dưới tên gói hammerjs, cũng có qua cdnjs, theo giấy phép MIT cho phép dùng thương mại.

Các Cử Chỉ Và Recognizer Được Hỗ Trợ

  • Các sự kiện khởi động nhanh press, tap và doubletap hoạt động ngay khi bạn tạo một instance new Hammer(element), không cần cấu hình thêm.
  • Cử chỉ swipe được minh họa trong chính các ví dụ CodePen của dự án, bên cạnh tap, double tap và press.
  • Một Hammer.Manager cho phép đăng ký recognizer tùy chỉnh, như ví dụ tripletap trong README được dựng từ Hammer.Tap với tùy chọn taps: 3.
  • Recognizer được thêm vào manager bằng .add() và đăng ký lắng nghe bằng .on(), giữ đúng mẫu event-listener như các cử chỉ khởi động nhanh.
  • Được phân phối dưới dạng gói hammerjs trên npm, cài đặt được bằng npm hoặc Yarn, hoặc tải trực tiếp từ CDN qua cdnjs.
  • Giấy phép MIT, nên logic nhận diện cử chỉ có thể nhúng vào sản phẩm closed-source hay thương mại.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Bắt Đầu Với Hammer.js

Đường đi khởi động nhanh, lấy thẳng từ README: lấy tham chiếu tới một phần tử, bọc nó bằng `var hammer = new Hammer(square);`, rồi đăng ký bằng `hammer.on('press', function(e) { ... });` — press, tap và doubletap đều hoạt động theo cách này mà không cần thiết lập gì thêm. Với một cử chỉ không nằm trong danh sách khởi động nhanh đó, như triple-tap, README hướng dẫn tự dựng: tạo `var manager = new Hammer.Manager(square);`, định nghĩa recognizer bằng `new Hammer.Tap({ event: 'tripletap', taps: 3 })`, thêm nó bằng `manager.add(TripleTap)`, rồi đăng ký bằng `manager.on('tripletap', function(e) { ... });`.

Các Trường Hợp Sử Dụng Phổ Biến

  • Thêm tương tác swipe-to-dismiss hoặc swipe-to-navigate cho một gallery hay carousel trên web di động.
  • Gắn hành động press-and-hold vào một giao diện cảm ứng bằng sự kiện press có sẵn, thay vì tự viết timer touchstart/touchend.
  • Nhận diện double-tap hoặc một cử chỉ multi-tap tùy chỉnh, như ví dụ tripletap trong README, trên trình xem ảnh hoặc widget bản đồ.
  • Thêm hỗ trợ cử chỉ chạm cho một component vanilla JS hoặc không phụ thuộc framework, mà không cần kéo theo cả một hệ thống gesture của UI framework.

Điểm Mạnh

  • API khởi động nhanh thực sự nhanh: new Hammer(element) cộng .on('press', fn) là toàn bộ thiết lập cho các cử chỉ phổ biến nhất.
  • Giấy phép MIT, không vướng rào cản pháp lý khi dùng cho sản phẩm thương mại hay closed-source.
  • Thư viện nhỏ, chỉ làm một việc — nhận diện cử chỉ, không cố gắng kiêm luôn UI framework hay thư viện animation.
  • Recognizer tùy chỉnh, như ví dụ tripletap, dùng lại đúng mẫu sự kiện .on() như các cử chỉ có sẵn, nên không phải học thêm một API riêng.

Hạn Chế Của Hammer.js

  • Bất cứ thứ gì ngoài ba sự kiện khởi động nhanh (press, tap, doubletap) đều đòi hỏi tự dựng Hammer.Manager và recognizer — README không liệt kê một danh sách cử chỉ dựng sẵn lớn hơn.
  • README không ghi hoạt động phát hành hay phiên bản hiện tại, nên chỉ dựa vào đây bạn không thể biết dự án còn được phát triển tích cực hay không.
  • README không nêu type TypeScript, binding cho framework, hay hướng dẫn thiết lập theo từng bundler — việc tích hợp vào React, Vue hay tương tự là do bạn tự làm.
  • Mục Examples chỉ dẫn tới demo CodePen cho tap, double tap, press và swipe — không có ví dụ tương tác nào trong repo cho trường hợp phức tạp hơn như cử chỉ tripletap tùy chỉnh.

Lựa Chọn Thay Thế Cho Hammer.js

interact.js — thư viện kéo, thay đổi kích thước và cử chỉ rộng hơn, phù hợp cho tương tác vượt ngoài tap/press/swipe đơn giản.ZingTouch — một thư viện nhận diện cử chỉ khác, cùng phạm vi khởi động nhanh tương tự Hammer.js.Pointer Events API gốc của trình duyệt — mô hình sự kiện chuẩn mà Hammer.js xây trên đó; dùng trực tiếp API này khả thi cho nhu cầu cử chỉ đơn giản mà không cần thêm thư viện.

Câu Hỏi Thường Gặp

Hammer.js có miễn phí cho mục đích thương mại không?

Hammer.js được phát hành theo giấy phép MIT, cho phép dùng cho mục đích thương mại, chỉnh sửa và phân phối lại mà không phải trả phí hay mở mã nguồn dự án của bạn. Điều này khiến Hammer.js là lựa chọn an toàn cho cả dự án cá nhân lẫn thương mại.

Hammer.js có hoạt động trên trình duyệt desktop không?

Hammer.js lắng nghe thao tác con trỏ và chạm trên bất kỳ phần tử DOM nào bạn gắn vào bằng new Hammer(element), nên cách xử lý sự kiện kiểu .on('press', ...) áp dụng như nhau bất kể loại thiết bị. README không nêu rõ ma trận hỗ trợ trình duyệt desktop cụ thể ngoài điều đó.

Sự khác biệt giữa tap và press trong Hammer.js là gì?

Tap và press đều là sự kiện khởi động nhanh trong Hammer.js, nhưng ứng với hai cử chỉ khác nhau: tap kích hoạt khi chạm nhanh, còn press ứng với việc giữ chạm, như trong ví dụ press của chính README bật/tắt một CSS class trên e.target. README không nêu ngưỡng thời gian chính xác của từng loại.

Làm sao để tạo cử chỉ triple-tap tùy chỉnh với Hammer.js?

README của Hammer.js đưa ra chính xác ví dụ này: tạo một Hammer.Manager cho phần tử của bạn, khởi tạo new Hammer.Tap({ event: 'tripletap', taps: 3 }), thêm vào manager bằng .add(), rồi đăng ký bằng manager.on('tripletap', callback).

Hammer.js còn được duy trì và phát triển không?

README của repository Hammer.js trên GitHub không liệt kê hoạt động phát hành hay changelog hiện tại, nên tình trạng duy trì không được nêu rõ ở đây. Hãy kiểm tra trực tiếp lịch sử commit và issue tracker của repository để biết hoạt động cập nhật gần nhất trước khi phụ thuộc vào nó cho dự án mới.

Hammer.js hỗ trợ những cử chỉ chạm nào?

Mặc định, các sự kiện khởi động nhanh của Hammer.js gồm press, tap và doubletap, còn trang ví dụ của dự án cũng minh họa thêm swipe. Ngoài ra, Hammer.js hỗ trợ cử chỉ tùy chỉnh, như ví dụ tripletap trong chính README, được dựng bằng Hammer.Manager và một recognizer như Hammer.Tap.

Vấn Đề Mà Hammer.js Giải Quyết

Nhận diện một cú swipe hay long-press trên trình duyệt thường đòi hỏi tự lắng nghe các sự kiện touchstart/touchmove/touchend hoặc pointer thô, tự theo dõi vị trí bắt đầu, khoảng cách và thời gian, rồi lặp lại việc đó cho từng phần tử. README của Hammer.js mô tả đúng khoảng trống này: gắn thư viện vào một phần tử, nó phát ra các sự kiện có tên như press, tap và doubletap thay vì bạn phải tự viết logic theo dõi đó từ đầu.

Cách Cài Đặt / Dùng Thử

Cài từ npm bằng `npm install --save hammerjs`, hoặc bằng Yarn với `yarn add hammerjs`. Nếu không muốn qua bước build, cdnjs cung cấp hammer.js để dùng trực tiếp bằng thẻ `<script>`. Ngoài ra, README không nêu rõ phiên bản trình duyệt hay bundler tối thiểu.

Nên Thử Hammer.js — Và Ai Nên Bỏ Qua

Người phù hợp với Hammer.js là developer đang gắn hỗ trợ cảm ứng vào một carousel, trình xem ảnh, hay component UI tùy chỉnh bằng vanilla JS — các sự kiện khởi động nhanh có sẵn press, tap và doubletap mà không cần thiết lập gì thêm, còn ví dụ tripletap trong chính README cho thấy cách gắn thêm cử chỉ khác. Nếu dự án cần pinch, rotate, hay drag-and-resize như cử chỉ dựng sẵn, hoặc muốn có type TypeScript và binding framework đi kèm, không điều nào trong số đó được README nêu ra, nên hãy tính thời gian tự xây hoặc tìm lựa chọn khác.

Nguồn & ghi công

Dựa trên repository GitHub hammerjs/hammer.js và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 15 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Muốn nghe thêm một ý kiến về hammer.js?

Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về hammer.js.

GitHub