説明させてください。親 div にいくつかのフロートがあります。親の幅の制限により、一部が新しい行に移動する可能性があります。CSS でそれを行うことは可能ですか?
例: div3 と div5 のようなすべての div と、壊れている可能性のある次のすべての div のスタイルを設定します。(私の例では、幅と高さが実際には固定されていないことに注意してください)
http://jsfiddle.net/frntz/aMzF7/1/
ありがとうございました。
説明させてください。親 div にいくつかのフロートがあります。親の幅の制限により、一部が新しい行に移動する可能性があります。CSS でそれを行うことは可能ですか?
例: div3 と div5 のようなすべての div と、壊れている可能性のある次のすべての div のスタイルを設定します。(私の例では、幅と高さが実際には固定されていないことに注意してください)
http://jsfiddle.net/frntz/aMzF7/1/
ありがとうございました。
CSSだけではできません。div の幅に対してコンテナーの幅を計算するには、JavaScript を使用する必要があります。次の行にラップされる div は、累積された div の幅がラッパーの幅を超えることなどによって決定できます。JavaScript は、幅の累積を簡単にリセットしてクラスを適用し、子ノードがすべて「ラップされる」まで反復を続けることができます。 ' div が検出され、スタイルが設定されます。
jQuery を使用した例を次に示します。
var maxWidth = $('#parent').width(),
accWidth = 0;
$('#parent').children().each(function(){
accWidth += $(this).width();
if (accWidth > maxWidth) {
$(this).addClass('newline');
accWidth = $(this).width();
}
});
デモ 1: http://jsfiddle.net/AlienWebguy/77NTw/
デモ 2: http://jsfiddle.net/AlienWebguy/77NTw/1/
そして、ここにバニラJSの例があります:
var maxWidth = document.getElementById('parent').offsetWidth,
accWidth = 0,
nodes = document.getElementById('parent').childNodes,
i;
for (i in nodes) {
if (nodes[i].hasOwnProperty('offsetWidth')) {
accWidth += nodes[i].offsetWidth;
if (accWidth > maxWidth) {
nodes[i].className += ' newline';
accWidth = nodes[i].offsetWidth;
}
}
}
はい。
親コンテナーに余裕がない場合、フロートは常に次の行に進みます。