ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ํฐ๋ ํ๋ฆฌ์จ ๋ณด๋ฉ ์ ๋ณ ๊ณผ์ ์์ Nav๋ฅผ ์ ์ํ๋ ์ค, ๋ ์ด์์ ๊ตฌ์ฑ ๋ชฉ์ ์ผ๋ก flex ๊ด๋ จ ์์ฑ๋ค์ ๊ณ์ ์ฌ์ฉํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
๋์์ธ์ ์ ์ฉํ๋ ๊ฒ์ ์์ด์ ๋ฌธ์ ๋ ์์ง๋ง ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์ค์ฌ ์คํ์ผ์ ์ ์ฉํ ์ ์๋์ง ๊ณ ๋ฏผํ๊ฒ ๋์๊ณ scss์์ variable์ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ ๊ณตํต ์คํ์ผ ์์ฑ์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ด styled-components์์ ์ฌ์ฉํ ๋ณ์ ๋ชจ์ ๊ฐ์ฒด์ธ theme์ ์ด์ฉํ์ฌ flex ๊ด๋ จ minin ํจ์๋ฅผ ์ฌ์ฉํด ๋ณด๊ธฐ๋ก ํ์๋ค.
Code
themeProvider๋ก ์ ์ญ ๋ณ์๋ก ์ฌ์ฉ๋๋ theme ๋ด๋ถ์ flex ์์ฑ์์ ์์ฃผ ์ฌ์ฉ๋๋ mixin ์์ฑ์ ํจ์ ํํ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ์๋ค.
const theme = {
flexMinin: (direction = 'row', justify = 'center', align = 'center') => `
display: flex;
flex-direction: ${direction};
justify-content: ${justify};
align-items: ${align};
`,
};
flex๋ฅผ ์ฌ์ฉํ ๋ ํํ ์ฌ์ฉํ๋ ์์ฑ๋ค์ ์ธ์๋ก ๋ฐ๊ณ ๊ธฐ๋ณธ์ผ๋ก ์์๊ฐ ์ค์ ์ ๋ ฌ์ด ๋๊ฒ๋ ๊ด๋ จ ๊ฐ๋ค์ ์ค๋ฒ๋ก๋ฉํ์ฌ ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ styled-component ๋ด์์ ํด๋น minin ํจ์๋ฅผ ์๋์ ๋ง๊ฒ ์ธ์๋ฅผ ๋ฃ์ด ํธ์ถํ์ฌ flex ์คํ์ผ์ ์ ์ฉํ์ฌ ์ฃผ์๋ค.
const LeftContainer = styled.div`
${({ theme }) => theme.flexMinin('row', 'space-between')}
`;
// ์ค๋ฒ๋ก๋ฉ์ผ๋ก ์ธํด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ flex box๋ฅผ ์ค์ ๊ฐ๋ฅ
const UserFigure = styled.figure`
${({ theme }) => theme.flexMinin()};
`;