Coderspace Giriş

CSS Box Shadow Generator

Gölgeyi kaydırıcılarla kur, üst üste katmanlar ekle ve sonucu canlı önizlemede gör. Hazır box-shadow satırını ya da Tailwind karşılığını tek tıkla kopyala. Her şey tarayıcında hesaplanır, hiçbir değer sunucuya gönderilmez.

Gölge ayarları

Hazır gölgeler

Önizleme ve kod

Zemin
Önizleme kutusu
Boyut
Köşe yarıçapı
Dolgu rengi

Veri Analitiği

box-shadow nedir?

box-shadow, bir elemanın kutu çerçevesinin arkasına ya da içine bir gölge çizen CSS özelliğidir. Gölge, elemanın kendi border-radius değerini birebir takip eder; yani yuvarlatılmış bir kartın gölgesi de yuvarlatılmış olur. Gölge, belgenin akışında yer kaplamaz, bu yüzden bir elemana gölge eklemek komşularını hiçbir şekilde itmez veya kaydırmaz.

Arayüzlerde gölgenin işi süsleme değil, derinlik bildirmektir. Bir açılır menünün, bir modalın ya da sürüklenen bir kartın diğer içeriğin üstünde durduğunu kullanıcıya anlatan şey çoğu zaman gölgedir. Gölge ne kadar yumuşak ve yaygınsa eleman o kadar yüksekte, ne kadar dar ve keskinse o kadar yüzeye yakın algılanır.

Dört uzunluk değeri ne yapar?

Bir gölge katmanı en fazla dört uzunluk alır ve sıraları değişmez:

Üçüncü ve dördüncü değer isteğe bağlıdır. Yalnızca iki uzunluk yazarsanız tarayıcı bunları offset-x ve offset-y olarak okur, blur ve spread sıfır sayılır. Renk yazılmazsa metnin rengi, yani currentColor kullanılır; bu genellikle istenen sonucu vermez, o yüzden rengi açıkça belirtmek iyi bir alışkanlıktır.

Yayılma ile bulanıklığın farkı

İkisi de gölgeyi büyütüyormuş gibi görünür ama işleri farklıdır. blur gölgenin boyutunu değiştirmez, yalnızca kenarını bir geçiş bandına çevirir: gölge merkezde tam opak kalır, kenara doğru saydamlaşır. spread ise gölgenin geometrisini büyütür ya da küçültür; 10px yayılma, gölge şeklini her yönde 10px genişletir.

Bu ayrım pratikte iki yerde işe yarar. Negatif yayılma, gölgenin elemanın altından taşan yanlarını geri çeker ve gölgenin yalnızca aşağıda toplanmasını sağlar; modern kart gölgelerinin sırrı çoğunlukla budur. Sıfır bulanıklık ile pozitif yayılma ise bir kenarlık taklidi üretir ve düzen ölçülerini bozmadan çerçeve eklemenizi sağlar.

inset: gölgeyi içeri almak

Değerin başına inset anahtar kelimesi eklendiğinde gölge dışarıya değil, elemanın içine çizilir. Bu, girintili bir alan hissi vermek için kullanılır: basılı görünen bir düğme, içi oyuk bir arama kutusu ya da uzun bir listenin üst kenarındaki hafif karartma. inset gölgeler arka planın üstünde ama içeriğin altında kalır, yani kutunun içindeki metni karartmaz.

Neden birden fazla gölge katmanı kullanılır?

Tek bir gölge, gerçek bir ışığın altındaki nesneyi taklit etmekte yetersiz kalır. Gerçek hayatta nesnenin hemen altında koyu ve dar bir temas gölgesi, biraz uzağında ise geniş ve açık bir ortam gölgesi bulunur. CSS’te bunu, aynı özelliğe virgülle ayrılmış birden çok katman yazarak taklit edersiniz:

Katmanların sırası önemlidir: listede önce yazılan gölge, sonra yazılanın üstüne çizilir. Yani en dar ve en koyu katmanı başa koymak, onun daha geniş katmanlar tarafından yutulmasını engeller. Material Design’ın yükseklik ölçeği de tam olarak böyle, üç katmanlı olarak tanımlanmıştır.

Renk seçiminde alışılmış bir hata, gölgeyi saf siyahın saydamı olarak yazmaktır. Arka plan renkliyse siyah gölge sahneyi griye çeker ve kirli görünür. Bunun yerine arka plan renginin koyu ve doygun bir tonunu kullanın. Renk uyumlarını denemek için CSS gradyan oluşturucu aracını yanında açık tutmak işinizi kolaylaştırır.

box-shadow, drop-shadow ve text-shadow

Özellik Neyi gölgeler? Ne zaman kullanılır?
box-shadow Elemanın dikdörtgen kutusunu, border-radius dahil Kart, düğme, modal, açılır menü gibi kutu biçimli her şey
filter: drop-shadow() Elemanın gerçek görünen şeklini, saydam pikselleri atlayarak PNG ve SVG simgeler, kırpılmış ya da düzensiz şekilli kutular
text-shadow Yalnızca metin karakterlerinin konturunu Başlıkları görsel üzerinde okunur kılmak, ince kabartma efektleri

