Div içindeki bir görüntü nasıl dikey olarak hizalanır?
Bir görüntüyü div
içeren bir görüntünün içine nasıl hizalayabilirsiniz?
Örnek
Örneğimde, <img>
yi <div>
içinde class ="frame
" ile dikey olarak ortalamam gerekiyor:
<div class="frame" style="height: 25px;">
<img src="http://jsfiddle.net/img/logo.png" />
</div>
.frame'in yüksekliği sabittir ve görüntünün yüksekliği bilinmemektedir. Eğer tek çözüm buysa .frame
içine yeni elemanlar ekleyebilirim. Bunu Internet Explorer 7 ve sonrası, WebKit, Gecko üzerinde yapmaya çalışıyorum.
Jsfiddle'a bakın [burada][1].
.frame {
height: 25px; /* Equals maximum image height */
line-height: 25px;
width: 160px;
border: 1px solid red;
text-align: center;
margin: 1em 0;
}
img {
background: #3A6F9A;
vertical-align: middle;
max-height: 25px;
max-width: 160px;
}
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=250 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=25 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=23 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=21 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=19 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=17 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=15 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=13 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=11 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=9 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=7 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=5 />
</div>
<div class=frame>
<img src="http://jsfiddle.net/img/logo.png" height=3 />
</div>
1360
3
Arka plan görüntüsü çözümü
Resim öğesini tamamen kaldırdım ve
.frame
sınıfı ile div'in arka planı olarak ayarladımhttp://jsfiddle.net/URVKa/2/
Bu en azından Internet Explorer 8, Firefox 6 ve Chrome 13'te iyi çalışıyor.
Kontrol ettim ve bu çözüm 25 pikselden daha büyük görüntüleri küçültmek için işe yaramayacak. Öğenin boyutunu ayarlayan
background-size
adında bir özellik var, ancak CSS 3 olduğundan Internet Explorer 7 gereksinimleriyle çakışacaktır.Bu çözümü kullanmak istiyorsanız, ya tarayıcı önceliklerinizi yeniden belirlemenizi ve mevcut en iyi tarayıcılar için tasarım yapmanızı ya da görüntüleri yeniden boyutlandırmak için sunucu tarafı kodu almanızı tavsiye ederim.
Bunu yapabilirsin:
Demo
http://jsfiddle.net/DZ8vW/1
CSS
JavaScript
Bu codepen'deki demo'da gösterildiği gibi modern tarayıcılar (düzenleme sırasında 2016) için çalışır
Görüntülere bir sınıf vermeniz ya da ortalanması gereken görüntüleri hedeflemek için kalıtım kullanmanız çok önemlidir. Bu örnekte
.frame img {}
kullandık, böylece yalnızca.frame
sınıfına sahip bir div tarafından sarılan görüntüler hedeflenecekti.