Estoy construyendo un carrusel con un límite de deslizamiento superior a la izquierda y a la derecha de 45 px en cada elemento que tiene un ancho de 300 px. Me pregunto cómo convertir 45 a 1 índice y 345 a 2 índice . Tengo un total de 3 elementos para el carrusel.
Tengo la siguiente fórmula para convertirla en 2 índices, pero no en el primer índice
Si la posición actual está en 100 px, que es mayor que 45, aún debería dar como resultado 1 índice
(345 / 345 * 2) resultado de 2
(45 / 345 * 2) un resultado de 0.2608695652173913
Estoy tratando de hacer esa línea
let move = current_translate - previous_translate_item; if (move < -345) current_index += 1; if (move < -40) current_index += 1; if (move > 40) current_index -= 1; if (move > 345) current_index -= 1;Intenta usar este:
let val_converter = val => -Math.sign(val)*Math.floor((Math.abs(val)-40)/300 +1); console.log(val_converter(-645)); // 3 console.log(val_converter(-644)); // 2 console.log(val_converter(-345)); // 2 console.log(val_converter(-344)); // 1 console.log(val_converter(- 40)); // 1 console.log(val_converter(- 39)); // 0 console.log(val_converter( 0)); // 0 console.log(val_converter( 39)); // 0 console.log(val_converter( 40)); // -1 console.log(val_converter( 344)); // -1 console.log(val_converter( 345)); // -2 console.log(val_converter( 644)); // -2 console.log(val_converter( 645)); // -3En su código fuente específico, sería algo como esto:
let val_converter = val => -Math.sign(val)*Math.floor((Math.abs(val)-40)/300+1); let move = current_translate - previous_translate_item; current_index += val_converter(move);