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.

border-image Örneği
.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.

background-clip ile Gradient Border
.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.

Tek Elemanlı background-clip Yöntemi
.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.

box-shadow ile Çerçeve Efekti
.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.

İlgili Rehberler