【发布时间】:2014-06-02 00:55:39
【问题描述】:
早上好。
首先,提前致谢!很长一段时间以来,我一直是堆栈溢出的旁观者,你们很棒。
我希望为我的网页 www.eden-koru.com 创建一个照片布局,其中照片以行显示。由于裁剪,以及不同的相机,每张照片可能有不同的纵横比,因此在放置时会有很多不均匀的间隙。
我想做的一个完美的例子是 www.flickr.com/childe-roland。这些是我的照片,尽管纵横比,所有的布局都很完美。
在一个不同但类似的问题上,我找到了一个 80% 的解决方案,这个 JSFiddle http://jsfiddle.net/martinschaer/aJtdb/:
var container_width = $('#container2').width();
var container_width_temp = 0.0; // must be float!
var container_height = 100.0; // random initial container heigth for calculations
$('#container2 img').each(function(){
var newwidth = (this.width / this.height) * container_height;
this.width = newwidth;
$(this).data('width', newwidth);
container_width_temp += newwidth;
});
$('#container2 img').each(function(){
this.width = $(this).data('width') * (container_width / container_width_temp);
});
现在,这只适用于一排。我没有使用 JQuery 的经验,但我能够看到数学并创建一个“row_counter”变量来计算图像包装器 div 的数量......这让我达到了 90%。我只是将最终宽度乘以该行数,然后减去几个像素来弥补边距。
看起来像这样:
$('.imageWrapper').each(function(){
rows +=1;
});
我的 div 布局如下所示:
<div class="mainWrapper">
<div class="imageWrapper">
<img width="326" src="images/_DSC4434.jpg"></img>
<img width="276" src="images/_DSC4537.jpg"></img>
<img width="254" src="images/_DSC4483.jpg"></img>
</div>
<div class="imageWrapper">
<img width="276" src="images/_DSC0253.jpg"></img>
<img width="306" src="images/The_Alaska_RangeIR.jpg"></img>
<img width="275" src="images/DSC_9111.jpg"></img>
</div>
<div class="imageWrapper">
<img width="276" src="images/_DSC4689.jpg"></img>
<img width="276" src="images/_DSC4718.jpg"></img>
<img width="276" src="images/_DSC4738.jpg"></img>
</div>
</div>
我的 CSS 是这样的:
.mainWrapper {
background-color: black;
margin: 0 auto 50px auto;
width: 70%;
height: auto;
border: 2px solid white;
border-radius: 10px;
clear: both;
padding: 7px 7px 7px 7px;
text-align: center;
overflow: hidden;
}
.mainWrapper .imageWrapper {
overflow: hidden;
width: 100%x;
margin: 0px auto 0px auto;
}
.mainWrapper .imageWrapper img {
display: inline-block;
border: 1px solid #fff;
}
现在,它看起来比以前更好了,但仍然存在很多我无法通过样式来解释的不均匀性。此外,我不能再使用width: 100% 使我的图像随着视口的变化而缩小。
我希望我已经提供了足够的细节。请记住,我对 JQuery 一无所知,并且 5 年没有接触过 JavaScript。我是一名 IT 专业的学生,毕业后加入了海军,直到上周才再次编码。
干杯! 韦斯
【问题讨论】:
-
你为什么不使用同位素砌体插件desandro.github.io/masonry/demos/basic-multi-column.html
-
您的具体问题是什么?
-
@jfriend00 对不起,你是对的......我实际上并没有使用问号。我想修复我的代码以均匀地适合图像。完美。我该怎么做?
-
@San 我一定会看看的。我更喜欢从头开始,这样我可以更好地学习编码。但是,如果我变得足够沮丧,我会尝试一下...我只是对消除我的编码技能和学习新事物感兴趣...
-
自己编码是件好事。但插件的优势在于错误更新。
标签: javascript jquery html css image