|
@@ -37,39 +37,40 @@ const Rank = () => {
|
|
|
setCurrentUser(res.data.data.find((item: RankItem) => item.id === res.data.data.length)!.id);
|
|
|
});
|
|
|
// 一开始就滚到当前用户
|
|
|
- const container = document.querySelector(".rank-item-active");
|
|
|
- if (container) {
|
|
|
- container.scrollIntoView({ behavior: "smooth", inline: "start" });
|
|
|
- }
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ console.log(document.querySelector(".rank-item-active"));
|
|
|
+ const container = document.querySelector(".rank-item-active");
|
|
|
+ if (container) {
|
|
|
+ console.log(container);
|
|
|
+ container.scrollIntoView({ behavior: "smooth", inline: "end", block: "nearest" });
|
|
|
+ }
|
|
|
+ }, 200);
|
|
|
+
|
|
|
+ containerRef.current = document.querySelector(".container")!;
|
|
|
}, []);
|
|
|
|
|
|
// 滚轮让x轴滚动
|
|
|
const handleWheel = (event: React.WheelEvent<HTMLDivElement>) => {
|
|
|
if (containerRef.current) {
|
|
|
- containerRef.current.scrollTo({
|
|
|
- left: containerRef.current.scrollLeft + event.deltaY,
|
|
|
- behavior: "smooth",
|
|
|
- });
|
|
|
+ containerRef.current.scrollLeft = containerRef.current.scrollLeft + event.deltaY;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 移动端触摸滚动
|
|
|
- let startX: number;
|
|
|
+ const [startX, setStartX] = useState<number>(0);
|
|
|
|
|
|
const touchStart = (event: React.TouchEvent<HTMLDivElement>) => {
|
|
|
if (containerRef.current) {
|
|
|
- startX = event.touches[0].clientX; // 记录触摸开始的X坐标
|
|
|
+ setStartX(event.touches[0].clientX); // 记录触摸开始的X坐标
|
|
|
}
|
|
|
};
|
|
|
|
|
|
const touchMove = (event: React.TouchEvent<HTMLDivElement>) => {
|
|
|
if (containerRef.current) {
|
|
|
const moveX = event.touches[0].clientX - startX;
|
|
|
- containerRef.current.scrollTo({
|
|
|
- left: containerRef.current.scrollLeft - moveX,
|
|
|
- behavior: "smooth",
|
|
|
- });
|
|
|
- startX = event.touches[0].clientX;
|
|
|
+ containerRef.current.scrollLeft = containerRef.current.scrollLeft - moveX;
|
|
|
+ setStartX(event.touches[0].clientX);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -80,7 +81,7 @@ const Rank = () => {
|
|
|
if (containerRef.current) {
|
|
|
const target = containerRef.current.querySelector(".rank-item-active");
|
|
|
if (target) {
|
|
|
- target.scrollIntoView({ behavior: "smooth", inline: "end" });
|
|
|
+ target.scrollIntoView({ behavior: "smooth", inline: "end", block: "nearest" });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -92,7 +93,7 @@ const Rank = () => {
|
|
|
if (containerRef.current) {
|
|
|
const target = containerRef.current.querySelector(".rank-item-active");
|
|
|
if (target) {
|
|
|
- target.scrollIntoView({ behavior: "smooth", inline: "start" });
|
|
|
+ target.scrollIntoView({ behavior: "smooth", inline: "start", block: "nearest" });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -103,7 +104,7 @@ const Rank = () => {
|
|
|
<img className="title" src={require("../../assets/img/rank_title.png")} alt="rank_title" />
|
|
|
<div className="content">
|
|
|
<img className="left" onClick={handleLeft} src={require("../../assets/img/rank_left.png")} alt="rank_left" />
|
|
|
- <div className="container" onWheel={handleWheel} onTouchStart={touchStart} onTouchMove={touchMove} >
|
|
|
+ <div className="container" onWheel={handleWheel}>
|
|
|
<div className="container-item">
|
|
|
{rankList.map((item, index) => (
|
|
|
<div className={`rank-item ${item.id === currentUser ? "rank-item-active" : ""}`} key={index} >
|