Hướng dẫn tạo thanh tiến trình đọc trên website bằng Javascript

Thanh tiến trình đọc (Reading Progress Bar) là một yếu tố giao diện nhỏ nhưng mang lại giá trị lớn cho trải nghiệm người dùng.

 · 5 phút đọc.

Thanh tiến trình đọc (Reading Progress Bar) là một yếu tố giao diện nhỏ nhưng mang lại giá trị lớn cho trải nghiệm người dùng.

Thanh tiến trình đọc (Reading Progress Bar) là một yếu tố giao diện nhỏ nhưng mang lại giá trị lớn cho trải nghiệm người dùng.

Giới thiệu về nền tảng thiết kế website Astro

Astro là một nền tảng thiết kế website tĩnh (Static Site Generator - SSG) hiện đại, được xây dựng nhằm giúp các nhà phát triển tạo ra những trang web nhanh, tối ưu và dễ quản lý. Được phát triển với triết lý Zero JavaScript by default, Astro giúp bạn giảm thiểu lượng JavaScript được tải trên trình duyệt, chỉ tải những gì thực sự cần thiết, từ đó cải thiện hiệu suất và trải nghiệm người dùng.

Một trong những ưu điểm nổi bật của Astro là khả năng tích hợp nhiều framework hiện đại như React, Vue, Svelte, hay SolidJS trong cùng một dự án. Điều này giúp bạn linh hoạt trong việc lựa chọn công nghệ phù hợp với từng phần của trang web mà không ảnh hưởng đến hiệu suất tổng thể.

Astro cũng hỗ trợ xử lý Markdown và MDX, giúp quản lý nội dung dễ dàng, đặc biệt hữu ích cho các blog hoặc trang tài liệu kỹ thuật. Ngoài ra, khả năng hỗ trợ Partial Hydration cho phép bạn chỉ tải các thành phần động khi cần thiết, tối ưu hóa trải nghiệm người dùng và tăng tốc độ tải trang.

Tầm quan trọng của thanh tiến trình đọc trên Website

Thanh tiến trình đọc (Reading Progress Bar) là một yếu tố giao diện nhỏ nhưng mang lại giá trị lớn cho trải nghiệm người dùng. Đây là một thanh hiển thị ở đầu hoặc bên cạnh trang web, cho biết mức độ người dùng đã đọc được bao nhiêu phần trăm của nội dung hiện tại.

Thanh tiến trình đọc không chỉ giúp người dùng biết họ đang ở đâu trong bài viết mà còn mang lại nhiều lợi ích quan trọng khác:

Cải thiện trải nghiệm người dùng (UX)

Khi người dùng truy cập vào một bài viết dài, đặc biệt là các bài viết chuyên sâu hoặc hướng dẫn kỹ thuật, việc cuộn liên tục mà không biết còn bao nhiêu nội dung phía trước có thể gây cảm giác khó chịu. Thanh tiến trình đọc giúp họ hình dung được độ dài của nội dung và ước lượng thời gian cần thiết để hoàn thành bài viết.

Ví dụ: Một người đọc một bài blog dài 5000 từ về hướng dẫn lập trình. Nếu không có thanh tiến trình, họ có thể cảm thấy mất phương hướng và dễ dàng bỏ dở. Tuy nhiên, nếu có thanh tiến trình, họ sẽ biết rằng họ đã hoàn thành 60% và có thể sẽ tiếp tục để hoàn thành nốt 40% còn lại.

Tăng thời gian truy cập và tỷ lệ hoàn thành nội dung

Một trong những yếu tố quan trọng giúp cải thiện SEO và giảm tỷ lệ thoát trang (bounce rate) là thời gian người dùng ở lại trang và tỷ lệ hoàn thành nội dung. Thanh tiến trình đọc giúp tăng động lực để người dùng hoàn thành bài viết thay vì rời đi giữa chừng.

Ngoài ra, nó cũng góp phần tạo cảm giác “game hóa” cho trải nghiệm đọc — mỗi lần người dùng cuộn trang, họ thấy thanh tiến trình di chuyển gần hơn đến mục tiêu hoàn thành, từ đó khuyến khích họ tiếp tục.

