Как менять позиции html блоков c помощью js?

178
29 июля 2018, 17:00



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

Не совсем понимаю как реализовать это на javascript'e.

Answer 1

Просто меняйте позиции элементов между собой

let divs = document.getElementsByTagName("div"); 
for(var i = 0; i<divs.length; i++) { 
    divs[i].onclick = function() { 
    if (this.id == 'center') return; 
    let center = document.getElementById('center'); 
    let cLeft = center.style.left; 
    let cTop = center.style.top; 
    center.style.left = this.style.left; 
    center.style.top = this.style.top; 
    this.style.left = cLeft; 
    this.style.top = cTop; 
    center.removeAttribute('id'); 
    this.setAttribute('id','center'); 
  }; 
}
div { 
  position: fixed; 
  width: 50px; 
  height: 50px; 
}
<div style="top:0px;left:0px; background-color: red;"></div> 
<div style="top:0px;left:100px; background-color: green;"></div> 
<div style="top:50px;left:50px; background-color: blue;" id="center"></div> 
<div style="top:100px;left:0px; background-color: yellow;"></div> 
<div style="top:100px;left:100px; background-color: maroon;"></div>

READ ALSO
JS массив в Excel

JS массив в Excel

Есть массив объектов, которые нужно вывести в excel файлВсё делается правильно, но данные все слипаются, все узко и ничего не понятно

244
datepicker обернуть в функцию?

datepicker обернуть в функцию?

Кто то знает почему из функции не могу вызвать air datepicker?

211
function getHash()

function getHash()

У меня есть страничка, на которой есть меню, которое отвечает за содержание контента в окне, она реализована через:

246
Отправка сообщения на Е-mail google spreadsheets

Отправка сообщения на Е-mail google spreadsheets

Делаю рассылку оповещения для таблицы, при запуске отправления отсылает очень много одинаковых сообщений на E-mailВозможно кто-то знает в чем...

224