Box Shadow''a güçlü alternatif: Drop Shadow
Teknik1 dk
Merhaba !
Çoğunuzunda bildiği gibi CSS ile bir nesneye gölge vermek için box-shadow kullanırız. Fakat box-shadow'un hatalı gölgelendirme yaptığı durumlarda olabiliyor. Bunu bir örnek ile gösterip sonrasında sorunu çözmek için ne yapacağımızı anlatacağım.
Başlarken
Öncelikle bir üçgen çizelim. Üçgen çizmek için html tarafında 1 div kullanmak yeterli, geri kalan işlemleri CSS ile halledeceğiz.
<div class="ucgen"></div>Ardından CSS özelliklerine;
.ucgen {
border-color: transparent transparent #1976D2 transparent;
border-style: solid;
border-width: 100px 100px 100px 100px;
height: 0px;
width: 0px;
}
```html
Bu kodların çıktısı şu şekilde olacaktır.
<div
style={{
borderColor: "transparent transparent #1976D2 transparent",
borderStyle: "solid",
borderWidth: "100px 100px 100px 100px",
height: "0px",
width: "0px"
}}
/>
Aslında bir üçgen değil kare yaptık. Fakat 3 tarafının kenar rengini saydam (_transparent_) yaptığımız için sadece tek tarafı görünür oldu, böylece üçgen elde etmiş olduk. Ardından bu üçgenimize box-shadow ile gölge vermek istediğimizde, şu şekilde bir sonuç alırız.
```css
box-shadow: 0px 0px 10px rgba(0,0,0,.5);
```html
<div
style={{
borderColor: "transparent transparent #1976D2 transparent",
borderStyle: "solid",
borderWidth: "100px 100px 100px 100px",
boxShadow: "0px 0px 10px rgba(0,0,0,.5)",
height: "0px",
margin: "15px 0",
width: "0px"
}}
/>
Bunun nedeni, bahsettiğim gibi aslında bir kare yapmış olmamız; CSS kodları, kareye göre gölge belirliyor.
Peki bu sorunu nasıl çözebiliriz?
İmdadımıza CSS'in **filter** özelliği yetişiyor. **filter: drop-shadow** ile gölge verdiğimiz zaman görünmeyen yerleri baz almayarak sadece görünür kısma gölge vermiş olduk.
```css
filter: drop-shadow(0px 0px 10px rgba(0,0,0,.5));Tarayıcı desteği için şu siteyi inceleyebilirsiniz : caniuse.com/#search=filter
Codepen Canlı Önizleme
Canlı olarak codepen üzerinden inceleyebilirsiniz. Kolay gelsin.