【发布时间】:2016-01-13 03:23:22
【问题描述】:
我正在尝试构建一个简单的响应式画廊。 Code pen here
现在只有一个简单的图片 CSS 设置:
img {
height: 150px;
float: left;
margin: 2px;
}
我希望我的画廊行的宽度为 100%,并相应地缩放每行中的图像高度,以保持纵横比。
场景是这样的: 在窗口加载和调整大小时: 1.将每一行包装成#div 2.计算每一行的图像高度(覆盖初始固定值)
我试图找到一种纯 CSS 方式,但看起来如果没有一些 JavaScript,我就无法摆脱这里。
编辑:我能够用一些 jQUery“疯狂技能”做到这一点: codepen.io/ztm/pen/NGwaEL
$(document).ready(cascade);
$(window).on('resize',cascade);
function cascade() {
$('img').css({ 'height': 150 + "px" });
var wdth = $(".box").width();
var img_width = 0;
$('img').each(function() {
img_width += $(this).outerWidth( true );
if(img_width < wdth){
$(this).addClass('active');
$('.result').html('Ratio: '+wdth/img_width);
}
});
var ratio = (wdth-24)/img_width;
$('img').css({ 'height': 150*ratio + "px" });
}
它计算具有初始高度的单行图像。
到目前为止,我发现的问题的最佳解决方案是: miromannino.com/projects/justified-gallery/comment-page-4/
【问题讨论】:
-
这是不可能的。您将失去纵横比以使它们适合宽度。在您想要的结果中,图像的宽度会增加,但高度不会改变
-
在他想要的结果中,高度改变了@JacobRaccuia
-
@Jacob - 每行的高度都会改变
-
高度确实发生了变化,但这仍然是不可能的。你永远不会有完美的匹配。填充可用宽度将使每个图像的高度增长量不同,因为它们具有不同的比率。
-
@LcSalazar,可以将行宽除以行中图像的总宽度 - 你会得到一个比率。将此比率乘以每个图像的宽度,图像将填满行宽。
标签: javascript jquery html css