「生徒」ごとにdivを含む「教室」用のdivが1つあります。各「学生」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を1行で表示したいので、次の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;
割り当てられていないかのように)。さらに奇妙なことに、「Classroom」divの幅を1ピクセルに増やすと、divは最初の行の終わりの位置に戻ります。
私はそれらのjsfiddlesを作成しました:ここhttp://jsfiddle.net/U3gBGで問題を見ることができます。結果パネルをクリックし、矢印キーを使用して上下にスクロールします。
ここhttp://jsfiddle.net/U3gBG/1/では、計算後に「classroom」divの幅に1を加算した結果を確認できます(「classroom」の幅は「students」の幅の合計に1を加えたものに等しくなります)ピクセル)。この結果が私に必要なものです。
親divの幅を1増やす必要があるのはなぜですか?すべての子div幅を合計するだけでは不十分なのはなぜですか?