我试图让我的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函数 –