Görseli şekle göre kırpma: daire, yuvarlatılmış köşeler ve şekiller
Bir görseli ekleyip onu bir şekle göre (daire veya yuvarlatılmış köşeler) kırpmak için çoğu zaman overflow: hidden içeren bir kapsayıcı + object-fit: cover uygulanmış görsel kombinasyonu yeterlidir. Standart dışı şekiller için clip-path kullanın.
Eğer bozulma olmadan mükemmel bir daire istiyorsanız — daireyi kapsayıcı ile oluşturun, doğrudan görselin kendisiyle değil.
İçindekiler
Görsel ekleme ve temel duyarlılık
Minimal ekleme:
<img src="images/photo.jpg" alt="Görsel açıklaması">
Görselin düzeni bozmaması ve altında “ince çizgi” olmaması için:
img{
max-width: 100%;
height: auto;
display: block;
}
“Oval” olmayan dairesel görsel (avatar)
En kararlı yaklaşım — daireyi kapsayıcı belirler:
<div class="avatar">
<img src="images/avatar.jpg" alt="Avatar">
</div>
.avatar{
width: 120px;
height: 120px;
border-radius: 50%;
overflow: hidden;
}
.avatar img{
width: 100%;
height: 100%;
object-fit: cover; /* daireyi doldur, fazlalığı kırp */
object-position: 50% 50%; /* kareyi kaydırabilirsiniz */
}
Eğer <img> üzerine eşit width ve height olmadan border-radius: 50% uygularsanız, daire yerine oval elde edersiniz.
Yuvarlatılmış köşeler: 2 güvenilir yöntem
Yöntem 1 — hızlı (kırpma gerekmiyorsa):
.photo{
border-radius: 16px;
}
Yöntem 2 — “kartlardaki gibi” (yuvarlatma + düzgün kırpma):
<div class="thumb">
<img src="images/product.jpg" alt="Ürün">
</div>
.thumb{
width: 360px;
height: 220px;
border-radius: 18px;
overflow: hidden;
}
.thumb img{
width: 100%;
height: 100%;
object-fit: cover;
}
object-fit: cover, “beyaz boşlukları” ortadan kaldırır: görsel alanı doldurur ve taşan kısımlar kırpılır. Görselin tamamını göstermek önemliyse object-fit: contain kullanın, ancak boşluklar oluşabilir.
Şekle göre kırpma: clip-path
clip-path, yuvarlatmadan daha karmaşık bir şekil gerektiğinde kullanışlıdır: elmas, altıgen, “kesik” köşeler.
clip-path ile daire:
.shape-circle{
clip-path: circle(50% at 50% 50%);
}
inset ile yuvarlatılmış dikdörtgen:
.shape-rounded{
clip-path: inset(0 round 18px);
}
Altıgen:
.shape-hex{
clip-path: polygon(
25% 6%, 75% 6%,
100% 50%,
75% 94%, 25% 94%,
0% 50%
);
}
clip-path, görüntüleme alanını “keser”, ancak süper hassas tasarımcı konturları için her zaman uygun değildir. Rastgele bir şekil (dalga, leke, karmaşık kontur) gerekiyorsa — çoğunlukla SVG maskesi/clipPath kullanılır.
Sık yapılan hatalar
- Görselin altında ince bir çizgi belirdi →
img { display: block; }ekleyin. - Dairedeki görsel “ezildi” →
widthveheightbelirleyin veobject-fit: coverkullanın. - Köşeler yuvarlatıldı ama görsel “taşıyor” → kapsayıcıyı yuvarlatın ve
overflow: hiddenuygulayın. - Kırpma gerekiyor (yüz/nesne ortada değil) →
object-position: 50% 20%(veya başka değerler) ayarlayın.
SSS
Kapsayıcı olmadan daire yapılabilir mi?
Evet, ancak yalnızca <img> için width ve height eşitse (ve tercihen object-fit: cover kullanılırsa).
Hangisini seçmeli: border-radius mi yoksa clip-path mi?
Daire ve yuvarlatma için — border-radius. Çokgenler ve standart dışı şekiller için — clip-path.
Neden <img> üzerindeki border-radius bazen “kirli” görünür?
Çoğu zaman sorun, görselin kapsayıcıya göre kırpılmaması veya gerilmesinden kaynaklanır. Daha güvenilir çözüm: kapsayıcı + overflow: hidden + object-fit: cover.