Trình tạo bảng giá CSS

Tiếp theo

Bảng giá là phần “đất vàng” trên trang marketing của bạn: nó phải rõ ràng, dễ lướt mắt và dẫn khách truy cập tới đúng gói mà doanh nghiệp muốn họ chọn. Công cụ này dựng một thẻ giá bằng HTML + CSS, gồm tên gói, giá và màu nhấn cho chữ giá cũng như nút kêu gọi hành động. Đặt nhiều thẻ cạnh nhau để tạo thành bảng giá hoàn chỉnh, rồi sao chép mã vào trang đích của bạn.

Cách dựng một bảng giá

  1. 1

    Nhập tên gói

    Tiêu đề gói ở đầu thẻ, ví dụ "Pro".

  2. 2

    Đặt giá

    Giá hiển thị bằng chữ lớn, ví dụ "$29". Hậu tố "/mo" được thêm tự động.

  3. 3

    Chọn màu nhấn

    Dùng cho chữ giá và nút kêu gọi hành động. Hãy chọn màu phù hợp với thương hiệu của bạn.

  4. 4

    Sao chép mã

    Thẻ gồm danh sách tính năng có sẵn, nút kêu gọi hành động và khối <style> riêng. Bạn có thể chỉnh các mục ngay trong mã.

  5. 5

    Lặp lại cho các gói khác

    Để có bảng giá hoàn chỉnh, hãy nhân bản thẻ cho từng gói và xếp chúng theo lưới.

Cấu trúc khung sườn

<section class="pricing">
  <article class="plan">
    <h3>Starter</h3>
    <p class="price">$9 <span>/mo</span></p>
    <p class="tagline">For solo projects.</p>
    <ul class="features">
      <li>3 projects</li>
      <li>10 GB storage</li>
      <li>Community support</li>
    </ul>
    <a class="cta" href="#">Start free</a>
  </article>

  <article class="plan featured">
    <span class="badge">Most popular</span>
    <h3>Pro</h3>
    <p class="price">$29 <span>/mo</span></p>
    <!-- ... -->
  </article>

  <article class="plan">
    <h3>Team</h3>
    <!-- ... -->
  </article>
</section>

Lưới ba cột responsive

.pricing {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
  align-items: stretch;
}

.plan {
  padding: 2rem 1.5rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  display: flex;
  flex-direction: column;
}

.plan.featured {
  border: 2px solid #2563eb;
  position: relative;
  transform: translateY(-4px);
  box-shadow: 0 10px 30px rgba(37, 99, 235, 0.15);
}

Kết hợp auto-fit với minmax(240px, 1fr) cho bố cục ba cột trên desktop và xếp chồng một cột trên di động, không cần cấu hình gì thêm.

Gói được làm nổi bật

Những tín hiệu thị giác giúp thu hút sự chú ý:

  • Viền màu trùng với màu nhấn của thương hiệu.
  • Nâng nhẹ thẻ lên bằng margin-top âm hoặc translateY(-4px).
  • Nút CTA lớn hơn, thường tô đầy màu thương hiệu, trong khi các gói còn lại chỉ dùng nút viền.
  • Nhãn (“Phổ biến nhất”, “Đáng tiền nhất”) đặt absolute ở đỉnh thẻ.
  • Thẻ cao hơn để hút mắt, dù cách này khiến việc so sánh giữa các gói khó hơn.

Đừng dùng tất cả cùng lúc, hãy chọn hai hoặc ba. Quá nhiều tín hiệu sẽ làm phẳng chính cái thứ bậc mà bạn muốn tạo ra.

Nút chuyển đổi theo tháng / theo năm

<div class="billing-toggle">
  <button data-active="true">Monthly</button>
  <button>Annual · Save 20%</button>
</div>

Nút này thường đổi giá trị giá bằng một đoạn JavaScript ngắn, hoặc dùng trạng thái :checked của nút radio. Hãy hiển thị luôn phần trăm giảm giá hoặc số tiền tiết kiệm được (ví dụ “Tiết kiệm 20% khi trả theo năm”) ngay trên nhãn của nút: trong nhiều bảng giá, đây là chi tiết có sức thuyết phục lớn nhất.

