Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.10.2018, 19:12
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

Приписывание интервалов значений к ключам в массиве
Всем привет! Возникла задача: я беру три элемента при помощи document.getElementsByClassName('element') в этом поле допустим находится 3 элемента. Мне каждому из них нужно приписать маржин лефт с интервалом в 50 пикселей как в отрицательном значении так и в положительном. Тобишь. Если элементов в массиве будет 3 то будет так : элемент 1: маржин лефт -50. Элемент 2: маржин лефт 0, элемент 3: маржин - лефт 50. Как это правильней сделать, наведите на решение, джаваскрипт сенсеи

Последний раз редактировалось drakonolom, 01.10.2018 в 19:14.
Ответить с цитированием
  #2 (permalink)  
Старый 01.10.2018, 20:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

drakonolom,
https://webref.ru/css/justify-content
space-between
Ответить с цитированием
  #3 (permalink)  
Старый 02.10.2018, 10:29
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

Сообщение от рони Посмотреть сообщение
drakonolom,
https://webref.ru/css/justify-content
space-between
мне не нужен css, у меня эти элементы в контейнере где огромное количество других элементов.
Ответить с цитированием
  #4 (permalink)  
Старый 02.10.2018, 10:38
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var mgr = -50,
els = document.getElementsByClassName('element');
[].forEach.call(els, function(el,i){
if(i) mgr+=50;
el.style.marginLeft = mgr+'px';
});
Ответить с цитированием
  #5 (permalink)  
Старый 02.10.2018, 15:32
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

Сообщение от j0hnik Посмотреть сообщение
var mgr = -50,
els = document.getElementsByClassName('element');
[].forEach.call(els, function(el,i){
if(i) mgr+=50;
el.style.marginLeft = mgr+'px';
});
спасибо добрый человек! Еще мне нужно сделать так что если у нас будет допустим пять элементов то теперь ключи будут распределятся так: -100 -50 0 50 100
если 7 то : -150 -100 -50 0 50 100 150
думаю принцип понятен, я попытаюсь сделать этот кусок кода сам но на всякий случай попрошу помощи здесь =)
Ответить с цитированием
  #6 (permalink)  
Старый 02.10.2018, 16:02
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Сообщение от drakonolom Посмотреть сообщение
-100 -50 0 50 100
Могу ошибаться, но проверьте вот так:
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';
});

Исходил из того, что элементов нечётное количество (как в примере), центр на нуле.
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2018, 22:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

drakonolom,
четное количество может быть?
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2018, 10:37
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

Сообщение от j0hnik Посмотреть сообщение
drakonolom,
четное количество может быть?
да, четное количество может быть. В таком случаи должно быть -150 -50 +50 150, как бы чтобы между элементами было одинаковое расстояние. ухх как сложно
Ответить с цитированием
  #9 (permalink)  
Старый 03.10.2018, 10:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Что-то мне кажется, что рони прав (пост 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>

Последний раз редактировалось Dilettante_Pro, 03.10.2018 в 11:00.
Ответить с цитированием
  #10 (permalink)  
Старый 03.10.2018, 11:30
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

drakonolom,
Если четные то по сотке?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка наличия значения id в массиве значений Frol jQuery 3 31.05.2018 19:55
Быстрый поиск интервалов в массиве HJ90 Общие вопросы Javascript 19 16.08.2017 23:49
сложение значений в массиве - NaN Paulyyy Общие вопросы Javascript 10 17.05.2013 16:20