我試圖讓我的img-wrapper高度爲其寬度的80%。下面的代碼會在我調整窗口大小時觸發並正常工作,問題是函數無法獲得正確的寬度值。相反,寬度取爲100,因此高度計算爲80px。onload事件在內容加載之前觸發
該網站正在使用bootstrap,我正在試圖製作看起來有點像寶麗來照片的卡片。圖像包裝需要具有標準的寬高比,圖像本身需要包含在包裝內,但我無法確定圖像是否具有正確的寬高比。
將近-工作JS:
fixSize = function() {
$('.card-img-wrapper').each(function() {
width = $(this).width();
height = width * 0.8;
$(this).height(height);
// Hiding the loader wheel
$(".loader").hide();
// Showing hidden elements to avoid flickering and resizing
$(this).parent().removeClass("hide");
});
}
$(window).on('load', fixSize);
$(window).resize(fixSize);
HTML
<!-- This is within PHP foreach loop -->
<div class="col-md-4">
<a class="float-left wh100" href="p_info.php?pID=<?php echo($p['ID']); ?>">
<div class="card hide">
<div class="card-img-wrapper">
<img src="<?php echo($p['imagepath']); ?>">
</div>
<h3><?php echo($p['name']); ?></h3>
<p>Price: <?php echo($p['price']); ?> €</p>
</div>
</a>
</div>
CSS
/* Helper Classes */
.float-left {
float: left;
}
.wh100 {
width: 100%;
height: auto;
}
.hide {
visibility: hidden;
}
/* Card */
.card {
width: 100%;
margin-bottom: 30px;
padding: 30px;
overflow: hidden;
}
.card-img-wrapper {
width: 100%;
height: 25vh;
}
.card-img-wrapper img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
display: block;
margin: 0 auto;
}
如果您將圖片設置爲固定大小div的背景,並根據您的需要使用'background-size:contains'或'background-size:cover',可能會更容易。這樣做意味着圖像的w/h比率無關緊要,並且也不需要JS代碼 –
由於您使用jQuery,因此在jQuery文檔中包裝fixSize函數調用.Ready函數 –