Đăng nhập

Thêm cuộn mượt cho web Laravel bằng Lenis (Vite)

Hướng dẫn thêm hiệu ứng cuộn mượt cho dự án Laravel dùng Vite với Lenis. Từ cài đặt, CSS, JS đến build, kèm mẹo xử lý xung đột và FAQ.
Thêm cuộn mượt cho web Laravel bằng Lenis (Vite)

Bước 1: Cài đặt Lenis

npm install lenis

Hoặc khai báo thẳng trong package.json rồi cài:

{
  "dependencies": {
    "lenis": "^1.1.14"
  }
}

Sau đó:

npm install

Bước 2: Thêm stylesheet cho Lenis

Tạo hoặc mở resources/css/app.css và thêm:

html,
body {
  height: 100%;
}

.lenis.lenis-smooth {
  scroll-behavior: smooth;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

.lenis.lenis-stopped {
  overflow: hidden;
}

.lenis.lenis-smooth iframe {
  pointer-events: none;
}

Đảm bảo layout Blade đã load CSS chứa các style trên.


Bước 3: Khởi tạo Lenis trong JavaScript

Mở resources/js/app.js và chọn một trong hai cách sau.

Cách 1 — Dùng autoRaf (đơn giản, cắm là chạy):

import Lenis from 'lenis';

const lenis = new Lenis({
  autoRaf: true,
});

lenis.on('scroll', () => {
  // Hook cho xử lý khi cuộn nếu cần
});

Import Lenis vào app.js

Cách 2 — Viết vòng lặp thủ công (tùy biến cao):

import Lenis from 'lenis';

const lenis = new Lenis();

function raf(time) {
  lenis.raf(time);
  requestAnimationFrame(raf);
}

requestAnimationFrame(raf);

Đảm bảo Vite nhập đúng entry:

@vite(['resources/css/app.css', 'resources/js/app.js'])

Code Vite trong thẻ <head>


Bước 4: Build hoặc chạy dev

npm run build
# hoặc
npm run dev

Kiểm tra nhanh

  • Mở bất kỳ trang trong dự án và cuộn thử.

  • Nếu không có hiệu ứng, kiểm tra DevTools console.

  • Đảm bảo class từ Lenis đã áp dụng lên <html>.


Ghi chú và mẹo

  • Với trang dài nhiều section, Lenis cho cảm giác mượt thấy rõ.

  • Nếu dùng scroll-behavior ở thẻ html ngoài phạm vi Lenis, có thể xung đột.

  • Trang có iframe tương tác: bật lại pointer-events khi cần ở state tương ứng.

  • Ưu tiên autoRaf cho nhanh gọn. Chỉ viết loop thủ công khi cần đồng bộ thêm animation khác.


FAQ

Lenis là gì và dùng để làm gì trong Laravel?

Thư viện smooth scroll giúp cuộn mượt, tạo cảm giác liền mạch, dễ chịu cho người dùng.

Nên dùng autoRaf hay tự viết requestAnimationFrame?

autoRaf cho setup nhanh. Tự viết loop khi cần đồng bộ nhiều animation hoặc kiểm soát nhịp render.

Vì sao iframe không click được?

Rule pointer-events: none trong CSS mẫu vô hiệu hóa tương tác khi đang cuộn. Hãy bật lại khi cần.

Có xung đột với scroll-behavior mặc định không?

Có thể. Đảm bảo style chỉ áp dụng trong phạm vi class của Lenis.


Tài liệu tham khảo

Bài trước

Soft Delete là gì? Hướng dẫn “xóa mềm” chuẩn bài: an toàn dữ liệu, dễ khôi phục

Bài tiếp theo

So sánh VPS và Cloud Server: chọn hạ tầng tối ưu cho doanh nghiệp, nhanh và ổn định

Để lại bình luận của bạn

Email của bạn sẽ không được công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận bản tin

Đăng ký bản tin email để nhận những bài viết mới nhất trực tiếp trong hộp thư của bạn.
Cảm hứng mỗi ngày, nói không với spam ✨