首页 > 解决方案 > 元件相对于另一个元件的非线性运动

问题描述

我正在相对于另一个元素移动一个元素。我们称它们为元素 A 和元素 B。

为了问题的简单性,我只保留了 X 轴。

var element_a_container_width = 200;
var element_b_container_width = 700;

// I get position of the mouse,
// it is this position of Element A
// is is: 0 to 200
var mouse_x = e.clientX;

// I calculate relative position (0 to 1),
// (so 0 - is start and 1 is end)
var percentage_x = element_a_container_width / mouse_x;

// I apply position to Element B,
// based on its coordinates (container width)
var element_b_position = percentage_x * element_b_container_width;

一切都很好。但。我需要以非线性方式将位置应用于元素 B,例如:

我可能遗漏了一些明显的东西,但是每次出现问题时,我都不知道该怎么做。

谢谢你的帮助!

标签: javascriptalgorithm

解决方案


这个怎么样

var percentage_x = (mouse_x - 50)/100;
var element_b_position = 0
if (mouse_x > 150) {
  element_b_position = element_b_container_width
}
if (mouse_x >= 50 && mouse_x <= 150 ) {
  element_b_position = percentage_x * element_b_container_width
}

推荐阅读