Aradaki en somut fark şudur: saydam arka planlı bir simgeye box-shadow verirseniz simgenin kendisinin değil, onu çevreleyen kutunun gölgesini görürsünüz. drop-shadow ise alfa kanalını okur ve şeklin gerçek konturunu gölgeler. Buna karşılık drop-shadow katmanlamaya box-shadow kadar elverişli değildir ve genelde daha pahalıdır.

Performans tarafında bilinmesi gerekenler

Gölge, tarayıcının boyama aşamasında hesaplanır. Bulanıklık yarıçapı büyüdükçe boyanacak alan ve hesaplama maliyeti hızla artar; 100px’lik bir bulanıklığı düzinelerce karta uygulamak, özellikle orta seviye telefonlarda kaydırmayı gözle görülür biçimde ağırlaştırır.

Asıl tuzak box-shadow’u animasyonlamaktır. Her karede gölge yeniden boyanır ve bu iş GPU’ya devredilemez. Yaygın çözüm şudur: elemana bir ::after sözde elemanı ekleyin, hedef gölgeyi ona verin, başlangıçta opacity: 0 bırakın ve hover durumunda yalnızca opaklığı değiştirin. Opaklık bileşik katmanda çalışır, yani yeniden boyama olmadan animasyonlanır.

Erişilebilirlik notu

Gölge dekoratif bir sinyaldir ve tek başına anlam taşımamalıdır. Bir düğmenin odaklandığını yalnızca yumuşak bir gölgeyle anlatmak, yüksek kontrast modunda ya da zayıf görme durumunda kaybolur. Odak halkasını gölgeyle kuruyorsanız kontrastı yeterli, kalınlığı en az 2px olan bir renk seçin ve outline özelliğini tamamen kaldırmayın. Windows yüksek kontrast modunda gölgelerin çizilmediğini de unutmayın.

Sık yapılan hatalar

CSS box shadow nasıl oluşturulur?

  1. 1

    Hazır bir gölgeyle başla

    Material yükseklikleri, yumuşak kart, neumorphism, parlama ve sert kenar hazırları katman yığınının tamamını tek tıkla değiştirir. Sıfırdan uğraşmak yerine hedefine en yakın olanı seç, üzerinde oyna.

  2. 2

    Katmanı kaydırıcılarla ayarla

    X ve Y kaymasıyla ışığın geldiği yönü, bulanıklık ve yayılma ile gölgenin sertliğini belirle. Renk seçicinin yanındaki saydamlık kaydırıcısı değeri rgba olarak yazar, inset kutusu ise gölgeyi kutunun içine alır.

  3. 3

    Üst üste katman ekle

    Gerçekçi bir derinlik için dar ve koyu bir temas gölgesinin üstüne geniş ve saydam bir katman koy. Katman ekle düğmesiyle çoğalt, oklarla sırayı değiştir; listede önce yazılan katman en üste çizilir.

  4. 4

    Önizleyip kodu kopyala

    Kutunun boyutunu, köşe yarıçapını, dolgu rengini ve zemini değiştirerek gölgeyi gerçek bağlamında gör. Sonucu box-shadow satırı olarak ya da Tailwind'in shadow-[...] biçiminde tek tıkla kopyala.

Sıkça Sorulan Sorular

Sıra offset-x, offset-y, blur, spread, renk şeklindedir. Son ikisi isteğe bağlıdır ve yazılmazsa sıfır kabul edilir. inset anahtar kelimesi ise en başa ya da en sona konabilir, pratikte başa yazmak okunurluğu artırır.

Evet. Katmanları virgülle ayırarak tek bir box-shadow satırında yazarsınız. Listede önce yazılan katman en üste çizilir. İki ayrı box-shadow bildirimi yazmak katmanları toplamaz, ikincisi birincisini tamamen ezer.

blur gölgenin şeklini değiştirmez, yalnızca kenarını yumuşak bir geçişe çevirir. spread ise gölgenin geometrisini büyütür veya küçültür. Negatif spread, gölgeyi elemanın altına toplamak için kullanılan en pratik yöntemdir.

inset, gölgeyi elemanın dışına değil içine çizer ve yüzeyin girintili olduğu hissini verir. Basılı düğmeler, oyuk görünen arama kutuları ve kaydırılabilir listelerin üst kenarındaki yumuşak karartma bu şekilde yapılır.

Gölge boyama aşamasında hesaplanır, yani her karede yeniden çizilmesi gerekir ve bu iş GPU’ya devredilemez. Bunun yerine gölgeyi bir ::after sözde elemanına verip yalnızca opacity değerini animasyonlayın; opaklık bileşik katmanda çalıştığı için yeniden boyama olmaz.

box-shadow elemanın dikdörtgen kutusunu, drop-shadow ise alfa kanalını okuyarak gerçek görünen şeklini gölgeler. Saydam arka planlı bir PNG veya SVG simge için drop-shadow doğru seçimdir; kart ve düğme gibi kutu biçimli her şeyde box-shadow hem daha ucuz hem daha esnektir.

Araç, ürettiği değeri shadow-[...] biçiminde bir Tailwind arbitrary value satırı olarak da verir; boşluklar alt çizgiye çevrilmiş hâldedir. Aynı gölgeyi birden çok yerde kullanacaksanız değeri tailwind.config dosyasındaki boxShadow bölümüne adlandırarak eklemek daha temiz olur.

Teknoloji kariyerinde Coderspace hep seninle!

Öğren, kodla, yarış, işe yerleş!

Şimdi kayıt ol