๊ถ๊ธํ๋ ๊ฒ :
์ํ/์๋งค/๊ทน์ฅ ๊ฐ ๋ฒํผ์ ์์๋ฅผ n์ด๋ผ๊ณ ํ ๋,
hover ์ ๋ํ๋๋ ์๋์ชฝ hidden menu ๋ฆฌ์คํธ๋ฅผ
margin-right: calc(50%-n); ์ด๋ฐ ์์ผ๋ก ๊ณ์ฐํด์ ๊ฐ ๋ฒํผ๋ง๋ค ์์น๋ฅผ ๋ค๋ฅด๊ฒ ํ๊ณ ์ถ์๋ค.
์์ง ์์ ์์ ์์ html, css๋ง ์ฌ์ฉ์ค์ด๋ผ
nth-child(๊ท์ฐฎ์)์ด๋ JS ์ด์ธ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํด์ก๋ค!
chatGPTํํ ์ฐ์ ๋ฌผ์ด๋ด -> ๊ฐ์ฌ๋๊ป๋ ์ฌ์ญ์ด๋ด
๋ฐฉ๋ฒ 1: nth-child์ calc() ์กฐํฉ
CSS์ nth-child()๋ฅผ ํ์ฉํ์ฌ ํน์ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํ ์ ์๋ค.
.hidden_menu:nth-child(1) .menulist {
margin-right: calc(50% - 10px); /* ์ฒซ ๋ฒ์งธ hidden_menu */
}
.hidden_menu:nth-child(2) .menulist {
margin-right: calc(50% - 20px); /* ๋ ๋ฒ์งธ hidden_menu */
}
.hidden_menu:nth-child(3) .menulist {
margin-right: calc(50% - 30px); /* ์ธ ๋ฒ์งธ hidden_menu */
}
๋ฐฉ๋ฒ 2: JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ๊ณ์ฐ
JavaScript๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ hidden_menu์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก margin-right ๊ฐ์ ๊ณ์ฐํ๊ณ ์ ์ฉํ ์ ์๋ค.
<script>
document.querySelectorAll('.hidden_menu').forEach((menu, index) => {
const menulist = menu.querySelector('.menulist');
if (menulist) {
// index์ ๋ฐ๋ผ margin-right ๊ณ์ฐ
const dynamicMargin = `calc(50% - ${10 * (index + 1)}px)`;
menulist.style.marginRight = dynamicMargin;
}
});
</script>
๋ฐฉ๋ฒ 3: SCSS(SASS) ์ฌ์ฉ
CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต ์์ ์ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
.hidden_menu {
@for $i from 1 through 5 {
&:nth-child(#{$i}) .menulist {
margin-right: calc(50% - #{$i * 10}px);
}
}
}
SCSS ๋จ์ : npm ์ค์น, ์ปดํ์ผ ํ์
SCSS๋ฅผ ๋ค์ด๋ณด๊ธด ํ๋๋ฐ, ํ๋ฒ๋ ์ฌ์ฉํด๋ณธ ์ ์ด ์์ด์ ๊ฐ์ฌ๋๊ป ๋ฐ๋ก ์ฌ์ญค๋ณด์๋ค
๊ฐ์ฌ๋ ์ค๋ช =
์ ๋ฌธ ํผ๋ธ๋ฆฌ์ ๋ค์ด ์ฃผ๋ก ์ฌ์ฉํ๋๋ฐ, ์ด๊ฒ๊น์ง๋ ์์ ์์ ๋ค๋ฃจ์ง ์์ ๊ฑฐ๋ค~
ํ์ ์์ ๊ฐ๋ ์ฌ์ฉํ๋ค.
๋ฒ๊ฑฐ๋ก์์ ์์ ์ฌ์ฉํ์ง ์๊ธฐ๋ ํ๋ค
์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํตํด์ js์ฒ๋ผ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ์ด๋ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ณต๋ฌธ ์์ฑ์ด ๊ฐ๋ฅํ๋ค
๋๋์ :
ํ์ฌ ์ํฉ์์๋ SCSS๋ฅผ ๊น๊ฒ ๊ณต๋ถํ์ง๋ ์์๋ ๋ ๊ฒ ๊ฐ๋ค!
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ฉด์ React, CSS๋ก ์ถฉ๋ถํ๊ธฐ ๋๋ฌธ์ ๋์ค์ ํ์ํ๋ค๋ฉด ๋ฐ๋ก ๊ณต๋ถํ ๋ฏ
์์ผ๋ก ๋ฐฐ์ธ ๋ฐฑ์๋๊ฐ ๋ฌด์ญ๋ค ใ ใ กใ