Trình Tạo CSS Gradient

Xây dựng gradient CSS tuyến tính và hướng tâm trực quan rồi sao chép mã CSS

Thử ví dụ
Loại
Góc135°

Điểm dừng màu

0%
100%

Đầu ra CSS

background: linear-gradient(135deg, #6366f1 0%, #ec4899 100%);

CSS Gradient Là Gì?

Trình tạo CSS gradient là công cụ trực quan giúp bạn xây dựng hiệu ứng chuyển màu mượt mà mà không cần viết cú pháp gradient thủ công. Trong CSS, gradient là sự chuyển tiếp mượt mà giữa hai màu trở lên, được trình duyệt hiển thị trực tiếp mà không cần tệp hình ảnh. Đặc tả CSS Image Module Level 4 định nghĩa các hàm gradient là một loại giá trị hình ảnh, nghĩa là chúng có thể xuất hiện ở bất kỳ nơi nào chấp nhận giá trị background-image, list-style-image, hoặc border-image. Vì trình duyệt hiển thị gradient tại thời điểm render, chúng có thể thu phóng ở bất kỳ độ phân giải nào và không bao giờ tạo ra hiện tượng mờ trên màn hình high-DPI. Sử dụng trình tạo CSS gradient giúp tiết kiệm thời gian và giảm thiểu việc phải đoán mò — bạn điều chỉnh màu sắc và vị trí trực quan, rồi sao chép quy tắc CSS hoàn chỉnh.

CSS hỗ trợ ba hình dạng gradient chính: tuyến tính (dọc theo một đường thẳng), hướng tâm (tỏa ra từ một điểm trung tâm), và conic (quét xung quanh một điểm trung tâm). Mỗi hình dạng chấp nhận danh sách điểm dừng màu, nơi bạn chỉ định màu sắc và tùy chọn vị trí (phần trăm hoặc độ dài). Trình duyệt nội suy màu sắc giữa các điểm dừng sử dụng không gian màu sRGB theo mặc định, mặc dù CSS Color Level 4 cho phép chỉ định các không gian màu khác như oklch và lab để có sự chuyển tiếp trực quan mượt mà hơn.

Gradient thay thế nền ảnh cho hầu hết các mục đích trang trí trên web. Một quy tắc CSS duy nhất tạo ra những gì trước đây yêu cầu xuất từ Photoshop và một yêu cầu HTTP. Chúng độc lập với độ phân giải, không tốn băng thông ngoài bản thân CSS, và có thể được tạo hiệu ứng hoặc chuyển đổi bằng các thuộc tính CSS tiêu chuẩn. Cú pháp gradient đã ổn định trên tất cả các trình duyệt lớn từ năm 2013, và dạng không có tiền tố nhà sản xuất hoạt động trên Chrome, Firefox, Safari, và Edge mà không cần fallback.

Tại Sao Dùng Trình Tạo CSS Gradient Này?

Viết cú pháp gradient thủ công đồng nghĩa với việc phải đoán vị trí điểm dừng, kiểm tra giá trị góc, và liên tục tải lại trang để xem kết quả. Công cụ xây dựng trực quan cho phép bạn thấy gradient ngay khi tạo, điều chỉnh điểm dừng bằng cách kéo thả, và sao chép CSS hoàn chỉnh khi ưng ý.

Xem Trước Trực Quan Theo Thời Gian Thực
Xem gradient cập nhật tức thì khi bạn thay đổi màu sắc, vị trí và góc. Không cần chuyển đổi qua lại giữa trình soạn thảo và trình duyệt.
🔒
Xử Lý Ưu Tiên Quyền Riêng Tư
Toàn bộ quá trình hiển thị diễn ra trong trình duyệt của bạn. Không có dữ liệu màu sắc hay cấu hình gradient nào được gửi lên máy chủ.
🎨
Nhiều Loại Gradient
Xây dựng gradient tuyến tính và hướng tâm với toàn quyền kiểm soát hướng, góc và vị trí điểm dừng màu. Sao chép CSS chỉ với một cú nhấp.
📋
Không Cần Đăng Ký
Mở trang và bắt đầu xây dựng ngay. Không đăng ký, không yêu cầu email, không giới hạn tốc độ. Hoạt động ngoại tuyến sau khi tải xong.

Các Trường Hợp Sử Dụng Trình Tạo CSS Gradient

Phát Triển Frontend
Xây dựng nền cho phần hero, lớp phủ thẻ và trạng thái hover của nút. Xem trước gradient ở kích thước mục tiêu, rồi dán CSS trực tiếp vào stylesheet hoặc cấu hình Tailwind.
Thiết Kế Template Email
Một số ứng dụng email hỗ trợ CSS gradient trong inline style. Tạo mã gradient chính xác và nhúng trực tiếp vào phần tử, kèm màu nền đơn sắc dự phòng cho các ứng dụng không hiển thị gradient.
Tạo Mẫu Thiết Kế
Khi lặp thử các bảng màu trên trình duyệt thay vì Figma, hãy tạo nền gradient nhanh chóng. So sánh nhiều lựa chọn cạnh nhau mà không cần xuất tài nguyên.
Tạo Giao Diện Dashboard DevOps
Dashboard trạng thái và giao diện giám sát sử dụng gradient màu để biểu diễn phạm vi mức độ nghiêm trọng (xanh đến đỏ) hoặc mật độ dữ liệu. Tạo giá trị gradient và áp dụng cho nền biểu đồ hoặc thanh trạng thái.
Trực Quan Hóa Dữ Liệu
Các thư viện biểu đồ như D3.js và Recharts chấp nhận định nghĩa CSS gradient cho vùng tô màu và heatmap. Xây dựng gradient trực quan, rồi trích xuất màu điểm dừng cho hàm tỷ lệ của bạn.
Học CSS
Học viên học CSS có thể thử nghiệm cú pháp gradient, xem cách thay đổi góc ảnh hưởng đến hướng, và hiểu cách định vị điểm dừng màu. CSS được tạo ra là tài liệu tham khảo thực tế.

Tài Liệu Tham Khảo Các Loại CSS Gradient

CSS định nghĩa năm hàm gradient. Ba loại chính (linear, radial, conic) mỗi loại đều có biến thể lặp lại tạo ra mẫu lát gạch. repeating-linear-gradient() và repeating-radial-gradient() hữu ích cho nền có sọc và các vòng đồng tâm. Tất cả hàm gradient chấp nhận điểm dừng màu theo bất kỳ định dạng màu CSS nào: HEX, RGB, HSL, tên màu được đặt tên, hoặc oklch. Hỗ trợ trình duyệt cho cả năm hàm thực tế là toàn diện trên Chrome, Firefox, Safari, và Edge — không cần tiền tố nhà sản xuất.

HàmCú pháp ví dụHướngDùng phổ biến cho
linear-gradient()to right, #f00, #00fStraight lineBackgrounds, hero sections, progress bars
radial-gradient()circle, #f00, #00fOutward from centerSpotlight effects, buttons, badges
conic-gradient()from 0deg, #f00, #00fSweep around centerPie charts, color wheels, spinners
repeating-linearto right, #f00 0 10px, #00f 10px 20pxTiled lineStripes, progress indicators, decorative borders
repeating-radialcircle, #f00 0 10px, #00f 10px 20pxTiled circleConcentric ring patterns, retro textures

So Sánh Gradient Tuyến Tính vs Hướng Tâm vs Conic

Mỗi loại gradient ánh xạ màu sắc lên hình học theo cách khác nhau. Việc chọn loại phù hợp phụ thuộc vào hiệu ứng trực quan bạn cần, không phải dựa trên sự khác biệt về chất lượng giữa chúng. Đối với hầu hết nền trang và thanh phân cách, gradient tuyến tính là lựa chọn mặc định đúng đắn — nó đơn giản nhất để suy luận và dễ dự đoán nhất trên các phần tử có kích thước khác nhau. Gradient hướng tâm và conic phù hợp hơn cho các hiệu ứng trực quan cụ thể khi hình học tròn hoặc xoay có ý nghĩa thực sự thay vì chỉ trang trí.

linear-gradient()
Màu sắc chuyển tiếp dọc theo một đường thẳng được xác định bởi góc (0deg = dưới lên trên, 90deg = trái sang phải) hoặc từ khóa như 'to right'. Loại phổ biến nhất, dùng cho nền, lớp phủ và thanh tiến trình. Hỗ trợ nhiều điểm dừng màu ở vị trí tùy ý.
radial-gradient()
Màu sắc tỏa ra từ một điểm trung tâm theo hình tròn hoặc hình elip. Kiểm soát hình dạng, kích thước và vị trí trung tâm bằng cú pháp. Hữu ích cho hiệu ứng đèn rọi, hiệu ứng vignette và các phần tử UI tròn như huy hiệu hoặc vành ảnh đại diện.
conic-gradient()
Màu sắc quét xung quanh một điểm trung tâm như kim đồng hồ. Góc bắt đầu có thể cấu hình với 'from Xdeg'. Hữu ích cho các phần của biểu đồ tròn, bánh xe màu và chỉ báo tải có chuyển động xoay. Yêu cầu ít nhất hai điểm dừng; lặp lại màu đầu tiên ở cuối tạo ra vòng lặp liền mạch.

Ví Dụ Mã

Các ví dụ về việc tạo và áp dụng CSS gradient theo cách lập trình trong JavaScript, Python, CSS, và Go. Mỗi ví dụ tạo ra chuỗi CSS gradient hợp lệ có thể sử dụng trực tiếp trong stylesheet hoặc inline style.

JavaScript
// Generate a CSS linear-gradient string from an array of stops
function buildGradient(angle, stops) {
  const parts = stops.map(s => `${s.color} ${s.position}%`)
  return `linear-gradient(${angle}deg, ${parts.join(', ')})`
}

const stops = [
  { color: '#6366f1', position: 0 },
  { color: '#ec4899', position: 50 },
  { color: '#f59e0b', position: 100 },
]
buildGradient(90, stops)
// -> "linear-gradient(90deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"

// Apply to an element
document.querySelector('.hero').style.background = buildGradient(135, stops)
Python
# Generate a CSS gradient string for use in templates or SVGs
def build_gradient(angle: int, stops: list[tuple[str, int]]) -> str:
    parts = [f"{color} {pos}%" for color, pos in stops]
    return f"linear-gradient({angle}deg, {', '.join(parts)})"

stops = [("#6366f1", 0), ("#ec4899", 50), ("#f59e0b", 100)]
print(build_gradient(135, stops))
# -> "linear-gradient(135deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"

# Interpolate N colors between two endpoints
def interpolate_hex(c1: str, c2: str, steps: int) -> list[str]:
    r1, g1, b1 = int(c1[1:3], 16), int(c1[3:5], 16), int(c1[5:7], 16)
    r2, g2, b2 = int(c2[1:3], 16), int(c2[3:5], 16), int(c2[5:7], 16)
    return [
        f"#{int(r1+(r2-r1)*i/(steps-1)):02x}"
        f"{int(g1+(g2-g1)*i/(steps-1)):02x}"
        f"{int(b1+(b2-b1)*i/(steps-1)):02x}"
        for i in range(steps)
    ]

interpolate_hex("#6366f1", "#f59e0b", 4)
# -> ['#6366f1', '#9a7399', '#d18042', '#f59e0b']
CSS
/* Linear gradient — left to right */
.hero {
  background: linear-gradient(90deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%);
}

/* Radial gradient — circular spotlight */
.badge {
  background: radial-gradient(circle at 30% 30%, #6366f1, #312e81);
}

/* Conic gradient — color wheel */
.wheel {
  background: conic-gradient(from 0deg, #ef4444, #f59e0b, #22c55e, #3b82f6, #8b5cf6, #ef4444);
  border-radius: 50%;
}

/* Multi-stop with transparency */
.overlay {
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.6) 60%,
    rgba(0, 0, 0, 0.9) 100%
  );
}

/* Repeating stripes */
.stripes {
  background: repeating-linear-gradient(
    45deg,
    #6366f1 0 10px,
    transparent 10px 20px
  );
}
Go
package main

import "fmt"

// Stop represents one color stop in a gradient.
type Stop struct {
	Color    string
	Position int // percent 0-100
}

func buildGradient(angle int, stops []Stop) string {
	result := fmt.Sprintf("linear-gradient(%ddeg", angle)
	for _, s := range stops {
		result += fmt.Sprintf(", %s %d%%", s.Color, s.Position)
	}
	return result + ")"
}

func main() {
	stops := []Stop{
		{"#6366f1", 0},
		{"#ec4899", 50},
		{"#f59e0b", 100},
	}
	fmt.Println(buildGradient(135, stops))
	// -> "linear-gradient(135deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"
}

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

Sự khác biệt giữa linear-gradient và radial-gradient là gì?
linear-gradient() chuyển tiếp màu sắc dọc theo một đường thẳng theo góc cho trước, trong khi radial-gradient() chuyển tiếp màu sắc tỏa ra từ điểm trung tâm theo hình tròn hoặc hình elip. Gradient tuyến tính là lựa chọn tiêu chuẩn cho nền trang và lớp phủ. Gradient hướng tâm phù hợp hơn cho hiệu ứng đèn rọi và các phần tử UI tròn.
Làm thế nào để thiết lập hướng của gradient tuyến tính?
Sử dụng góc tính bằng độ (ví dụ: 90deg cho trái sang phải, 180deg cho trên xuống dưới) hoặc từ khóa (to right, to bottom left). Góc xoay theo chiều kim đồng hồ từ dưới lên: 0deg hướng lên trên, 90deg hướng sang phải. Bạn cũng có thể dùng 'to top right' để hướng đến góc, và trình duyệt tính toán góc chính xác dựa trên tỷ lệ khung hình của phần tử.
Có thể tạo hiệu ứng chuyển động cho CSS gradient không?
Trình duyệt không thể nội suy trực tiếp giữa hai giá trị gradient bằng CSS transitions. Các giải pháp thay thế phổ biến là: tạo hiệu ứng background-position của gradient quá lớn, sử dụng @property để tạo hiệu ứng cho từng giá trị điểm dừng màu dưới dạng thuộc tính tùy chỉnh, hoặc chuyển tiếp chéo với opacity trên phần tử giả. Cách tiếp cận @property (được hỗ trợ trên Chrome và Edge từ năm 2020, Firefox từ năm 2024) là giải pháp gọn gàng nhất.
Gradient có thể có bao nhiêu điểm dừng màu?
Đặc tả CSS không đặt giới hạn tối đa. Trình duyệt xử lý gradient với hàng chục điểm dừng mà không gặp vấn đề hiệu suất. Trong thực tế, hầu hết gradient sử dụng 2 đến 5 điểm dừng. Mỗi điểm dừng có thể chỉ định màu sắc và vị trí tùy chọn dưới dạng phần trăm hoặc giá trị độ dài. Bạn cũng có thể định nghĩa hai vị trí cho mỗi điểm dừng để tạo dải màu cứng không có hiệu ứng chuyển tiếp.
Sự khác biệt giữa gradient và hình ảnh là gì?
Trong CSS, gradient là một hình ảnh được tính toán. Nó dùng chung quy trình hiển thị với hình ảnh url() và có thể được sử dụng ở bất kỳ nơi nào chấp nhận giá trị hình ảnh: background-image, list-style-image, border-image, và mask-image. Điểm khác biệt là gradient được tạo bởi trình duyệt tại thời điểm render, có thể thu phóng ở bất kỳ kích thước nào mà không giảm chất lượng, và không thêm byte nào vào trọng lượng trang do không có tệp nào được tải xuống.
Làm thế nào để tạo gradient với điểm dừng màu cứng (không có hiệu ứng chuyển tiếp)?
Đặt hai điểm dừng màu tại cùng một vị trí. Ví dụ: linear-gradient(to right, #6366f1 50%, #ec4899 50%) tạo ra đường phân chia sắc nét không có pha trộn giữa các màu. Bạn cũng có thể dùng cú pháp hai vị trí: linear-gradient(to right, #6366f1 0% 50%, #ec4899 50% 100%) để định nghĩa rõ ràng từng dải.
Hàm conic-gradient có được hỗ trợ trên tất cả các trình duyệt không?
conic-gradient() được hỗ trợ trên Chrome 69+, Firefox 83+, Safari 12.1+, và Edge 79+. Tính đến năm 2024, mức hỗ trợ trình duyệt toàn cầu vượt quá 95% theo dữ liệu từ Can I Use. Không cần tiền tố nhà sản xuất. Đối với tỷ lệ nhỏ người dùng trên trình duyệt cũ, hãy đặt background-color đơn sắc làm dự phòng trước khai báo gradient.