将 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;
试试这个:
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);
我正在构建一个旋转木马,其左右滑动限制都超过 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;
试试这个:
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);