sur quel élément agir pour différencier mes divs à resizer
Bonjour
je vous sollicite car je n'arrive pas a trouver sur quel élément agir pour différencier mes divs a resizé
voila j'ai fait un petit script de travail avec 3 div que je voudrais resizée vers la droite mais quand je sélectionne la deuxième ou troisième div, c’a me resize la première
je pense a un problème de css et de position absolu/relative...
Merci de votre aide
le lien pour test : https://jsfiddle.net/arawn45/5y9uo08a/2/
voici mon script
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| <div class='resizable'>
<div class='resizers'>
<div class='resizer top-right'></div>
</div>
</div>
<br>
<div class='resizable'>
<div class='resizers'>
<div class='resizer top-right'></div>
</div>
</div>
<br>
<div class='resizable'>
<div class='resizers'>
<div class='resizer top-right'></div>
</div>
</div>
<style type="text/css">
body,
html {
background: black;
}
.resizable {
background: white;
width: 100px;
height: 100px;
position: relative;
top: 100px;
left: 100px;
}
.resizable .resizers{
width: 100%;
height: 100%;
border: 3px solid #4286f4;
box-sizing: border-box;
}
.resizable .resizers .resizer{
width: 5px;
height: 100%;
position: absolute;
}
.resizable .resizers .resizer.top-right {
right: -1px;
top: -1px;
cursor: ew-resize;
}
</style>
<script >
/*Make resizable div by Hung Nguyen*/
function makeResizableDiv(div) {
const element = document.querySelector(div);
const resizers = document.querySelectorAll(div + ' .resizer')
const minimum_size = 20;
let original_width = 0;
let original_height = 0;
let original_x = 0;
let original_y = 0;
let original_mouse_x = 0;
let original_mouse_y = 0;
for (let i = 0;i < resizers.length; i++) {
const currentResizer = resizers[i];
currentResizer.addEventListener('mousedown', function(e) {
e.preventDefault()
original_width = parseFloat(getComputedStyle(element, null).getPropertyValue('width').replace('px', ''));
//original_height = parseFloat(getComputedStyle(element, null).getPropertyValue('height').replace('px', ''));
original_x = element.getBoundingClientRect().left;
original_y = element.getBoundingClientRect().top;
original_mouse_x = e.pageX;
original_mouse_y = e.pageY;
window.addEventListener('mousemove', resize)
window.addEventListener('mouseup', stopResize)
})
function resize(e) {
if (currentResizer.classList.contains('bottom-right')) {
const width = original_width + (e.pageX - original_mouse_x);
const height = original_height + Math.round((e.pageY - original_mouse_y)/20)*20
if (width > minimum_size) {
element.style.width = width + 'px'
}
if (height > minimum_size) {
//element.style.height = height + 'px'
}
}
else if (currentResizer.classList.contains('bottom-left')) {
const height = original_height + (e.pageY - original_mouse_y)
const width = original_width - (e.pageX - original_mouse_x)
if (height > minimum_size) {
//element.style.height = height + 'px'
}
if (width > minimum_size) {
element.style.width = width + 'px'
element.style.left = original_x + (e.pageX - original_mouse_x) + 'px'
}
}
else if (currentResizer.classList.contains('top-right')) {
const width = original_width + Math.round((e.pageX - original_mouse_x)/100)*100
const height = original_height - (e.pageY - original_mouse_y)
if (width > minimum_size) {
element.style.width = width + 'px'
}
if (height > minimum_size) {
//element.style.height = height + 'px'
//element.style.top = original_y + (e.pageY - original_mouse_y) + 'px'
}
}
else {
const width = original_width - (e.pageX - original_mouse_x)
const height = original_height - (e.pageY - original_mouse_y)
if (width > minimum_size) {
element.style.width = width + 'px'
//element.style.left = original_x + (e.pageX - original_mouse_x) + 'px'
}
if (height > minimum_size) {
//element.style.height = height + 'px'
//element.style.top = original_y + (e.pageY - original_mouse_y) + 'px'
}
}
}
function stopResize() {
window.removeEventListener('mousemove', resize)
}
}
}
makeResizableDiv('.resizable')
</script> |