我使用填充底部技巧來定義元素的高度以防止迴流。通常我會手動執行此操作,但由於我在圖庫中有數百個圖像,因此最好使用JavaScript。現在我相信我在那裏80%,我只需要改進功能,以便我可以得到所有不同元素的不同結果,因爲每個圖像具有不同的比例。退房的片段:如何將JavaScript函數應用於同一類下的幾個不同元素(具有不同的結果)?
(function() {
var tags = document.getElementsByClassName('item');
var img = document.getElementById('myImg');
var width = img.naturalWidth;
var height = img.naturalHeight;
for (var i = 0; i < tags.length; ++i) {
tags[i].style.paddingBottom = (100 * (height/width)) + '%';
}
}());
.item-box {
display: inline-block;
width: 30%;
}
.item {
position: relative;
display: block;
border: 1px solid red;
margin: 0;
}
.item img {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="item-box"> <a class="item">
<img id="myImg" alt="600x400" src="http://lorempixel.com/output/nature-q-c-600-400-1.jpg"/>
</a>
</div>
<div class="item-box"> <a class="item">
<img id="myImg" alt="600x900" src="http://lorempixel.com/output/transport-h-c-600-900-10.jpg"/>
</a>
</div>
<div class="item-box"> <a class="item">
<img id="myImg" alt="600x600" src="http://lorempixel.com/output/sports-q-c-600-600-10.jpg"/>
</a>
</div>
我知道ID是唯一的一個元素,但我想不出另一種方式來解決這個問題。圖片1看起來不錯,但是它應用了Image1(橫向)到Image2(應該是縱向)和Image3(應該是正方形)的相同填充。有關如何解決此問題的任何建議?謝謝!
如果您收到所有具有class * item *的元素作爲集合,您可以使用'tags [i] .getElementsByTagName('img')[0]'或簡單:'tags [i] .querySelector('img 「)'。 – RobG