Tạo thanh tiến trình đọc bằng Javascript

Để tạo thanh tiến trình đọc bằng Javascript, bạn cần quan tâm đến 2 tệp chính: progress.astro chứa Javascript tạo tiến trình đọc, và single.astro đặt vị trí tiến trình đọc bài viết trên website. Tùy vào cấu trúc thư mục, mà 2 tệp này được định nghĩa, định dạng khác nhau, bạn cần tạo tệp table.astro và xác định vị trí của tệp single.astro để tiến hành điều chỉnh.

Tạo file Javascript để tạo thanh tiến trình đọc

Để bật tính năng tiến trình đọc trên website, nhằm xác định tiến độ đọc hết bài, nội dung trên một trang nhất định, bạn có thể thêm các đoạn code dưới đây để kích hoạt tính năng.

Trước tiên, hãy tạo một tệp mới có tên progress.astro và đặt chúng trong thư mục ~/components/javascript với đoạn code sau:

<div id="scroll-progress" class="bg-primary h-1 fixed top-0 left-0 z-50"> </div>

<script type="module">

	window.addEventListener("scroll", function () {
		const scrollableHeight =
			document.documentElement.scrollHeight - window.innerHeight;
		const scrolled = window.scrollY;
		const progressBar = document.getElementById("scroll-progress");
		const progress = (scrolled / scrollableHeight) * 100;
		progressBar.style.width = progress + "%";
	});
</script>

Bước 2: Đặt thanh tiến trình vào trong bài viết

Tiếp theo, trong tệp cấu hình bài viết, bạn chèn phần tử để hiển thị tiến trình đọc bài. Cụ thể, trong tệp single.astro, hãy thêm đoạn code sau:

---
import Progress from '~/components/javascript/progress.astro';
---

<section>
	<Progress/>
</section>

Phần tử <Progress> này sẽ là nơi hiển thị tiến trình đọc bài viết trên đầu trang, thay đổi chiều dài theo tiến độ đọc bài. Bạn có thể đặt phần tử này ở đầu bài viết hoặc trong một sidebar tùy thuộc vào thiết kế website của bạn.

Vị trí ~/components/article/progress.astro cần điều chỉnh, xác định đúng vị trí để đoạn code có thể triển khai được trên bài viết.

Nếu đoạn code không hoạt động, hoặc không thể sử dụng, có thể chúng đã được điều chỉnh. Truy cập vào đây để tiếp cận đoạn code tạo thanh tiến trình đọc mới nhất.

Như vậy, với đoạn code Javascript nêu trên, website của bạn đã có thêm thanh tiến trình đọc, giúp nội dung hiển thị trực quan, tối ưu SEO và thân thiện với người đọc hơn rất nhiều.

nhavantuonglai

Share:
Quay lại.

Có thể bạn chưa đọc

Xem tất cả »

Liên lạc trao đổi

Liên lạc thông qua Instagram

Thông qua Instagram, bạn có thể trao đổi trực tiếp và tức thời, cũng như cập nhật những thông tin mới nhất từ nhavantuonglai.

Tức thời

Bạn có thể gửi và nhận tin nhắn nhanh chóng, trực tiếp, giúp những vấn đề cá nhân của bạn được giải quyết tức thời và hiệu quả hơn.

Thân thiện

Vì tính chất là kênh liên lạc nhanh, nên bạn có thể bỏ qua những nghi thức giao tiếp thông thường, chỉ cần lịch sự và tôn trọng thì sẽ nhận được sự phản hồi đầy thân thiện, thoải mái từ tác giả.

Trao đổi trên email

Thông qua email cá nhân, bạn có thể trao đổi thỏa thuận hợp tác, kết nối chuyên sâu và mang tính chuyên nghiệp.

Tin cậy

Trong một số trường hợp, email được dùng như một tài liệu pháp lý, chính vì vậy mà bạn có thể an tâm và tin cậy khi trao đổi với tác giả thông qua email.

Chuyên nghiệp

Cấu trúc của email đặt tính chuyên nghiệp lên hàng đầu, nên những thông tin, nội dung được viết trong email từ tác giả sẽ luôn đảm bảo điều này ở mức cao nhất.