Trong quá trình làm blog, chắc hẳn bạn đã từng muốn hiển thị một hộp nhỏ thống kê ngay bên cạnh trang — kiểu như một thanh mini widget trượt bên trái hiển thị tổng số bình luận, bài viết, trang, và thời gian tải trang đúng không?
Bài viết hôm nay, mình (Anh Trai Nắng Blogger 🌞) sẽ chia sẻ cho các bạn code hoàn chỉnh để thêm hộp thống kê cực đẹp này vào Blogspot.
![]() |
| Tạo hộp thống kê trượt dọc cho blogspot. |
Giới thiệu
Code được viết hoàn toàn bằng HTML, CSS và JavaScript — không cần jQuery, load nhanh, tương thích với mọi template.
Demo các bạn xem bên cạnh bài viết này luôn nhé!
Tính năng nổi bật
- Hiển thị tổng số bình luận, bài viết, trang tự động từ Blogger Feed.
- Có hiệu ứng trượt mở rộng khi hover, mượt mà và tinh tế.
- Hiển thị thời gian tải trang thực tế.
- Giao diện phẳng, gọn gàng, đẹp mắt, nằm bên trái màn hình.
- Dễ chỉnh màu, font hoặc kích thước theo theme của bạn.
Cách chèn code vào Blogspot
Bước 1: Truy cập Blogger → Giao diện → Chỉnh sửa HTML
Bước 2: Tích hợp Fontawesome 4.7 nếu blog bạn chưa có, chèn đoạn mã sau trước thẻ đóng </body>
<link href='//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css' rel='stylesheet' type='text/css'/>
Bước 3: Đặt tất cả code sau trước thẻ đóng </body> hoặc trong widget HTML/Javascript đều được:
<style>
:root{
--stat-collapsed: 44px; /* rộng khi thu gọn */
--stat-expanded: 250px; /* rộng khi hover */
--stat-height: 40px; /* cao mỗi dòng */
--stat-radius: 9999px;
--stat-border: #e5e7eb;
--shadow: 0 6px 20px rgba(0,0,0,.12);
--fg: #111827;
--bg: #ffffff;
--cmt: #2563eb; /* xanh comment */
--post:#d97706; /* cam post */
--page:#16a34a; /* xanh lá page */
--load:#6d28d9; /* tím load */
}
/* ===== Container cố định, canh phải ===== */
.statistics{
position: fixed;
left: 15%;
top: 32%;
background: var(--bg);
border-radius: 12px;
z-index: 200;
padding: 10px 8px;
box-shadow: var(--shadow);
width: 60px;
box-sizing: border-box;
}
.statistics ul{
padding: 0; margin: 0; list-style: none;
display: flex; flex-direction: column; gap: 8px;
}
/* ===== Item chuẩn hoá kích thước để NHÌN ĐỀU ===== */
.icon-statistics{
width: var(--stat-collapsed);
height: var(--stat-height);
border: 1px solid var(--stat-border);
border-radius: var(--stat-radius);
display: inline-flex;
align-items: center;
gap: 10px;
padding: 0 10px;
box-sizing: border-box;
color: var(--fg);
overflow: hidden;
cursor: default;
transition: width .22s ease, background-color .22s ease, color .22s ease, border-color .22s ease;
}
.icon-statistics i{
width: 20px; text-align: center; font-size: 16px; flex: 0 0 20px;
}
/* Hover: mở rộng ĐỀU tới cùng 1 độ rộng */
.icon-statistics:hover{ width: var(--stat-expanded); }
/* Nhãn/tooltip nội bộ, không nhảy chữ */
.icon-statistics .label{
opacity: 0; white-space: nowrap; pointer-events: none;
transition: opacity .18s ease;
font-size: 14px; line-height: 1;
}
.icon-statistics:hover .label{ opacity: 1; }
/* Màu sắc từng loại khi hover (đồng bộ border/bg/fg) */
.icon-statistics.cmt-statistics:hover{ background: var(--cmt); color: #fff; border-color: var(--cmt); }
.icon-statistics.post-statistics:hover{ background: var(--post); color: #fff; border-color: var(--post); }
.icon-statistics.page-statistics:hover{ background: var(--page); color: #fff; border-color: var(--page); }
.icon-statistics.load-statistics:hover{ background: var(--load); color: #fff; border-color: var(--load); }
/* Số liệu căn đều, không lệch icon */
.metric{
margin-left: auto; /* đẩy số về cuối để hàng thẳng cột */
font-size: 13px;
opacity: .9;
}
/* Tôn trọng người dùng hạn chế chuyển động */
@media (prefers-reduced-motion: reduce){
.icon-statistics, .icon-statistics .label{ transition: none; }
}
/* Mobile: hạ kích thước một chút cho đều */
@media (max-width: 480px){
:root{
--stat-collapsed: 40px;
--stat-expanded: 160px;
--stat-height: 36px;
}
}
</style>
<div class="statistics" role="region" aria-label="Thống kê blog">
<ul>
<li>
<span class="icon-statistics cmt-statistics" title="Tổng bình luận">
<i class="fa fa-comments-o" aria-hidden="true"></i>
<span class="label">Tổng bình luận</span>
<span id="totalComment" class="metric" aria-live="polite"></span>
</span>
</li>
<li>
<span class="icon-statistics post-statistics" title="Tổng bài viết">
<i class="fa fa-edit" aria-hidden="true"></i>
<span class="label">Tổng bài viết</span>
<span id="totalPost" class="metric" aria-live="polite"></span>
</span>
</li>
<li>
<span class="icon-statistics page-statistics" title="Tổng trang">
<i class="fa fa-file-powerpoint-o" aria-hidden="true"></i>
<span class="label">Tổng trang</span>
<span id="totalPage" class="metric" aria-live="polite"></span>
</span>
</li>
<li>
<span class="icon-statistics load-statistics" title="Thời gian tải trang">
<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
<span class="label">Thời gian tải trang</span>
<span id="loadTime" class="metric" aria-live="polite"></span>
</span>
</li>
</ul>
</div>
<script>//<![CDATA[
/* ===== Lấy dữ liệu ===== */
function numberOfComments(json) {
var total = json.feed?.openSearch$totalResults?.$t || 0;
document.getElementById("totalComment").textContent = total + ' comments';
}
function showpostcount(json) {
var total = parseInt(json.feed?.openSearch$totalResults?.$t || '0', 10);
document.getElementById("totalPost").textContent = total + ' posts';
}
function numberOfPages(json) {
var total = json.feed?.openSearch$totalResults?.$t || 0;
document.getElementById("totalPage").textContent = total + ' pages';
}
/* ===== Bộ đếm load time (dừng khi trang load xong) ===== */
var startTime = new Date();
var loopTime = setInterval(currentTime, 100);
function currentTime() {
var a = Math.floor((new Date() - startTime) / 100) / 10;
if (a % 1 === 0) a += ".0";
document.getElementById("loadTime").textContent = a + ' seconds';
}
window.addEventListener('load', function(){ clearInterval(loopTime); });
//]]></script>
<!-- Feeds Blogger (JSONP) -->
<script src="/feeds/comments/default?alt=json-in-script&callback=numberOfComments" defer='defer'></script>
<script src="/feeds/posts/default?alt=json-in-script&callback=showpostcount" defer='defer'></script>
<script src="/feeds/pages/default?alt=json-in-script&callback=numberOfPages" defer='defer'></script>
Bước 4: Lưu lại và kiểm tra kết quả ở trang chủ nhé.
Tùy chỉnh thêm
Muốn đổi vị trí sang bên phải 👉 đổi left: 15% thành right: 15%.
Muốn đổi màu chủ đạo:
- Comment:
--cmt: #2563eb; - Post:
--post: #d97706; - Page:
--page: #16a34a; - Load:
--load: #6d28d9;
Thay font-size hoặc bo tròn bằng cách chỉnh trong :root.
Kết luận
Với vài dòng code đơn giản, bạn đã có ngay hộp thống kê trượt bên trái đẹp mắt cho Blogspot mà không cần plugin hay widget phức tạp.
Nếu bạn thích mẫu này, hãy để lại bình luận hoặc chia sẻ bài viết để mình có thêm động lực chia sẻ nhiều tiện ích Blogger hay hơn nhé 💖
- Tổng bình luận
- Tổng bài viết
- Tổng trang
- Thời gian tải trang
Tăng tương tác MXH
Like, sub, view, comment, share livestream…
- Instagram, TikTok, YouTube, Twitter, Shopee
- Dịch vụ nhanh – ổn định
🎁 Mã giảm giá: đang cập nhật
Khám pháTài khoản Premium
CapCut, Canva, ChatGPT, Semrush, HMA, Google Ads…
- Kích hoạt nhanh – bảo hành rõ
- Đa dạng gói
🎁 Mã giảm giá: đang cập nhật
Mua ngayTemplate Blogspot
Thiết kế chuẩn SEO, tối ưu tốc độ & giao diện.
- Nhiều mẫu cho blog, shop
- Tùy biến dễ
🎁 Mã giảm giá: anhtrainang (-10%)
Xem mẫuBài viết liên quan
Nhận xét (20)
HƯỚNG DẪN BÌNH LUẬN
Chèn link
Sử dụng công cụ Tạo link
Chèn hình ảnh
LINK_ANH - sử dụng công cụ upload ảnh. Và chỉ cần lấy link ảnh chèn vào bình luận là ảnh tự động hiển thị.
Định dạng chữ
<b>Chữ in đậm</b>
<i>Chữ in nghiêng</i>
<u>Chữ gạch chân</u>
<strike>Chữ gạch ngang</strike>
Chèn một đoạn Code
Đầu tiên sử dụng công cụ này để mã hóa đoạn code muốn chèn.
Sau đó dùng thẻ [code] CODE_ĐÃ_MÃ_HÓA [/code]
Khác
👉 Nhập Email bạn hay dùng để nhận thông báo khi mình trả lời bình luận của bạn.
👉 Vui lòng không nhập bất kỳ Liên kết Spam nào trong hộp nhận xét.
👉 Tích vào ô "Thông báo cho tôi" để nhận thông báo nội dung phản hồi của bình luận.
Chèn emoji: Nhấn tổ hợp phím “Windows + . (dấu chấm)”


Median UI ko hợp lắm
Trả lờiXóanói đúng hơn là ko dành cho UI luôn :v
XóaỦa avt
Trả lờiXóakhê luôn r https://i.imgur.com/v6WLde2.jpeg
Trả lờiXóalà sao nữa đây?
Xóarõ là đứa report nhưng chẳng thấy thông báo trong mail
XóaNhận xét này đã bị tác giả xóa.
Xóatui có report nhưng gg báo fail, còn ai report đc thì mình ko bt: https://i.imgur.com/QdSI3Rl.png
Trả lờiXóanhưng mà sao chơi cứ report, cứ phá nhau làm chi thế?
Xóabị chơi trc nên chơi lại, nhg mình ko thành công.
Xóathật sự là trước mình ko biết sao, sau này chỉ thấy ở 1 phía là bạn phá truongdevs thôi, chứ cũng ko hiểu tại sao lại như vậy
Xóahay a :)
Trả lờiXóaThanh bên trái của mấy ông cần tối ưu lại nhé! Ở giao diện mobile khó nhìn, theo cảm nhận của tôi là v!
Trả lờiXóađúng rồi, tôi cũng thấy vậy á mà chưa biết làm thế nào đây nè!
XóaMấy nữa ông TruongDevs real sẽ lên bài"Trận Chiến Giành Lại Blog bị đánh bản quyền - Pha Cứu Thua Xương Máu Cho Dân Blogspot"
Trả lờiXóaTôi giờ không làm blog nữa, bạn gỡ backlink TruongDevs.com ra nhé.
Trả lờiXóaAi bảo thế? Xàm!
XóaTruongDevs bảo thế!
XóaBlog nay thấy clean đẹp quá anh
Trả lờiXóamới đổi theme được cỡ 2 tháng đó em
Xóa