CSS Gradient Border Nasıl Yapılır?
CSS'de varsayılan olarak border özelliği tek renk veya solid stil alır. Gradient border elde etmek için doğrudan border: 1px solid linear-gradient(...) yazamazsınız; tarayıcı bu sözdizimini desteklemez. Bu rehberde gradient border oluşturmak için kullanılan üç ana tekniği ele alıyoruz: border-image, background-clip trick ve outline tabanlı alternatifler.
border-image ile Gradient Border
border-image özelliği, bir görseli veya gradient'i border bölgesine uygulamanızı sağlar. Bu yöntem teorik olarak gradient border için en mantıklı CSS çözümüdür. Kullanımı nispeten basittir ancak border-radius ile birlikte kullanıldığında tarayıcılar arasında tutarsızlıklar olabilir.
.gradient-border-box {
border: 3px solid transparent;
border-image: linear-gradient(135deg, #667eea, #764ba2, #f093fb) 1;
background: white;
}border-image kullanırken dikkat edilmesi gereken nokta: border-image-slice: 1 (veya kısa yazımla son parametre 1) gradient'in border alanına doğru şekilde dilimlenmesini sağlar. Ayrıca border-radius ile birlikte kullanıldığında bazı tarayıcılarda gradient köşelerde düzgün kesilmez; bu durumda diğer yöntemlere başvurmak gerekebilir.
background-clip Trick (En Esnek Yöntem)
En yaygın ve güvenilir gradient border tekniği, iki katmanlı arka plan kullanımıdır: Dış katmanda gradient, iç katmanda düz renk. İçerik alanı gradient'in üzerine oturur, böylece kenarlar gradient renginde kalır. Bu yöntem border-radius ile sorunsuz çalışır ve tüm modern tarayıcılarda tutarlı sonuç verir.
.gradient-border-trick {
padding: 3px; /* border kalınlığı */
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 12px;
}
.gradient-border-trick .inner {
background: white;
border-radius: 10px;
padding: 1rem;
min-height: 100px;
}Tek bir öğede (pseudo-element olmadan) uygulamak için background ve background-clip birlikte kullanılabilir. Önce gradient arka plan tanımlanır, sonra background-clip: padding-box ile gradient sadece padding alanına (yani "border" hissi veren bölgeye) sınırlandırılır. İç kısım için ayrı bir linear-gradient veya düz renk eklenir.
.single-element-gradient-border {
padding: 3px;
background: linear-gradient(white, white) padding-box,
linear-gradient(135deg, #f093fb, #f5576c) border-box;
border: 3px solid transparent;
border-radius: 8px;
}Burada padding-box katmanı beyaz (veya sayfa arka planıyla aynı) renkte olduğu için iç alan düz görünür. border-box katmanı ise gradient'i border alanına yayar. border: 3px solid transparent border alanını oluşturur; gradient bu alanda görünür.
Pseudo-element ile Alternatif
Pseudo-element kullanarak da aynı efekti elde edebilirsiniz. ::before veya ::after ile gradient arka planı olan bir katman oluşturulur, z-index ile arkaya alınır ve ana içerik önde kalır. Bu yöntem daha fazla kontrol sağlar ve karmaşık layoutlarda faydalıdır.
outline ile Gradient Border Alternatifi
outline özelliği de tek renk alır, dolayısıyla doğrudan gradient kabul etmez. Ancak outline yerine bir box-shadow veya pseudo-element ile sahte outline oluşturulabilir. Gerçek anlamda "outline" gradient'i yoktur; bunun yerine box-shadow ile gradient border benzeri bir çerçeve elde edilebilir.
.shadow-border {
border-radius: 10px;
box-shadow: 0 0 0 3px #667eea, 0 0 0 6px #764ba2;
}Bu yöntem çok renkli katmanlı bir çerçeve verir ama gerçek bir gradient geçişi değildir. Tam gradient border için background-clip trick veya border-image tercih edilmelidir.
Köşeli vs Yuvarlak Köşeler
border-image kullanırken border-radius birçok tarayıcıda göz ardı edilir veya hatalı render edilir. Yuvarlak köşeli gradient border için mutlaka background-clip yöntemini kullanın. Köşeli tasarımlarda border-image da iş görebilir.
Animasyonlu Gradient Border
Gradient border'a animasyon eklemek için pseudo-element üzerinde background-position veya animation kullanılabilir. Border kalınlığını koruyarak gradient renklerini kaydırabilirsiniz. Dikkat: animasyon prefers-reduced-motion: reduce kullanan kullanıcılar için kapatılmalıdır.
Özet
CSS gradient border için en güvenilir teknik, iki katmanlı arka plan ve background-clip kullanımıdır. border-image basit senaryolarda işe yarar ancak yuvarlak köşelerde sorun çıkarabilir. outline ve box-shadow gerçek gradient border vermez ama alternatif çerçeve efektleri sunar. Gradient Oluşturucu ile renklerinizi seçip bu örneklerde test edebilirsiniz. İlgili konularda CSS Gradient Nedir? ve CSS Gradient Button Tasarımı rehberlerimize göz atın.