J'ai donc un conteneur que je tiens à l'échelle en haut et en bas (zoom in et out), mais aussi d'avoir son agrandi ou rétréci forme à prendre de la place plutôt que de simplement se chevauchent d'autres choses.
Mise à jour
Il y a une image avec laquelle il y a absolute
divs qui sont placés dans les coordonnées, ils doivent garder leur position relative lors de la taille en haut et en bas (c'est pourquoi je suis à l'aide de l'échelle).
var b = document.getElementById("outer");
var scale = 1;
function increase() {
scale += 0.1
b.style.transform = `scale(${scale})`;
}
function decrease() {
scale -= 0.1
b.style.transform = `scale(${scale})`;
}
#outer {
overflow-x: auto position: relative;
transform-origin: left top;
}
.pointer {
width: 20px;
height: 20px;
background-color: orange;
position: absolute;
}
#a1 {
top: 50px;
left: 150px;
}
#a2 {
top: 150px;
left: 50px;
}
#a3 {
top: 250px;
left: 550px;
}
<div>
<button onclick="increase()">Increase</button>
<button onclick="decrease()">Decrease</button>
</div>
<div id=outer>
<img src="http://via.placeholder.com/600x350" />
<div id="a1" class='pointer'>
</div>
<div id="a2" class='pointer'>
</div>
<div id="a3" class='pointer'>
</div>
</div>
<div>
please don't cover me
</div>
Serait plutôt de ne pas avoir de bibliothèques tierces (à côté de jQuery) mais vous pouvez envisager.