last day (15 days later) » 

12:02 PM
0
A: Событие ресайза для div?

SamАлгоритм такой: Отлавливаем mousedown на div; Отлавливаем mouseup и, если произошло изменение размера div, то это событие и есть искомое. function watch(element) { var w = element.clientWidth; var h = element.clientHeight; element.innerHTML = ''; element.addEventListener('mous...

 
Sam
"но если ли не делать ресайза - то оно тоже отрабатывает . а этого не надо."
 
@Sam, и что? Твой ответ эту проблему не решает.
 
Sam
@Qwertiy Дополнил ответ.
 
А какие преимущества по сравнению с одним обработчиком mouseup, в котором так же будет проверяться размер элемента?
Кстати, не работает, если я увожу мышь за пределы окна: i.stack.imgur.com/JM8Ol.gif
 
Sam
@Qwertiy Если использовать только один обработчик mouseup, то как ты узнаешь, что был ресайз?
Кстати, не работает, если я увожу мышь за пределы окна => Конечно, ведь это только пример.
 
12:38 PM
@Sam так же как ты - при возникновении mouseup сравнить размер с предыдущим
если не совпал, то обновить старый
 
Sam
А где взять предыдущий?
 
@Sam с прошлого mouseup, а изначально после появления элемента замерить
 
Sam
Это решение не будет короче, чем у меня. Кроме того, придётся хранить размеры в глобальных переменных.
И если, к примеру, мы отслеживаем 10 элеметнов, нам потребуется 20 переменных.
 
у меня размеры хранятся, так что вариант подойдёт, но он напоминает велосипед, к сожалению... Неужели нет реального события?
 
Sam
Есть ещё такой вариант, то он тоже не самый простой: developer.mozilla.org/en-US/docs/Web/API/MutationObserver
Нет, похоже в этом случае он не поможет.
 
1:07 PM
вариант интересный, но всё равно необходима проверка. так что будет несколько сложнее :)
 
Sam
ОК, удачи!
 
 
1 hour later…
2:13 PM
@Sam зачем в глобальных?
 
Sam
2:34 PM
@Qwertiy Либо в глобальных, либо в замыкании. Как ещё можно?
 
3:28 PM
@Sam есть ещё вариант, определить в какой области находится мышка , если в нескольких пикселах от правого-нижнего угла - то ресайз. Вот только эти несколько пикселов - это сколько? и как их вычислить . и там вроде как область для захвата в виде треугольника...
 
Sam
3:47 PM
@Вадим Да, отследить не размер дива, а перемещение мышки - тоже годный вариант.
Но не думаю, что надо задавать ограничения в пикселах - мало ли, насколько большим может быть ресайз.
 
4:27 PM
@Sam обнаружен ещё вариант, необходимо проверить. если в div, который резайзится поместить ещё один див, (у меня там 3 дива, без id, и занимают всю площадь внешнего дива с помощью FlexBox) то mouseup на этих внутренних дивах возвращает ev.target.id пустоту , а моусап в правом нижнем углу - id внешнего дива.. т.е. "треугольник ресайза" имеет огромный z-index
но только без проверки изменения размера не обойтись...
 
5:03 PM
@Sam да, в замыкании при добавлении обработчика
а ещё можно dom-элементу пару лишних свойств присобачить
 

last day (15 days later) »