Trình tạo đường viền gradient CSS
Tạo các viền gradient tuyệt đẹp với thuộc tính border-image. Điều chỉnh màu sắc, độ rộng, bán kính và góc, sau đó sao chép CSS.
Cách thức hoạt động
- Chọn các màu: chọn hai hoặc nhiều màu cho gradient qua các bộ chọn.
- Điều chỉnh độ rộng và bán kính: điều chỉnh độ dày và độ tròn của các góc theo thiết kế của bạn.
- Sao chép CSS: mã được tạo qua border-image hoặc kỹ thuật pseudo-element sẵn sàng để dán vào stylesheet của bạn.
Tại sao sử dụng trình tạo viền gradient này?
Các viền gradient CSS là một chi tiết thiết kế ấn tượng được sử dụng trong các framework UI hiện đại, các thẻ, các trạng thái hover của nút và các phần được làm nổi bật. Tuy nhiên, thuộc tính CSS border chỉ chấp nhận các màu đặc, tạo một viền gradient yêu cầu một mẹo thông qua border-image hoặc một pseudo-element với các thao tác background-clip. Trình tạo này bao gồm cả hai kỹ thuật và tạo ra một CSS sạch sẽ, sẵn sàng để sao chép, để bạn tập trung vào thiết kế thay vì cú pháp.
Tính năng
- Hai phương pháp: chọn giữa border-image (đơn giản) và kỹ thuật pseudo-element với background-clip (xử lý border-radius).
- Hỗ trợ border-radius: phương pháp pseudo-element cho phép các góc bo tròn mà border-image không thể tạo ra.
- Gradient đa stop: thêm bao nhiêu bước màu sắc tùy ý cho các hiệu ứng cầu vồng hoặc theo các màu thương hiệu của bạn.
- Xem trước trực tiếp: xem chính xác kết xuất của viền trước khi sao chép mã.
- Kiểm soát góc: xoay hướng của gradient với một bộ chọn góc trực quan.
Câu hỏi thường gặp
Tại sao tôi không thể sử dụng border-image với border-radius?
border-image hoàn toàn thay thế việc kết xuất của viền và bỏ qua border-radius, các góc vẫn vuông. Để kết hợp viền gradient và các góc bo tròn, sử dụng kỹ thuật pseudo-element: áp dụng gradient làm nền của một ::before và background-clip: padding-box trên chính phần tử.
Tôi có thể animate các viền gradient không?
Có. Các viền gradient được tạo bằng phương pháp background + pseudo-element có thể được animate bằng cách chuyển tiếp background-position trên gradient. Áp dụng background-size: 300% 300% và animate background-position cho một hiệu ứng mượt mà.
Nó có hoạt động trên các nút và các trường nhập liệu không?
Có, CSS được tạo hoạt động trên bất kỳ phần tử HTML nào. Đối với các nút, ưu tiên pseudo-element để bảo tồn border-radius. Đối với các trường nhập liệu, áp dụng kỹ thuật border-image hoặc bao bọc trường trong một container gradient.
Viền gradient CSS thực sự giải quyết điều gì
Thuộc tính CSS border chấp nhận một màu rắn duy nhất, không phải gradient. Đây là một hạn chế thời 1996 còn sót lại trong CSS hiện đại. Trong phần lớn lịch sử web, các nhà thiết kế muốn một đường viền gradient quanh một thẻ hoặc nút phải lựa chọn giữa việc sử dụng một hình ảnh nền (raster, không co giãn), bọc phần tử trong một container có màu (hoạt động nhưng phá vỡ bố cục theo những cách tinh tế), hoặc chấp nhận viền rắn. Viền gradient CSS là các giải pháp tạm thời mô phỏng vẻ ngoài của border: 3px solid linear-gradient(...) thông qua các thuộc tính CSS khác, vì cú pháp chính xác đó không tồn tại.
Hai kỹ thuật chiếm ưu thế. border-image (CSS Backgrounds and Borders Module Level 3, 2012) thay thế việc kết xuất viền bằng một gradient hoặc hình ảnh. Nó hoạt động, nhưng border-image hoàn toàn bỏ qua border-radius: các góc vẫn vuông. Kỹ thuật pseudo-element + background-clip sử dụng một phần tử wrapper với nền gradient và một lớp phủ bên trong che mọi thứ ngoại trừ vùng viền. Điều này hỗ trợ các góc bo tròn nhưng yêu cầu hai lớp CSS và xử lý cẩn thận padding so với content box. Một cách tiếp cận hiện đại thứ ba sử dụng mask-composite (trình duyệt 2020+) cho một giải pháp đơn phần tử sạch hơn.
Viền gradient quan trọng cho các xu hướng thiết kế hiện tại. Bố cục dựa trên thẻ (Stripe, Linear, Vercel, Cursor) sử dụng viền gradient hai màu tinh tế để thêm chiều sâu mà không nặng nề. Các điểm nhấn tính năng cao cấp thường vẽ một viền gradient nhiều màu để biểu thị trạng thái "Pro". Thẩm mỹ cyberpunk và synthwave sử dụng viền gradient neon để gợi lên các rung cảm retro-tương-lai. Các ra mắt sản phẩm AI vào 2023-2024 đã chuẩn hóa trên các viền gradient nhiều màu được hoạt hình hóa như một chữ ký trực quan (OpenAI, Anthropic, Perplexity). Những gì từng yêu cầu các trình chỉnh sửa hình ảnh giờ đây xuất xưởng dưới dạng 5 đến 10 dòng CSS.
Cách công cụ này hoạt động bên trong
Bản xem trước là một div duy nhất với hai kỹ thuật được áp dụng thông qua CSS nội tuyến, có thể chuyển đổi bằng lựa chọn phương pháp của bạn. Đối với border-image, công cụ đặt border: Npx solid transparent với border-image: linear-gradient(...) 1; giá trị slice 1 cho trình duyệt biết sử dụng gradient ở kích thước đầy đủ cho mỗi cạnh viền. Đối với kỹ thuật pseudo-element, công cụ áp dụng nền gradient cho phần tử bên ngoài và sử dụng ::before (hoặc background-clip: padding-box) để che vùng nội dung bên trong, chỉ để lại vòng viền hiển thị.
Các điểm dừng màu được lưu trữ dưới dạng mảng JavaScript của các cặp {color, position}. Khi bạn chọn màu hoặc di chuyển thanh trượt góc, công cụ tái tạo chuỗi linear-gradient() bằng cách nối các điểm dừng với dấu phẩy và đặt góc trước: linear-gradient(45deg, #ff0080 0%, #7928ca 100%). Chuỗi đó được nội suy vào cả CSS xem trước và hộp mã. Thanh trượt góc sử dụng phạm vi 0 đến 360 độ với xoay mũi tên SVG trực quan để phản hồi định hướng.
Không có gì rời khỏi trình duyệt của bạn. Việc tạo chuỗi gradient, lưu trữ màu, kết xuất xem trước, và sao chép clipboard đều xảy ra trong JavaScript trên thiết bị của bạn. Không có yêu cầu mạng nào được thực hiện; không có phân tích nào theo dõi những màu bạn chọn. Công cụ không có bất kỳ phần phụ trợ nào ngoài HTML tĩnh và JavaScript được phục vụ một lần khi tải đầu tiên. Làm mới trang và các màu và góc bạn chọn sẽ biến mất trừ khi bạn đã sao chép CSS trước.
Lịch sử ngắn gọn về viền và gradient CSS
- Viền CSS 1, 1996.Đặc tả CSS đầu tiên (CSS 1, tháng 12 năm 1996) định nghĩa
border-style,border-width, vàborder-color, chỉ hỗ trợ các màu rắn và tám kiểu viền (none, dotted, dashed, solid, double, groove, ridge, inset, outset). Không có hỗ trợ gradient, một lựa chọn kiến trúc tồn tại 16 năm. - Linear-gradient CSS xuất xưởng, 2008 đến 2011.WebKit giới thiệu
-webkit-gradient()vào 2008, theo sau làlinear-gradient()được chuẩn hóa trong CSS Image Values and Replaced Content Module Level 3 (2011). Gradient trở thành công dân CSS hạng nhất cho nền, nhưng không phải cho viền. Các nhà thiết kế ngay lập tức muốn viền gradient; đặc tả không đáp ứng. - border-image đến, 2012.CSS Backgrounds and Borders Module Level 3 (CR tháng 6 năm 2012) định nghĩa
border-imagevới hỗ trợ trình duyệt đầy đủ vào năm 2014. Cho phép viền sử dụng bất kỳ hình ảnh nào, bao gồm gradient CSS. Điểm bắt:border-imageghi đèborder-radius, vì vậy viền gradient bo tròn vẫn không thể với kỹ thuật này một mình. - Mẫu giải pháp pseudo-element xuất hiện, 2013 đến 2015.CSS-Tricks và các tài nguyên tương tự xuất bản các giải pháp tạm thời sử dụng các pseudo-element
::beforevới nền gradient và các mẹobackground-clip: padding-box. "Viền gradient bo tròn" trở nên có thể giải quyết nhưng yêu cầu hiểu các phức tạp của mô hình hộp. Đến 2015, mẫu được phổ biến rộng rãi trong tài liệu hệ thống thiết kế. - Conic-gradient hạ cánh, 2018 đến 2021.CSS conic-gradient() (Chrome 69, tháng 9 năm 2018; Firefox 83, tháng 11 năm 2020; Safari 12.1, tháng 3 năm 2019) cho phép gradient quét tròn, lý tưởng cho các hiệu ứng "vòng tải" với viền gradient. Kết hợp với hoạt hình, viền conic-gradient tạo ra các mẫu phát sáng xoay phổ biến trong các ra mắt sản phẩm AI vào 2023.
- Mask-composite mở khóa các giải pháp sạch hơn, 2020 đến 2024.CSS Masking Module Level 1 (2014) và hỗ trợ
mask-compositetrong các trình duyệt hiện đại (2020+) cho phép viền gradient đơn phần tử không có pseudo-element: lớp một nền gradient và che mọi thứ ngoại trừ vòng ngoài thông qua các hoạt động ghép. Đến 2024 đây là cách tiếp cận sản xuất sạch nhất, mặc dù các giải pháp pseudo-element vẫn tương thích với các trình duyệt cũ hơn.
Quy trình thực tế
- Điểm nhấn tinh tế của thành phần thẻ.Các thẻ bảng điều khiển hiện đại (nghĩ về Stripe, Linear, Vercel) sử dụng viền gradient 1 đến 2 pixel trong các bảng màu hai-tông hoặc ba-tông để thêm sự quan tâm trực quan mà không nặng nề. Gradient thường tinh tế: độ mờ 10% đến 20%, độ tương phản thấp, hầu hết là thang xám với một chút màu thương hiệu. Điều này đủ để phân biệt các thẻ từ một nền phẳng và báo hiệu khả năng tương tác.
- Điểm nhấn tính năng cao cấp.Bảng giá SaaS sử dụng viền gradient sống động (thường là vàng-đến-tím hoặc cầu vồng) trên gói "Pro" hoặc "Đề xuất" để nâng cao nó trực quan. Mẫu này hoạt động vì nó thu hút mắt thông qua màu sắc và chuyển động (nếu được hoạt hình hóa) mà không yêu cầu các nhãn huy hiệu. Linear, Notion, Figma, và hầu hết các trang giá SaaS hiện đại sử dụng chính xác mẫu này.
- Hiệu ứng neon và phát sáng.Thẩm mỹ cyberpunk, synthwave, và UI game kết hợp viền gradient với box-shadow cho một vẻ ngoài ống neon. Viền cung cấp chuyển tiếp màu, bóng cung cấp bloom. Mẫu phổ biến:
border-image: linear-gradient(45deg, #ff0080, #00d4ff) 1cộngbox-shadow: 0 0 20px rgba(255,0,128,0.5)trên cùng phần tử. - Bản sắc trực quan sản phẩm AI.Làn sóng 2023-2024 của các công cụ AI (OpenAI ChatGPT, Anthropic Claude, Perplexity, Cursor) hội tụ trên các viền gradient nhiều màu được hoạt hình hóa như một chữ ký trực quan cho "AI đang suy nghĩ" hoặc các trường nhập đang chờ xử lý AI. Thường là các gradient conic xoay hoặc các gradient tuyến tính chuyển dịch trên một vòng lặp 4 đến 6 giây. Trở thành viết tắt cho "thông minh / sinh tạo" trong UX hiện đại.
- Đánh bóng các trạng thái hover và focus.Các nút và đầu vào chuyển từ viền rắn ở trạng thái nghỉ sang viền gradient khi di chuột hoặc tập trung cảm thấy cao cấp và có chủ ý. Chuyển tiếp giữa các màu có thể hoạt hình hóa với các chuyển tiếp CSS trên
background-positionnếu gradient mở rộng ra ngoài vùng hiển thị (background-size: 200% 100%với một hoạt hình trượt). - Biểu hiện màu thương hiệu.Các hệ thống thương hiệu với logo nhiều màu (Instagram, Slack, Discord) thường sử dụng viền gradient để mở rộng bản sắc của họ vào các thành phần UI. Một thẻ với gradient thương hiệu làm viền của nó thiết lập sự liên tục trực quan với logo. Đối với các trang tiếp thị SaaS, đây là một trong những cách rẻ nhất để làm cho một thành phần chung trông "có thương hiệu".
Các cạm bẫy phổ biến và ý nghĩa của chúng
- border-image bỏ qua border-radius.Sự nhầm lẫn phổ biến nhất: sử dụng
border-image: linear-gradient(...)cùng vớiborder-radiustạo ra các góc vuông.border-imagehoàn toàn tiếp quản việc kết xuất viền và thuộc tính radius không có tác dụng trên kết quả được vẽ. Để có viền gradient bo tròn, sử dụng kỹ thuật pseudo-element hoặc cách tiếp cậnmask-compositehiện đại, không phải border-image. - Kỹ thuật pseudo-element yêu cầu padding-box.Giải pháp tạm thời tiêu chuẩn sử dụng
backgroundtrên phần tử bên ngoài và một lớp phủ bên trong thông qua::before. Chi tiết quan trọng: lớp phủ bên trong cầnbackground-clip: padding-boxđể dừng ở cạnh padding, để lại vùng viền hiển thị. Bỏ qua thuộc tính clip này dẫn đến gradient bị che phủ hoàn toàn bởi lớp phủ, không có viền nào hiển thị. - Hoạt hình hóa viền gradient tốn kém GPU.Các viền gradient hoạt hình hóa (mẫu "AI shimmer") hoạt động bằng cách chuyển tiếp
background-positiontrên một gradient lớn. Trong khi các GPU hiện đại xử lý điều này tốt, áp dụng nó cho nhiều phần tử đồng thời (ví dụ, mọi thẻ trên một trang) làm giảm tốc độ khung hình đáng kể trên các thiết bị cấp thấp. Sử dụng các viền gradient hoạt hình hóa tiết kiệm: một hoặc hai phần tử "hero" mỗi trang, không phải toàn trang. - Xung đột màu chế độ tối.Một viền gradient được thiết kế cho nền sáng thường trông sai trên nền tối. Các gradient trắng tinh khiết trở nên vô hình; các màu rực rỡ trông quá bão hòa. Đối với các thiết kế hai-chủ-đề, định nghĩa các điểm dừng màu gradient riêng cho chế độ sáng và tối thông qua các thuộc tính tùy chỉnh CSS hoặc truy vấn phương tiện. Giảm độ bão hòa và điều chỉnh tông màu để duy trì hài hòa trực quan với chủ đề xung quanh.
- Các viền tương phản thấp thất bại về khả năng truy cập.Các viền gradient tinh tế trông thanh lịch có thể không đạt WCAG 2.1 SC 1.4.11 Tương phản phi văn bản (tối thiểu 3:1) cho các thành phần UI truyền đạt trạng thái. Nếu viền gradient là chỉ báo trực quan duy nhất của ranh giới một nút hoặc khả năng chọn của một thẻ, đảm bảo độ tương phản đầy đủ với nền. Đối với các viền hoàn toàn trang trí trên các phần tử đã hiển thị, độ tương phản ít quan trọng hơn nhưng vẫn đáng để kiểm tra.
- Internet Explorer và Edge cũ không hỗ trợ gì hữu ích.IE 11 (nghỉ hưu tháng 6 năm 2022) và Edge tiền Chromium (2015 đến 2019) thiếu
border-imageđáng tin cậy cho gradient,mask-composite, và một số kỹ thuật pseudo-element. Đối với các trình duyệt cũ này, dự phòng nhẹ nhàng đến một viền rắn sử dụng màu giữa của gradient. Các trình duyệt hiện đại bao phủ hơn 99% người dùng vào 2026, nhưng dự phòng cũ vẫn quan trọng cho phần mềm doanh nghiệp.
Quyền riêng tư: mọi thứ chạy trong trình duyệt của bạn
Các công cụ tạo CSS có hai loại: các trang HTML đơn giản chạy JavaScript phía máy khách (riêng tư, nhanh) và các trình chỉnh sửa đám mây lưu các dự án của bạn (cộng tác nhưng với sự đánh đổi quyền riêng tư). Công cụ này là loại đầu tiên. Các màu bạn chọn, góc của bạn, CSS được tạo của bạn: tất cả ở lại trong phiên trình duyệt của bạn. Làm mới trang và trạng thái biến mất trừ khi bạn đã sao chép CSS trước. Không có máy chủ nào lưu trữ các lựa chọn gradient của bạn, không có phân tích nào theo dõi các kết hợp màu nào bạn đã thử, và không cần tài khoản.
Thuộc tính quyền riêng tư quan trọng nhất đối với công việc thiết kế độc quyền. Một studio tạo mẫu các kết hợp gradient cho một thiết kế lại thương hiệu bí mật, một nhà phát triển làm việc trên các điểm nhấn UI của một sản phẩm chưa công bố, hoặc một nhà thiết kế lặp lại trên một bảng chiến dịch: bất kỳ ngữ cảnh nào mà lựa chọn màu hoặc lịch sử lặp lại có thể tiết lộ thông tin về công việc. Với công cụ này, không có gì được ghi lại vì không có gì được gửi đi. Mở tab Mạng của trình duyệt và bạn sẽ thấy không có yêu cầu đi ra nào trong khi sử dụng; chỉ có việc tải trang ban đầu tải HTML và JavaScript.
Khi một công cụ khác là lựa chọn đúng
- SVG cho các hình dạng viền phức tạp.Đối với các viền gradient không phải hình chữ nhật (bo tròn với khía, các cạnh sò, các hình dạng không đều tùy chỉnh), SVG với
linearGradienthoặcradialGradientđược áp dụng cho một thuộc tínhstrokecung cấp kiểm soát đầy đủ. Các viền gradient CSS hoạt động cho hình chữ nhật và hình chữ nhật bo tròn; SVG xử lý mọi thứ khác. Sử dụng cả hai cùng nhau: SVG cho các đường viền hình dạng trang trí, CSS cho các thành phần UI tiêu chuẩn. - Photoshop cho các hình ảnh gradient tĩnh.Nếu viền gradient nằm trên một hình ảnh hero tĩnh hoặc banner không thay đổi, thiết kế nó trong Photoshop, Figma, hoặc Sketch và xuất dưới dạng PNG hoặc WebP có thể đơn giản hơn so với duy trì CSS. Hình ảnh co giãn như một phần của pipeline tài sản trang. Các viền gradient CSS dành cho các phần tử động (thẻ, nút, thành phần) cần kết xuất ở bất kỳ kích thước nào.
- Các thư viện thành phần cho tính nhất quán của hệ thống thiết kế.Tailwind UI, shadcn/ui, Radix, và các thư viện thành phần khác xuất xưởng các thành phần thẻ và nút được tạo kiểu trước với các biến thể viền gradient tùy chọn. Đối với các dự án đã sử dụng các thư viện này, áp dụng biến thể của thư viện nhanh hơn so với việc tự cuộn CSS. Các viền gradient được cuộn bằng tay hữu ích cho các thiết kế một lần hoặc các dự án chưa cam kết với một thư viện thành phần.
- Canvas hoặc WebGL cho các hiệu ứng đa lớp hoạt hình.Đối với các hiệu ứng gradient đa lớp được hoạt hình hóa cao (các hệ thống hạt, các mô phỏng chất lỏng, nghệ thuật sinh tạo), Canvas 2D hoặc WebGL cung cấp kiểm soát theo từng pixel mà CSS không thể sánh được. Sự đánh đổi là độ phức tạp triển khai và khả năng truy cập (nội dung canvas không hiển thị cho các trình đọc màn hình). Đối với các viền gradient trang trí trên các thành phần UI tiêu chuẩn, CSS là lựa chọn đúng; đối với các hiệu ứng trực quan, hãy xem xét các cách tiếp cận dựa trên canvas.
Các câu hỏi thường gặp khác
Tôi có thể sử dụng hơn hai màu trong một viền gradient không?
Có. CSS linear-gradient() chấp nhận các điểm dừng màu không giới hạn: linear-gradient(45deg, #ff0080 0%, #ffa500 50%, #00d4ff 100%) tạo ra một gradient ba màu chuyển tiếp qua màu cam ở giữa. Thêm bao nhiêu điểm dừng bạn muốn, mỗi điểm có một vị trí tùy chọn. Đối với các gradient nhiều màu phức tạp (hiệu ứng cầu vồng), phân phối các điểm dừng đều: 0%, 16.7%, 33.3%, 50%, 66.7%, 83.3%, 100%.
Làm thế nào tôi tạo một viền gradient cầu vồng hoặc conic?
Đối với các gradient conic (quét), sử dụng conic-gradient(from 0deg, red, yellow, lime, cyan, blue, magenta, red) làm nền của phần tử bên ngoài với kỹ thuật che padding-box pseudo-element. Đối với hiệu ứng xoay (phổ biến trong các trạng thái tải sản phẩm AI), hoạt hình hóa --angle thông qua CSS Houdini hoặc sử dụng @property --angle với một hoạt hình xoay 360 độ. Kết quả là một quét màu mượt mà quanh viền.
Tôi có thể sử dụng các thuộc tính tùy chỉnh CSS cho các viền gradient nhận biết chủ đề không?
Có, và đó là cách tiếp cận được khuyến nghị cho các hệ thống thiết kế. Định nghĩa các màu gradient làm các thuộc tính tùy chỉnh CSS (--gradient-start, --gradient-end) và sử dụng chúng trong khai báo gradient của bạn: linear-gradient(var(--angle), var(--gradient-start), var(--gradient-end)). Ghi đè các biến trong các truy vấn phương tiện chế độ tối hoặc các lớp chủ đề. Một tệp CSS xử lý cả chủ đề sáng và tối thông qua việc định nghĩa lại biến.
Điều này có hoạt động trong các trình duyệt cũ như Internet Explorer không?
Internet Explorer 11 (chính thức được Microsoft nghỉ hưu vào tháng 6 năm 2022) có hỗ trợ border-image một phần nhưng kết xuất gradient không đáng tin cậy, và không có mask-composite. Các trình duyệt hiện đại (Chrome 88+, Firefox 78+, Safari 14+) hỗ trợ đầy đủ cả hai kỹ thuật. Nếu bạn phải hỗ trợ IE, cung cấp dự phòng màu rắn sử dụng màu giữa của gradient: khai báo border: 3px solid #888; trước quy tắc gradient, và IE sẽ sử dụng nó trong khi các trình duyệt hiện đại áp dụng gradient.
Có một cách thuộc tính đơn lẻ để tạo viền gradient không?
Chưa có trong CSS được chuẩn hóa. Các đề xuất hiện đại (bản nháp CSS Backgrounds and Borders Module Level 4) bao gồm thuộc tính border-color chấp nhận trực tiếp các gradient, nhưng các triển khai trình duyệt chưa ổn định. Xấp xỉ gần nhất hiện tại là kỹ thuật mask-composite sử dụng một phần tử duy nhất nhưng vẫn yêu cầu ba khai báo CSS. Hy vọng vào năm 2027 hoặc 2028, border: 3px solid linear-gradient(...) sẽ chỉ hoạt động.
Tại sao viền gradient của tôi trông khác trong Safari?
Safari trong lịch sử tụt hậu so với Chrome và Firefox về sự ngang bằng tính năng CSS, đặc biệt cho các giá trị mask-composite và một số trường hợp biên background-clip. Kiểm tra rõ ràng trong Safari. Nếu kỹ thuật pseudo-element thất bại trong Safari, chuyển sang border-image (hoạt động toàn cầu nhưng mất border-radius), hoặc sử dụng các tiền tố cụ thể Safari: -webkit-mask-composite có thể được yêu cầu cho các phiên bản Safari cũ hơn. iOS Safari thường cần tiền tố ngay cả trong các phiên bản 2024.