Định dạng dòng tính năng

.features {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.features li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.features li.yes::before {
  content: "";
  width: 16px; height: 16px;
  background: url(...check.svg);
}
.features li.no {
  color: #9ca3af;
  text-decoration: line-through;
}

Dùng dấu tích cho tính năng “có”, và chữ xám hoặc dấu X nhạt cho tính năng “không có”. Đừng gạch ngang chữ mà không giảm độ tương phản, vì như vậy nó lại trông giống một điểm được nhấn mạnh hơn là một tính năng bị loại bỏ.

Giữ cho CTA thật nổi bật

Mỗi gói một nút CTA, đồng nhất về mặt thị giác giữa các gói. Dùng chữ khác nhau cho từng gói (“Dùng thử miễn phí”, “Nâng cấp lên Pro”, “Liên hệ đội ngũ bán hàng”) là hoàn toàn ổn, và thực tế còn giúp dẫn người dùng vào đúng luồng.

Làm cho bảng dễ lướt mắt

Người dùng hiếm khi đọc bảng giá từ trái sang phải; họ lướt qua giá trước, rồi tới nút CTA, cuối cùng mới xem khác biệt về tính năng. Hãy tối ưu theo đúng thứ tự đó:

  1. Tên góigiá cỡ lớn, đặt ở đầu thẻ.
  2. Nút CTA nhìn thấy được mà không phải cuộn thẻ.
  3. Danh sách tính năng nằm bên dưới. Hãy làm nổi bật khác biệt giữa các gói thay vì lặp lại những tính năng giống hệt nhau ở mọi cột.

Danh sách kiểm tra khả năng tiếp cận

  • Mỗi gói là một thẻ <article> riêng, có <h3> của chính nó.
  • Nhãn “Phổ biến nhất” phải là nhãn chữ nhìn thấy được, không chỉ dựa vào màu sắc (để hỗ trợ người dùng mù màu).
  • Nút CTA dùng chữ mô tả rõ ràng (“Bắt đầu dùng thử gói Pro”) thay vì “Nhấn vào đây”.
  • Nút chuyển chu kỳ thanh toán có aria-pressed hoặc dùng ngữ nghĩa của nút radio.
  • Nếu triển khai bằng JavaScript, thay đổi giá khi bấm nút cần được thông báo qua aria-live="polite".

Câu hỏi thường gặp

Ba gói là lựa chọn mặc định trong marketing: dễ lướt mắt hơn và làm nổi bật rõ một phương án ở giữa. Bốn gói chỉ hợp lý khi bạn thực sự có bốn nhóm khách hàng (cá nhân / nhóm / doanh nghiệp / doanh nghiệp lớn). Từ năm gói trở lên thường khiến khách truy cập bối rối; khi đó hãy tách thành hai bảng hoặc thêm một bảng so sánh riêng.

Tùy mô hình kinh doanh. Mặc định theo năm sẽ làm nổi bật mức giảm giá và neo một mức giá thấp hơn vào tâm trí khách hàng; mặc định theo tháng thì bớt “gây áp lực” hơn. Nếu điều này ảnh hưởng trực tiếp tới doanh thu, hãy chạy A/B test. Một cách dung hòa: mặc định theo năm nhưng để tùy chọn theo tháng chỉ cách một cú nhấp chuột.

Lưới repeat(auto-fit, minmax(240px, 1fr)) tự lo việc đó. Khi khung nhìn hẹp hơn khoảng 800px, các thẻ tự động dồn về một cột mà không cần bất kỳ media query nào.

Ở ngoài cùng bên phải, nếu bạn sắp xếp các gói theo giá tăng dần. Chữ trên nút CTA nên là “Liên hệ đội ngũ bán hàng” chứ không phải một con số giá, và thẻ vẫn phải đồng nhất về mặt thị giác với các thẻ còn lại để bảng dễ lướt mắt. Một số công ty tách hẳn gói doanh nghiệp xuống một khu vực riêng bên dưới bảng để không làm gián đoạn việc so sánh giá.

Công cụ liên quan