Создать диаграмму структуры пирамиды на странице из пользовательского ввода

0

Я хочу создать структуру на основе пирамиды на странице с пользовательского ввода, и структура должна выглядеть следующим образом: Изображение 174551

Я попытался зациклиться на JS, чтобы отобразить структуру, но не могу изменить свойство css в цикле JS в соответствии с пользовательским вводом. Вот код на этой странице http://jsfiddle.net/Q8KUS/87/

var objContainer = document.getElementById( "container" ),
    intLevels = 10,
    strBlocksHTML = '';

for( var i=0; i<intLevels; i++ ){
    strBlocksHTML += '<div class="buildingBlock"></div>';
    strBlocksHTML += '<div></div>'; // Line break after each row
}

objContainer.innerHTML = strBlocksHTML;

Выход отображается как башня, а также требуется удалить интервал между каждым элементом <div>. Как я могу изменить это с помощью jquery или каким-либо другим методом? Вышеупомянутое изображение - желаемый результат, который я хочу.

4 ответа

1

Изменив первую строку strBlocksHTML на

strBlocksHTML += '<div class="buildingBlock" style="width: ' + Number(20 + 40 * i) + 'px"></div>';

оно работает.

1

Вы можете просто установить ширину с помощью атрибута style для каждого созданного div и вычислить его динамически - Ive меняет ваш цикл, чтобы бежать назад, примерно так:

for(var i=intLevels; i>0; --i) {
    strBlocksHTML += '<div class="buildingBlock" style="width:'+(250-i*20)+'px"></div>';
}

Измените значения (ширина 250 пикселей, из которых я * 20 вычитается), как вы считаете нужным, соответственно. рассчитать их динамически в зависимости от количества желаемых уровней пирамиды.

А также вам не нужны пустые div для разрывов строк - просто держите свои divs как display: block и задайте маржу для автоматического центрирования.

http://jsfiddle.net/Q8KUS/88/

  • 0
    Это прекрасно работает, спасибо за помощь. Действительно ценю это.
1

вам нужно сделать что-то вроде этого

for( var i=0; i<intLevels; i++ ){
    var wd = 20 * i;
    strBlocksHTML += '<div class="buildingBlock" style="width:'+wd+'px"></div>';

    strBlocksHTML += '<div></div>'; // Line break after each row
}

http://jsfiddle.net/kyYCC/

вы можете объединить их ближе, используя css

  • 0
    Спасибо за помощь. Я пытался добавить переменную в свойство CSS, но не могу понять, как? Этот код действительно помогает.
  • 0
    мой приятель приятель :)
1

http://jsfiddle.net/flocsy/Q8KUS/90/

.buildingBlock {
    display:block;
    width:20px;
    height:20px;
    margin:0 auto;
    background-color:#eee;
    border:2px solid #ccc;
}
#container {
    text-align:center;
}

а также

var objContainer = document.getElementById( "container" ),
    intLevels = 10,
    strBlocksHTML = '';


for( var i=0; i<intLevels; i++ ){

    strBlocksHTML += '<div class="buildingBlock" style="width:'+(10*i)+'px"></div>';

    //strBlocksHTML += '<div></div>'; // Line break after each row
}

objContainer.innerHTML = strBlocksHTML;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню