Mục tiêu là tạo bố cục dạng lỏng như hiển thị bên dưới.Thuật toán bố cục dạng rắn giống như
Cho đến nay tôi có một chức năng làm việc moveBox(lastBox, "east")
mà theo dõi các chỉ số hàng và cột.
function moveBox(box, where) {
switch (where) {
case "north":
lastTopOffset -= BOX_HEIGHT + BOX_MARGIN;
box.style.top = lastTopOffset + 'px';
box.style.left = lastLeftOffset + 'px';
rowIndex -= 1;
break;
// ...
}
My current code,
(function() {
var i, lastBox,
MAX_DIVS = 72,
BOX_HEIGHT = 50,
BOX_WIDTH = 100,
BOX_MARGIN = 5,
field = document.getElementById('fieldPerimeter'),
fieldHeight = field.offsetHeight,
maxRows = Math.floor(fieldHeight/(BOX_HEIGHT + BOX_MARGIN)),
rowIndex = 0,
colIndex = 0,
lastLeftOffset = 0,
lastTopOffset = 0;
function moveBox(box, where) {
switch (where) {
case "north":
lastTopOffset -= BOX_HEIGHT + BOX_MARGIN;
box.style.top = lastTopOffset + 'px';
box.style.left = lastLeftOffset + 'px';
rowIndex -= 1;
break;
case "east":
lastLeftOffset += BOX_WIDTH + BOX_MARGIN;
box.style.top = lastTopOffset + 'px';
box.style.left = lastLeftOffset + 'px';
colIndex += 1;
break;
case "south":
lastTopOffset += BOX_HEIGHT + BOX_MARGIN;
box.style.top = lastTopOffset + 'px';
box.style.left = lastLeftOffset + 'px';
rowIndex += 1;
break;
default:
break;
}
}
for (i = 0; i < MAX_DIVS; i += 1) {
lastBox = document.createElement('div');
lastBox.className = 'box';
lastBox.innerHTML = i;
field.appendChild(lastBox);
//delete me
if((i + 1) % 2 === 0 || (i + 1)% 3 === 0){
moveBox(lastBox, "east");
} else {
moveBox(lastBox, "south");
}
//delete me
// if(rowIndex < maxRows && rowIndex > 0){
// if (colIndex % 4 === 0){
// moveBox(lastBox, "south");
// } else if (colIndex % 2 === 0){
// moveBox(lastBox, "north");
// } else {
// moveBox(lastBox, "east");
// }
// }
}
})();
gắn thêm divs để một container và sau đó di chuyển nó. Đoạn mã dưới đây cho thấy một phần nỗ lực của tôi để chỉ định thời điểm di chuyển Bắc hoặc Nam. Nhưng tôi đang đấu tranh với việc đạt được bố cục mong muốn.
if (colIndex % 4 === 0) { moveBox(lastBox, "south"); }
else if (colIndex % 2 === 0) { moveBox(lastBox, "north"); }
else { moveBox(lastBox, "east"); }
Một đoạn mã, hình ảnh và mã (nhờ Bart Kiers) về một câu hỏi thú vị từ người dùng mới? Upvote. Tôi muốn tất cả người dùng mới có điều này sẽ cho họ. ':)' –
Là cách bạn đã tiếp cận nó một yêu cầu, hoặc chỉ là một trong những bạn đã thử? –
Tôi đã thử các cách tiếp cận khác, tôi đã đăng nó bởi vì tôi nghĩ rằng tôi gần nhưng đầu của tôi phát nổ cố gắng tìm ra thuật toán. Sau đó tôi muốn sử dụng một giá trị ngẫu nhiên để không đi đến miền Bắc hay miền Nam, nhưng bây giờ tôi chỉ cần một số hướng dẫn với một số mã giả. Cảm ơn ông Kiers đã chỉnh sửa. – user1032739