要素を含むdivをDOMに追加しており、石積みを使用してこれらの内部要素を配置したいと考えています。ただし、setTimeoutコールバックで石積みを初期化しない限り、石積みは壊れます。
// I have a `#media` div in my html
var outerDiv = $('<div>').attr('style', 'width: 720px;');
this.$('#media').append(div);
// I create lots of boxes in a boxes div
var boxes = $('<div>').append(
$('<div>').attr('style', 'width: 160px; height: 180px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 340px; height: 120px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 160px; height: 120px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 160px; height: 180px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 340px; height: 100px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 340px; height: 160px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 160px; height: 180px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item'),
$('<div>').attr('style', 'width: 160px; height: 120px; margin: 10px 0px; ' +
'background-color: red; float: left;').addClass('item')
);
outerDiv.append(boxes);
// without the setTimeout wrapper, this breaks (in Chrome, everything clusters
// in the top left; in Firefox, everything lines up in a column on the left)
setTimeout(function() {
boxes.masonry({
itemSelector: '.item',
columnWidth: 180,
isResizable: true,
});
});
考え?