CSS Transform-Origin + Scale вызывает смещение при масштабировании до точки курсораHtml

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 CSS Transform-Origin + Scale вызывает смещение при масштабировании до точки курсора

Сообщение Anonymous »

Я пытаюсь реализовать функцию увеличения/уменьшения масштаба для обычных элементов div (не холста), используя свойства CSS преобразования происхождения и масштабирования. Все работает как положено, за исключением того, что после изменения координат курсора и последующего изменения размера происходит некоторое смещение. После этого увеличение и уменьшение масштаба работает нормально. Проблема повторяется после перемещения курсора. Чем больше уровень масштабирования, тем больше смещение. У меня возникли трудности с определением шаблона и корректировкой значений, которые я передаю в Transform-origin.
https://stackblitz.com/edit/web-platfor ... ile=script. js

Код: Выделить всё

const container = document.querySelector('.container');
const map = document.querySelector('.map');

const scaleStep = 0.2;
let scale = 1;

container.addEventListener('wheel', (event) => {
event.preventDefault();

if (!event.ctrlKey) {
return;
}

event.deltaY < 0 ? (scale += scaleStep) : (scale -= scaleStep);

const originX = container.scrollLeft + event.clientX;
const originY = container.scrollTop + event.clientY;

map.style.transformOrigin = `${originX}px ${originY}px`;
map.style.transform = `scale(${scale})`;
});

Код: Выделить всё

body * {
box-sizing: border-box;
}

.container {
width: 90vw;
height: 90vh;
border: 2px solid blue;
padding: 10px;
}

.map {
width: 100%;
height: 100%;
border: 2px solid aqua;
}

#node-1 {
position: absolute;
left: 50px;
top: 50px;
}

#node-2 {
position: absolute;
left: 150px;
top: 150px;
}

#node-3 {
position: absolute;
left: 250px;
top: 250px;
}

Код: Выделить всё



node-1
node-2
node-3





Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора.



Моя цель — избавиться от этого «прыжка» курсора. п>

Подробнее здесь: https://stackoverflow.com/questions/772 ... rsor-point
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • CSS Transform-Origin + Scale вызывает смещение при масштабировании до точки курсора
    Anonymous » » в форуме Html
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • CSS Transform-Origin + Scale вызывает смещение при масштабировании до точки курсора
    Anonymous » » в форуме CSS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • CSS Transform-Origin + Scale вызывает смещение при масштабировании до точки курсора
    Anonymous » » в форуме CSS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Safari не учитывает CSS-transform-origin, «transform-box: fill-box» не помогает
    Anonymous » » в форуме CSS
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous
  • Анимация SVG Scale Scale медленная на iOS
    Anonymous » » в форуме CSS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Html»