์ด๋ฒ์๋ ์ ์ ํ๋กํ ํ๋ฉด์ ๋ง๋ค์๋ค. ์ฃผ์ ๋ชฉํ๋ ๊ฐ๋จํ๋ฉด์๋ ์ง๊ด์ ์ธ ์ ์ ์ ๋ณด ํ์, ๊ทธ๋ฆฌ๊ณ ์ถํ ํธ์ง ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ํ์ฅ ๊ฐ๋ฅ์ฑ์ ํ๋ณดํ๋ ๊ฒ์ด์๋ค.
๊ตฌํ ๋ฒ์๋ ๋ค์๊ณผ ๊ฐ๋ค:
ํ๋กํ ์นด๋ ๋ฐ ์์ด์ฝ ์์ญ ๊ตฌ์ฑ
๊ฑฐ๋ ์ ๋ณด ์์ฝ (ํ๊ธฐ, ์ฌ๊ฑฐ๋ ํฌ๋ง๋ฅ , ํ๊ท ์๋ต ์๊ฐ)
ํธ์ง ๋ฒํผ๊ณผ ํ์ด์ง ์ด๋ ์ฒ๋ฆฌ
๊ฐ๋จํ ๋ฉ๋ด ๊ตฌ์ฑ (ํ๋งค/๊ตฌ๋งค/์ฐ ๋ฆฌ์คํธ)
๊ตฌ์กฐ๋ ํฌ๊ฒ ๋ ๋ฉ์ด๋ฆฌ๋ก ๋๋ด๋ค.
์๋จ: ProfileContainer + ProfileIcon โ ์ ์ ์ด๋ฆ & ๋ฐฐ๊ฒฝ, ์ฌ์ง ์ ๋ก๋ ๊ธฐ๋ฅ ํฌํจ
ํ๋จ: TradeStatus โ ๊ฑฐ๋ ์ ๋ณด ํ์ / ๋์ ๊ฑฐ๋ ๋ฉ๋ด (ํ๋งค๋ด์ญ, ๊ตฌ๋งค๋ด์ญ, ์ฐํ๋ชฉ๋ก)
<ProfileContainer showLabel={false} />
<EditProfileButton />
<TradeStatus />
<Divider />
<TitleText>๋์ ๊ฑฐ๋</TitleText>
ProfileContainer ์์ ์ด๋ฏธ์ง ์
๋ก๋์ฉ input์ ์จ๊ธฐ๊ณ , label์ ํด๋ฆญํ๋ฉด ์
๋ก๋๊ฐ ๋๋๋ก ๊ตฌ์ฑํ๋ค.
์ถ๊ฐ๋ก ProfileIcon๋ ๋ณ๋๋ก ๊ตฌ์ฑํด์ ํ๋กํ ์ฌ์ง ์์ญ์ ๊พธ๋ฉฐ์คฌ๋ค.
const Input = styled.input display: none;
;
const Label = styled.label position: absolute; top: 3%; right: 2%; background: rgba(0, 0, 0, 0.5); color: white; padding: 1% 2%; border-radius: 0.1rem; cursor: pointer;
;
์ ์ ๊ฐ ์ง์ ํ๋กํ์ ์์ ํ ์ ์๋๋ก ํธ์ง ๋ฒํผ์ ๋ง๋ค๊ณ , ํด๋ฆญ ์ /editprofile๋ก ๋ผ์ฐํ
๋๋๋ก ํ๋ค.
EditProfileButton.tsx ์์์ useNavigate()๋ฅผ ์ฌ์ฉํด ๋ผ์ฐํ
์ฒ๋ฆฌ.
const handleEditClick = () => {
navigate("/editprofile")
}
๊ทธ๋ฆฌ๊ณ edit ์์ด์ฝ + ํ ์คํธ๋ฅผ ๊ฐ์ด ๋ฃ์ด ์ง๊ด์ ์ผ๋ก ๋ณด์ด๋๋ก ํ๋ค.
๊ฑฐ๋ ๊ด๋ จ ์ ๋ณด๋ TradeStatus ์ปดํฌ๋ํธ๋ก ๋ฌถ์๋ค.
๊ฑฐ๋ ๊ด๋ จ ์งํ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๊ฐ๊ฐ์ TextField, TextFieldWithMargin์ ์ ์ ํ ๋๋ ์ฌ์ฉํ๊ณ , ์ดํ ํ๋งค๋ด์ญ, ๊ตฌ๋งค๋ด์ญ, ์ฐํ๋ชฉ๋ก์ ์ด๋ฏธ์ง ๋ฉ๋ด๋ก ๋๋ UI๋ฅผ ๊ตฌ์ฑํ๋ค.
<MenuText top="63%">๊ตฌ๋งค๋ด์ญ</MenuText>
<MenuText top="69%">์ฐํ๋ชฉ๋ก</MenuText>
์คํ์ผ๋ง ํฌ์ธํธ๊ฐ ๋ง์ ํ๋ฉด์ด๋ผ ์ฒ์์๋ ์์น ์ก๋ ๊ฒ ํ๋ค์๋๋ฐ, position: absolute + transform ์กฐํฉ์ผ๋ก ํด๊ฒฐํ๋ค.
์ปดํฌ๋ํธ๋ค์ ๋ถ๋ฆฌํด์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์ ์ธก๋ฉด์์ ํจ์จ์ ์ธ ๊ตฌ์กฐ๋ก ์ก์ ๊ฒ ํนํ ๋ง์์ ๋ค์๋ค.
๋ค๋ง ์์ง ๋ฐ์ดํฐ๊ฐ ์ ์ ์ฆ, ๋ชฉ์ ์ด๋ผ, ๋ค์์๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์์ ์ํ ๊ด๋ฆฌ๋ ํจ๊ป ํด๋ณผ ๊ณํ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฒ์ ์์ ํ๋ฉด์ left: 50%์ transform: translateX(-50%) ์กฐํฉ์ด ์ ํญ์ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด ๋๋์ง ์๋ฆฌ๋ฅผ ์ ๋๋ก ์ดํดํ๊ฒ ๋๋ค.
left: 50%๋ ๋ถ๋ชจ ๊ธฐ์ค ์ค์๊น์ง ์ผ์ชฝ ๋ชจ์๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค ๋๊ณ , translate(-50%)๋ ์๊ธฐ ๋๋น์ ์ ๋ฐ๋งํผ ๋ค์ ์ผ์ชฝ์ผ๋ก ๋น๊ฒจ์ค๋ ๋ฐฉ์์ด๋ผ๋ ๊ฑธ ๊นจ๋ฌ์๋ค.
์ด์ ๋ ๋ฌด์์ ์ฐ๋ ๊ฒ ์๋๋ผ, ์ ๊ทธ๋ฐ์ง ์๊ณ ์ธ ์ ์๊ฒ ๋๋ค๋ ์ ์์ ์๋ฏธ ์๋ ๋ฐฐ์์ด์๋ค.