У меня есть div с большим фоновым изображением. Я могу панорамировать и масштабировать это изображение, используя background-position: {x}% {y}%
(0-100) и background-size:{z}%
(100-200). Помимо этого div, я хочу расположить несколько маркеров. Как я могу рассчитать положение этих маркеров при изменении положения фонового изображения?
Я использую Svelte и у меня есть Repl здесь https://svelte.dev/repl/ec926f6014a447b18a9f599b81e0f8cd?version=3.12.1
const pulsePos = (d,x,y,z) => {
/// x,y,z == background image positions (%)
/// d == object with marker position (%)
const xpos = d.x * z;
const ypos = d.y * z;
return {x:xpos, y:ypos}
};
Маркеры выглядят следующим образом.
<div
class="pulse"
style={`
transform: translate(${pulsePos(position,x,y,z).x}%, ${pulsePos(position,x,y,z).y}%);
`} />
Фоновое изображение
<div
style="background-image:url({url}); background-position: {x}% {y}%;
background-size:{z}%; transition: all {duration}s linear;"
class="imageHolder"/>
Если я умножу положение маркера на значение размера фона, я получу маркер, который останется на месте при «масштабировании». Но я не могу понять, как заставить маркер следовать фоновому изображению при изменении положения фона. Я потерян!