我有一个“教室”的 div,其中包含每个“学生”的 div。每个“学生” div 都包含一个图像。这是HTML:
<div class="classroom">
<div class="student">
<img class="student-image" src="http://dnqgz544uhbo8.cloudfront.net/_/fp/img/home/f.AmzRdUdc4pEtCuGvU03WXQ.jpg">
</div>
<div class="student">
<img class="student-image" src="http://dnqgz544uhbo8.cloudfront.net/_/fp/img/home/k.jXX55KhHUWZGTAb-GpPkdg.jpg">
</div>
<div class="student">
<img class="student-image" src="http://dnqgz544uhbo8.cloudfront.net/_/fp/img/home/c.ZKQXc2Kc8-po-OK6AhDbtw.jpg">
</div>
</div>
我想在一行中显示所有“学生” div,所以我使用以下 css:
body {
padding: 0;
margin: 0;
overflow: hidden;
}
html, body {
height: 100%;
}
.classroom {
position: relative;
height: 100%;
}
.classroom .student {
position: relative;
height: 100%;
float: left;
}
.classroom .student .student-image {
height: 100%;
}
为了学生在“教室” div 中有足够的位置,我使用 jQuery 来计算“教室”的宽度:
$(document).ready(function() {
var w = 0;
$(".student").each(function() {
w += $(this).width();
});
$(".classroom").width(w);
});
不幸的是,结果不是我所期望的。最后一个“学生” div 将向下一行(好像没有float: left;
分配)。更奇怪的是,当“教室”div 的宽度增加 1 个像素时,div 会返回到第一行末尾的位置。
我做了那些 jsfiddles:在这里http://jsfiddle.net/U3gBG你可以看到问题。单击结果面板并使用箭头键向下和向右滚动。
这里http://jsfiddle.net/U3gBG/1/可以看到计算后“教室”div的宽度加1的结果(“教室”的宽度等于“学生”宽度的和加1像素)。这个结果是我需要的。
我不明白为什么我需要将父 div 的宽度增加 1?为什么总和所有子 div 的宽度还不够?