поправить код
здравстуйте господа.
Есть код который создает некоторое кол-во блоков внутри одного блока и распологает их отсортированно друг за другом (смотри выполнение).
<table>
<tr>
<td>
<div id = "boxes_container">
</div>
</td>
</tr>
</table>
<style>
table {
margin: 0 auto;
}
#boxes_container {
width: 500px;
height: 350px;
position: relative;
}
.hidden_box {
margin: 1px;
padding: 1px;
border: 1px solid black;
position: absolute;
}
</style>
<script type = 'text/javascript'>
var boxesNumber = 12, boxContainer = document.getElementById("boxes_container");
function createHiddenBoxes() {
var hiddenBox;
for (i = 0; i < boxesNumber; i++) {
hiddenBox = document.createElement("div");
hiddenBox.className = "hidden_box";
hiddenBox.id = "hidden_box" + i;
hiddenBox.style.width = 95 + 'px';
hiddenBox.style.height = 70 + 'px';
boxContainer.appendChild(hiddenBox);
}
}
function sortHiddenBoxes() {
var hiddenBoxes = boxContainer.getElementsByClassName("hidden_box"),
x = 0, y = 0, deltaX = 100, deltaY = 75;
for (var i = 0; i < boxesNumber; i++) {
if (i == 0) hiddenBoxes[i].style.top = 5 + 'px';
if (i != 0 && i < 4) {
x += deltaX;
hiddenBoxes[i].style.left = x + 'px';
hiddenBoxes[i].style.top = 5 + 'px';
}
}
x = -deltaX;
for (var j = 0; j < boxesNumber; j++) {
if (j > 3) {
x += deltaX;
y = deltaY;
hiddenBoxes[j].style.left = x + 'px';
hiddenBoxes[j].style.top = y + 'px';
}
}
x = -deltaX;
y = 2 * deltaY;
for (var k = 0; k < boxesNumber; k++) {
if (k > 7) {
x += deltaX;
hiddenBoxes[k].style.left = x + 'px';
hiddenBoxes[k].style.top = y + 'px';
}
}
}
createHiddenBoxes(); sortHiddenBoxes();
</script>
необходимо переписать функцию sortHiddenBoxes() так чтобы она каждый раз динамически отрисовывала блоки в зависимости от переменной boxesNumber в которой указывается число блоков - значение для этой переменной тянется из базы и иногда может быть разным (это кол-во картинок которые расположены в одной общей картинке (4 x 3, 5 x 20) по 4 картинки на каждой строке с 5ью столбцами и т.д.)Мой гавнокодский вариант работает только для случая 4 x 3 (12 блоков - потому что большинство картинок будут иметь в себе 12 картинок, но большинство не означает ВСЕ!!). Помогите избавиться от этих 3 циклов for() {} сделав код покороче и универсальнее ( |
Arramis,
может таблицу генерировать а не дивы? |
Цитата:
помоему |
Arramis,
немогли бы вы пояснить что значит Цитата:
Цитата:
|
Цитата:
и сдвигает вниз на deltaY px если кол - во блоков > 3 или > 7 - получается такое некое выравнивание. Мне нужно чтобы эта функция выполнялась правильно (тоесть "выравнивала" блоки) в независомсти от кол - ва блоков. Даешь ему параметр колва блоков, deltaX, deltaY и она рисует столько сколько нужно и "выровненно". Если генерировать таблицу то содержимое каждого tr и td надо будет тоже выравнивать (но уже с другими значениями deltaX и deltaY) чтобы все картинки из общей картинки накладывались на каждый этот блок ровно. |
Цитата:
... да и зачем сдвигать задали нужные отступы оно само ляжет как надо |
Цитата:
|
рони,
тоесть мне необходимо сдвигать именно эти созданные мною блоки а не сами картинки, потому что картинки на одной целой картинке доступа к которым из js я не имею потому что они находятся в другой картинке которая одна. |
рони,
если блоки не сдвигать они будут накладываться друг на друга - тоесть все блоки будут на первой картинке, а мне нужно чтобы каждый блок был наложен на каждой картинке. |
Arramis,
моя твоя непонимать ... |
Arramis,
:-?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table>
<tr>
<td>
<div id = "boxes_container">
</div>
</td>
</tr>
</table>
<style>
table {
margin: 0 auto;
padding: 0px;
}
.hidden_box {
margin: 1px;
padding: 1px;
border: 1px solid black;
float: left;
}
</style>
<script type = 'text/javascript'>
function createHiddenBoxes(boxesNumber, Cell, Id) {
var boxContainer = document.getElementById(Id);
boxContainer.style.width = (95+6)*Cell + 'px';
var hiddenBox;
for (i = 0; i < boxesNumber; i++) {
hiddenBox = document.createElement("div");
hiddenBox.className = "hidden_box";
hiddenBox.id = "hidden_box" + i;
hiddenBox.style.width = 95 + 'px';
hiddenBox.style.height = 70 + 'px';
boxContainer.appendChild(hiddenBox);
}
}
createHiddenBoxes(12, 4, "boxes_container");
</script>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table>
<tr>
<td>
<div id = "boxes_container">
</div>
</td>
</tr>
</table>
<style>
table {
margin: 0 auto;
padding: 0px;
}
.hidden_box {
margin: 1px;
padding: 1px;
border: 1px solid black;
float: left;
}
</style>
<script type = 'text/javascript'>
function createHiddenBoxes(boxesNumber, Cell, Id) {
var boxContainer = document.getElementById(Id);
boxContainer.style.width = (95+6)*Cell + 'px';
var hiddenBox;
for (i = 0; i < boxesNumber; i++) {
hiddenBox = document.createElement("div");
hiddenBox.className = "hidden_box";
hiddenBox.id = "hidden_box" + i;
hiddenBox.style.width = 95 + 'px';
hiddenBox.style.height = 70 + 'px';
boxContainer.appendChild(hiddenBox);
}
}
createHiddenBoxes(100, 5, "boxes_container");
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 18:37. |