Div над другим блоком
Имеется несколько блоков:
<div id="container" style="position: absolute;">
<div id="ui" style="width:150px;height:50px; position: absolute; background:red"> </div>
<div id="controls" style="width: 150px; height: 50px;"></div>
</div>
Суть задачи в том, что когда меняем положение или размер блока "controls", то и блок "ui" повторял эти же действия. Примерный код js для изменения положения блоков:
controls.style.top = e.pageY +'px' ;
controls.style.left = e.pageX+ 'px';
ui.style.top = controls.style.top;
ui.style.left = controls.style.left;
но блок "ui" не двигается. В чем подвох не понимаю, но если "controls" обернуть в еще один блок, то все работает. Как правильно организовать структуру блоков? |
CarterSS,
1) У тебя задан position: absolute для ui? Если нет, то он тебя будет в рутСкоуп посылать с твоими top и left 2) А нельзя написать функцию которая принимает элемент и прводит манипуляции со style и вызвать её для ui и controls? |
Цитата:
|
Суть в том, что родитель и дочерний элемент "controls" не всегда нужны, после перетаскивания я уберу их и как тогда изменится положение "ui"?
Подскажите, как бы Вы организовали такую задачу, когда два дочерних элемента свободно перемещаются по родителю, но при этом не перемещать родителя. |
Цитата:
Цитата:
Самый простой вариант - поместить перемещаемые элементы в один контейнер и таскать уже его. |
Тогда скажите, в чем проблема в данном случае, когда один элемент меняет положение, а второй на остается на месте, хотя оба позиционированы абсолютно и обоим одновременно меняю top/left?
Вот пример поведения, не понимаю, относительно чего позиционируется "ui" : ![]() |
CarterSS,
Давай все что есть |
CarterSS,
Судя по фрагменту html, у вас на разных элементах одинаковые id. В таком случае поведение элементов непредсказуемо. |
Цитата:
Нашел причину поведения: ui.style.property перестает работать после того, как добавляю элемент "controls", а делаю это следующим образом:
var ui = document.getElementById('ui');
var container = ui.parentNode;
markup = '<div class="ft-controls"><div>';
container.innerHTML = container.innerHTML + markup;
controls = container.getElementsByClassName('ft-controls');
Исправил кривизну
markup = '<div class="ft-controls"><div>';
container.innerHTML = container.innerHTML + markup;
на
controls = document.createElement('div');
controls.className = 'ft-controls';
container.appendChild(controls);
Теперь ui.style.property работает. |
| Часовой пояс GMT +3, время: 05:28. |