Приписывание интервалов значений к ключам в массиве
Всем привет! Возникла задача: я беру три элемента при помощи document.getElementsByClassName('element') в этом поле допустим находится 3 элемента. Мне каждому из них нужно приписать маржин лефт с интервалом в 50 пикселей как в отрицательном значении так и в положительном. Тобишь. Если элементов в массиве будет 3 то будет так : элемент 1: маржин лефт -50. Элемент 2: маржин лефт 0, элемент 3: маржин - лефт 50. Как это правильней сделать, наведите на решение, джаваскрипт сенсеи
|
|
Цитата:
|
var mgr = -50, els = document.getElementsByClassName('element'); [].forEach.call(els, function(el,i){ if(i) mgr+=50; el.style.marginLeft = mgr+'px'; }); |
Цитата:
если 7 то : -150 -100 -50 0 50 100 150 думаю принцип понятен, я попытаюсь сделать этот кусок кода сам но на всякий случай попрошу помощи здесь =) |
Цитата:
var els = document.getElementsByClassName('element'); var mgr = (els.length - Math.ceil(els.length / 2)) * -50; [].forEach.call(els, function(el,i){ if(i) mgr+=50; el.style.marginLeft = mgr+'px'; }); Исходил из того, что элементов нечётное количество (как в примере), центр на нуле. |
drakonolom,
четное количество может быть? |
Цитата:
|
Что-то мне кажется, что рони прав (пост 2)
<style> .space-between { display: flex; margin-bottom: 10px; justify-content: space-between; } </style> <section class="container"> <div>Другой элемент</div> <section class="space-between"> <div>1</div><div>2</div><div>3</div> </section> <div>Еще другой элемент</div> <section class="space-between"> <div>11</div><div>22</div><div>33</div><div>44</div> </section> <div>Совсем другой элемент</div> </section> |
drakonolom,
Если четные то по сотке? |
Цитата:
нуу, впринципе да, рабочая тема. Дело в том что у меня сейчас такая структура кода: <section class="container"> <div class="element"></div> <div class="element-1"></div> <div class="element"></div> <div class="element-2"></div> <div class="element"></div> <div class="element-3"></div> </section> обозначенные элементы можно закинуть в отдельный див с флексбоксом и от него уже потом работать :) Но над решением с js нужно еще подумать :thanks: |
Цитата:
![]() |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .container { display: flex; margin-bottom: 10px; justify-content: center; } .container > div { width: 50px; height: 50px; margin: 0 2px; background-color: red; } </style> </head> <body> <section class="container"> <div class="element">1</div> <div class="element-1">2</div> <div class="element">3</div> <div class="element-2">4</div> <div class="element">5</div> <div class="element-3">6</div> </section> </body> </html> так? |
Для адаптива в .container можно добавить свойство:
flex-wrap: wrap; |
Цитата:
|
Часовой пояс GMT +3, время: 19:59. |