|
@@ -1,6 +1,7 @@
|
|
|
"use client";
|
|
|
import { GameItem, Rank, RankDetail, RankReward } from "@/api/activity";
|
|
|
import Vip from "@/components/Vip";
|
|
|
+import { HeaderImageMap } from "@/enums";
|
|
|
import clsx from "clsx";
|
|
|
import React from "react";
|
|
|
import styles from "./page.module.scss";
|
|
@@ -36,25 +37,26 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
|
|
|
const watchPosition = () => {
|
|
|
let targetId = "middleContainer";
|
|
|
+ const mainBox = document.querySelector("#mainBox");
|
|
|
+ const top = mainBox?.getBoundingClientRect()?.top || 60;
|
|
|
+ const stickyBox: any = document.querySelector("#stickyBox");
|
|
|
+ const stickyRect = stickyBox?.getBoundingClientRect();
|
|
|
hrefCfg.forEach((item) => {
|
|
|
const dom = document.querySelector(`#${item.id}`);
|
|
|
if (dom) {
|
|
|
const rect = dom.getBoundingClientRect();
|
|
|
- if (rect.top < item.spaceTop) {
|
|
|
+ if (rect.top < top + item.spaceTop + stickyRect?.height || 0) {
|
|
|
targetId = item.id;
|
|
|
}
|
|
|
}
|
|
|
- const stickyBox: any = document.querySelector("#stickyBox");
|
|
|
- if (stickyBox) {
|
|
|
- const stickyRect = stickyBox.getBoundingClientRect();
|
|
|
- if (stickyRect.top < 60) {
|
|
|
- stickyBox.style.background = "rgba(0,0,0,.7)";
|
|
|
- } else {
|
|
|
- stickyBox.style.background = "rgba(255,255,255,0)";
|
|
|
- }
|
|
|
- }
|
|
|
});
|
|
|
- if (actIdRef.current !== targetId) {
|
|
|
+
|
|
|
+ if (stickyBox) {
|
|
|
+ if (stickyRect.top <= top) {
|
|
|
+ stickyBox.style.background = "#272629";
|
|
|
+ } else {
|
|
|
+ stickyBox.style.background = "rgba(255,255,255,0)";
|
|
|
+ }
|
|
|
}
|
|
|
setActId(targetId);
|
|
|
requestAnimationFrame(watchPosition);
|
|
@@ -79,17 +81,17 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
{
|
|
|
text: "Classificaçães",
|
|
|
id: "middleContainer",
|
|
|
- spaceTop: 60,
|
|
|
+ spaceTop: 5,
|
|
|
},
|
|
|
{
|
|
|
text: `Jogos(${gamesInfo?.count})`,
|
|
|
id: "jackpot",
|
|
|
- spaceTop: 100,
|
|
|
+ spaceTop: 40,
|
|
|
},
|
|
|
{
|
|
|
text: "Regras",
|
|
|
id: "rankFooter",
|
|
|
- spaceTop: 60,
|
|
|
+ spaceTop: 5,
|
|
|
},
|
|
|
];
|
|
|
}, [gamesInfo]);
|
|
@@ -128,8 +130,6 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
<img src="/rank/bg2.webp" alt="" />
|
|
|
<div className={clsx(styles.persons, "px-[.2rem]")}>
|
|
|
{headerData.map((item: Rank, idx) => {
|
|
|
- // const curVip = vipImagesMap.get(item?.vipLevel || 1);
|
|
|
- // console.log(123123, item);
|
|
|
if (!item) {
|
|
|
return <div key={idx} className={styles.personItem}></div>;
|
|
|
}
|
|
@@ -143,7 +143,7 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
alt=""
|
|
|
/>
|
|
|
<img
|
|
|
- src="https://img1.baidu.com/it/u=1699323843,2372946297&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=983"
|
|
|
+ src={HeaderImageMap.get(item.avatar)?.img}
|
|
|
alt=""
|
|
|
className={styles.userHeader}
|
|
|
/>
|
|
@@ -219,7 +219,7 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
</div>
|
|
|
<div className={clsx(styles.normalHeader, "mr-[.2rem]")}>
|
|
|
<img
|
|
|
- src="https://img1.baidu.com/it/u=1699323843,2372946297&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=983"
|
|
|
+ src={HeaderImageMap.get(item.avatar)?.img}
|
|
|
alt=""
|
|
|
className={styles.headerImage}
|
|
|
/>
|
|
@@ -253,7 +253,7 @@ const MiddleContainer: React.FC<Props> = ({ data, rankList = [], gamesInfo }) =>
|
|
|
</div>
|
|
|
<div className={clsx(styles.normalHeader, "mr-[.2rem]")}>
|
|
|
<img
|
|
|
- src="https://img1.baidu.com/it/u=1699323843,2372946297&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=983"
|
|
|
+ src={HeaderImageMap.get(data?.self_rank?.avatar)?.img}
|
|
|
alt=""
|
|
|
className={styles.headerImage}
|
|
|
/>
|