将 45 转换为 1,将 345 转换为 2

Convert 45 to 1 and 345 to 2

我正在构建一个旋转木马,其左右滑动限制都超过 45px 每个项目的宽度为 300px 我想知道如何将 45 转换为1 指数和 345 比 2 指数。我总共有3个轮播项目。

我有以下公式可以将其转换为 2 个索引,但不是第一个索引

如果当前位置在大于 45 的 100px 上,它仍然应该得到 1 index

(345 / 345 * 2) 2

的结果

(45 / 345 * 2) 结果为 0.2608695652173913

我正在尝试制作那一行

  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;

Carousel for mobile screens

试试这个:

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));   // -3

在你的具体源代码中,它会是这样的:

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);