- Konu sahibi
- #1
İmgenin en-boy oranını bozmadan bir kutuya sığmasını sağlamak için görsele
Önce görselin sığacağı kutuya sabit veya sınırlı bir genişlik ve yükseklik verin. Ardından
Bu örnekte resim, 300×200 piksel olan kutunun içine tamamen yerleşir. Görselin oranı kutudan farklıysa CSS resmi esnetmez; kalan alan kutunun arka plan renginin görünmesine izin verir.
Kutunun yüksekliğini sabitlemek istemiyorsanız, yalnızca görselin genişliğini sınırlayıp yüksekliği otomatik bırakabilirsiniz:
Bu kullanımda görsel kutunun genişliğini aşmaz ve yüksekliği özgün en-boy oranına göre hesaplanır. Ancak kutunun yüksekliği sabitlenmez; bu nedenle farklı görsellerin bulunduğu kartlarda tüm kutular aynı yükseklikte görünmeyebilir.
Örneğin kartların aynı yükseklikte ve boşluksuz görünmesi isteniyorsa
Bu kod resmin oranını korur; fakat resim kutudan daha yatay veya daha dikey bir orana sahipse bazı kenarlar görünmez. Kırpmanın hangi bölgeden yapılacağını değiştirmek için
Sabit genişlik yerine çoğu durumda kutuyu kapsayıcıya göre ölçeklendirmek daha uygundur. Örneğin görselin ekrandan taşmaması için:
Resim orijinal boyutundan büyük hale gelmemeli, ancak küçük ekranlarda küçülebilmeli diyorsanız
Görsel esniyorsa
width: 100%; height: 100%; object-fit: contain; uygulayın. Böylece resim kutuya tamamen sığar; kutu oranı ile resmin oranı farklıysa boşluk kalabilir. Kutuyu tamamen doldurmak istiyorsanız object-fit: cover; kullanın; bu durumda resmin kenarlarından kırpma olabilir.Temel kullanım
Önce görselin sığacağı kutuya sabit veya sınırlı bir genişlik ve yükseklik verin. Ardından
img öğesinin her iki boyutunu kutuya bağlayıp object-fit ile oran koruma davranışını belirleyin.
HTML:
<div class="resim-kutusu">
<img src="resim.jpg" alt="Ürün görseli">
</div>
<style>
.resim-kutusu {
width: 300px;
height: 200px;
}
.resim-kutusu img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
</style>
Bu örnekte resim, 300×200 piksel olan kutunun içine tamamen yerleşir. Görselin oranı kutudan farklıysa CSS resmi esnetmez; kalan alan kutunun arka plan renginin görünmesine izin verir.
display: block; ise görselin satır içi öğe davranışından kaynaklanabilecek küçük alt boşluğu önlemek için kullanılır.Kutunun yüksekliğini sabitlemek istemiyorsanız, yalnızca görselin genişliğini sınırlayıp yüksekliği otomatik bırakabilirsiniz:
CSS:
.resim-kutusu img {
max-width: 100%;
height: auto;
display: block;
}
Bu kullanımda görsel kutunun genişliğini aşmaz ve yüksekliği özgün en-boy oranına göre hesaplanır. Ancak kutunun yüksekliği sabitlenmez; bu nedenle farklı görsellerin bulunduğu kartlarda tüm kutular aynı yükseklikte görünmeyebilir.
Kutuyu tamamen doldurmak mı, resmi tamamen göstermek mi?
object-fit değerini, görselin tamamının görünmesinin mi yoksa kutunun boşluksuz dolmasının mı daha önemli olduğuna göre seçin.| Değer | Sonuç | Ne zaman kullanılmalı? |
|---|---|---|
| contain | Görselin tamamı görünür, boşluk kalabilir. | Ürün, logo, belge veya ekran görüntüsünün kırpılmaması gerektiğinde. |
| cover | Kutu tamamen dolar, kenarlar kırpılabilir. | Kart kapakları, galeri görselleri ve sabit ölçülü afiş alanlarında. |
| fill | Görsel kutunun ölçülerine zorlanır, oran bozulabilir. | Genellikle kullanılmamalıdır; resmin esnemesine yol açar. |
cover tercih edilebilir:
CSS:
.kart-gorseli {
width: 100%;
height: 220px;
object-fit: cover;
display: block;
}
Bu kod resmin oranını korur; fakat resim kutudan daha yatay veya daha dikey bir orana sahipse bazı kenarlar görünmez. Kırpmanın hangi bölgeden yapılacağını değiştirmek için
object-position kullanabilirsiniz:
CSS:
.kart-gorseli {
object-position: center;
}
/* Görselin üst kısmını öncelikli gösterir */
.kart-gorseli.ust {
object-position: center top;
}
Responsive kullanımda dikkat edilmesi gerekenler
Sabit genişlik yerine çoğu durumda kutuyu kapsayıcıya göre ölçeklendirmek daha uygundur. Örneğin görselin ekrandan taşmaması için:
CSS:
.resim-kutusu {
width: 100%;
max-width: 600px;
aspect-ratio: 3 / 2;
}
.resim-kutusu img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
aspect-ratio: 3 / 2; kutunun genişliği değişse bile yüksekliğin oranlı kalmasını sağlar. contain kullanıldığı için resim tamamen görünür; kutunun oranı ile görselin oranı uyuşmuyorsa boş alan oluşması normaldir. Boş alan istemiyorsanız yalnızca contain değerini cover ile değiştirin.Resim orijinal boyutundan büyük hale gelmemeli, ancak küçük ekranlarda küçülebilmeli diyorsanız
max-width: 100%; height: auto; yaklaşımını kullanın. Bu yöntem görseli sabit yükseklikteki bir kutuya zorlamaz; bu nedenle kart düzeni gibi eşit yükseklik gerektiren tasarımlarda aspect-ratio ve object-fit birlikte daha uygundur.Resim neden hâlâ bozuk görünüyor?
object-fit yalnızca görselin kendisine aynı anda genişlik ve yükseklik uygulandığında etkili olur. Bu nedenle img öğesinde yalnızca width: 100%; bulunuyorsa kutunun yüksekliği beklediğiniz gibi kontrol edilmeyebilir. Önce kutunun gerçek bir yüksekliği veya aspect-ratio değeri olduğundan, sonra görselde height: 100%; tanımlandığından emin olun.Görsel esniyorsa
object-fit: fill; kullanılıyor olabilir veya başka bir CSS kuralı sizin kuralınızı eziyor olabilir. Tarayıcının geliştirici araçlarında ilgili img öğesini seçip hesaplanan width, height ve object-fit değerlerini kontrol edin. contain ile resmin tamamı görünmesine rağmen boşluk kalıyorsa bu bir hata değildir; kutu ve görselin en-boy oranlarının farklı olduğunu gösterir. Boşluk yerine kırpma kabul edilebiliyorsa cover kullanmanız gerekir.