Пытаюсь решить проблему с трансформацией и скачками во время передачи данных. https://jsfiddle.net/nevolgograd/v4ac3g7w/9/
Куб крутится при зажатом Alt + левая кнопка мыши. Движение происходит за счет трансформации поворотом на pageX и pageY мыши, относительно центра экрана. Все работает почти замечательно до тех пор, пока я не отпускаю одну из кнопок и не перемещаю мышь в другую точку. Координаты мыши меняются, данные передаются в transform: rotate и куб совершает этот безумный разворот. Как этого избежать? Проще говоря, каким образом задавать новый центр координат при каждом щелчке мыши?
$("body").mousedown(function(event) {
if(event.which == 1 && event.altKey) { moving = true; }
if(moving) {
$(document).mousemove(function(event){
var width = document.documentElement.clientWidth,
halfWidth = document.documentElement.clientWidth/2,
eventX = event.pageX - halfWidth,
height = document.documentElement.clientHeight,
halfHeight = document.documentElement.clientHeight/2,
eventY = event.pageY - halfHeight;
$('#cube').css({
'transform':'rotateX(' + -eventY +'deg) rotateY(' + eventX + 'deg)'
})
});
}
});
$('body').mouseup(function(event){
if(event.which == 1 || event.altKey == false) {
moving = false;
$(document).off("mousemove");
}
});
Сохраните текущее положение мышки при нажатии:
$("body").mousedown(function(event) {
if(event.which == 1 && event.altKey) {
moving = true;
$x= event.pageX;
$y= event.pageY;
Затем при движении мыши добавьте разницу к текущим координатам:
$("body").mousemove(function(event){
if(moving) {
eventX += event.pageX - $x;
eventY += event.pageY - $y;
$x=event.pageX;
$y=event.pageY;
Вот и вся магия.
И уберите альт из условия окончания вращения:
$('body').mouseup(function(event){
if(event.which == 1) {
moving = false;
В идеале надо еще добавить отмену выделения мышкой, а то глючит из-за нее вращение:
#cube {
-webkit-user-select: none; /* Chrome all / Safari all */
-moz-user-select: none; /* Firefox all */
-ms-user-select: none; /* IE 10+ */
user-select: none;
}
Результат: https://jsfiddle.net/Ljcarqjd/1/
Виртуальный выделенный сервер (VDS) становится отличным выбором
ЗдравствуйтеВозникла необходимость реализовать изменение ссылки при вставке данных из окна Пример:
Вопрос в строке clone[key] = user[key]По идее user[key] содержит только значение(Вася и 30) свойств name и age, а в переменной key хранится имя свойства? Но в результате...
Добрый день! Есть директива, которая оборачивает input, добавляет к input некий атрибут и затем компилирует этот элемент