如何获取进度条的 div 元素的点击位置

How to get clicked position of div element for progressbar

我的应用程序中有一个 HTML5 视频面板。我设法制作了一个运行良好的进度条。但我也希望能够通过单击进度条上的任意位置来更改视频的 currentTime

如何使用 React 获取当前位置的比率?我在 google 上搜索了进度条组件,但它们似乎 none 给出了 value 的点击位置,但只是显示。

或者简单地说,当用户点击进度条的不同位置时,我想change/get进度条的值到那个位置。

更新:

我已经更新了演示,点击多次时进度条似乎变疯了,而且似乎也没有靠近点击的位置。

演示https://stackblitz.com/edit/react-ts-zudlbe?file=index.tsx

这是我测试的整个组件。 似乎有效

const ProgressBar = ({ duration, progress }: ProgressProps) => {
  return (
    <div
      onClick={(event: React.MouseEvent<HTMLDivElement>) => {
        // duration is the video duration. For example 152.
        // How can i catch the % (ratio) of clicked position of this progrssbar?
        // then I will send this % (lets say 5) to the seek function like:
        const x = (event.clientX * duration) / event.currentTarget.offsetWidth; // how to get sec?
        callback(x);
      }}
      style={{
        backgroundColor: "#ddd",
        borderRadius: 3,
        flex: 1,
        height: 6,
        overflow: "hidden",
        position: "relative"
      }}
    >
      <Progress progress={progress} />
    </div>
  );
};