CSS

Yalnızca CSS Tam Genişlik Duyarlı Görüntüler 2 Yol

Çok uzak olmayan bir geçmişte jQuery Dağın Kralı iken ve CSS3 hala bu şekilde adlandırılmaya değerken, duyarlı arka plan görüntüleri için en popüler araç şuydu: Backstretch jQuery eklentisi.

Bu eklentiyi, aşağıdaki mülk daha fazla desteklenmeden önce yaklaşık 30 sitede kullandım (yani toplam pazar payında IE <9 düşüş):

background-size: cover;

Göre caniuse.com, bu özellik ve değer, 9 yılı aşkın bir süredir iyi bir şekilde desteklenmektedir! Ancak Backstretch veya başka bir yerel çözüm kullanarak iç içe olan web siteleri henüz güncellenmemiş olabilir.

Alternatif yöntem standardı kullanır img etiketi ve sihrini kullanır:

object-fit: cover;

Her bir çözümü nasıl kullanacağımıza bakalım ve ne zaman birini diğerine tercih edeceğinizi öğrenelim.

kullanma background-size: cover

Geçmişimin on yılı, kurumsal web siteleri için son derece özelleştirilmiş WordPress temaları ve eklentileri oluşturmaktı. Şablonlu kart örneğini kullanarak, şu şekilde ayarlayabilirsiniz: background-size: cover çözüm.

İlk olarak, görüntünün eklendiği HTML style nitelik olarak background-image. Bir aria-label yerini alması teşvik edilmektedir. alt normalde düzenli olarak mevcut olacak özellik img etiket.

<article class="card">
<div
class="card__img"
aria-label="Preview of Whizzbang Widget"
style="background-image: url(https://placeimg.com/320/240/tech)"
>
</div>
<div class="card__content">
<h3>Whizzbang Widget SuperDeluxe</h3>
<p>
Liquorice candy macaroon soufflé jelly cake. Candy canes ice cream biscuit marzipan. Macaroon
pie sesame snaps jelly-o.
</p>
<a href="#" class="button">Add to Cart</a>
</div>
</article>

İlgili karşılık gelen CSS aşağıdaki gibi olacaktır, burada padding-bottom görüntüyü içeren div’de 16:9 oranını ayarlamak için kullanılan garip bir numara:

.card__img {
background-size: cover;
background-position: center;
// 16:9 ratio
padding-bottom: 62.5%;
}

İşte tamamen bu çözüm:

Stephanie Eckles (@5t3ph)

kullanma object-fit: cover

Bu çözüm daha yeni bir oynatıcıdır ve aşağıdakilere göre IE < Edge 16'yı desteklemeniz gerekiyorsa sizin için mevcut değildir. caniuse verileri polyfill olmadan.

Bu stil doğrudan img etiketini değiştiriyoruz, bu nedenle kart HTML’mizi aşağıdaki şekilde güncelliyoruz. aria-label ile alt:

<article class="card">
<img
class="card__img"
alt="Preview of Whizzbang Widget"
src="https://placeimg.com/320/240/tech"
/>

<div class="card__content">
<h3>Whizzbang Widget SuperDeluxe</h3>
<p>
Liquorice candy macaroon soufflé jelly cake. Candy canes ice cream biscuit marzipan. Macaroon
pie sesame snaps jelly-o.
</p>
<a href="#" class="button">Add to Cart</a>
</div>
</article>

Ardından, güncellenmiş CSS’miz, height Herhangi bir boyuttaki görüntünün kısıtlı orana uyması için görüntüyü sınırlama özelliği. Görüntünün doğal boyutu kısıtlı görüntü boyutundan büyükse, object-fit özelliği devralır ve varsayılan olarak görüntüyü kart kabı + tarafından oluşturulan sınırlar içinde ortalar. height tanım:

.card__img {
object-fit: cover;
height: 30vh;
}

Ve işte sonuç:

Stephanie Eckles (@5t3ph)

Her Çözüm Ne Zaman Kullanılır?

IE’nin eski sürümlerini desteklemeniz gerekiyorsa, çoklu dolgu olmadan aşağıdakilerle sınırlısınız: background-size çözüm (bunu 2020’de söylemek bana acı veriyor ama bu özellikle işletme ve eğitim sektörleri için bir olasılık).

Her iki çözüm de, kontrol ettiğiniz genişlik:yükseklik oranına dayalı olarak tam genişlikte duyarlı bir görüntü sağlar.

Seçmek background-size eğer:

  • ek içerik tutması beklenen bir kapsayıcıya başvurmak, ör. bir web sitesi başlık arka planı
  • için mevcut olmayan sözde öğeler aracılığıyla ek efekt stilleri uygulamak için img eleman
  • tek tip bir görüntü boyutunu daha zarif bir şekilde uygulamak için
  • görüntü tamamen dekoratif ve doğasında var img semantik gerekli değildir

Seçmek object-fit eğer:

  • bir standart kullanarak img bir görüntünün sağladığı tüm anlambilimi korumak için bağlamınız için en iyisidir

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu