๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“˜ DIARY/Codesquad Masters

[220617] ์ฝ”๋“œ์Šค์ฟผ๋“œ ๋งˆ์Šคํ„ฐ์ฆˆ ์ผ์ผ ํšŒ๊ณ 

# ์ž ์ž ์ž ....์ž ์„ ์ž๊ณ  ์‹ถ๋‹ค....

์˜ค๋Š˜ ํ•˜๋ฃจ์ข…์ผ ํ•œ ์ƒ๊ฐ์ด๋‹ค.

์–ด์ œ PR ์ œ์ถœ์„ ์œ„ํ•ด ๋„๋‹ˆ์™€ ์ƒˆ๋ฒฝ๊นŒ์ง€ ์ฝ”๋”ฉ์„ ํ–ˆ๋‹ค.

๋Šฆ๊ฒŒ ์ž˜๊ฑฐ๋ผ๊ณ ๋Š” ์˜ˆ์ƒํ•˜๊ธด ํ–ˆ์ง€๋งŒ 5์‹œ๊ฐ€ ๋„˜์–ด์„œ ์ž‘์—…์ด ์–ผ์ถ” ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋๊ณ  ์ผ์ผํšŒ๊ณ ๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜๋‹ˆ 6์‹œ๊ฐ€ ๋„˜์–ด์„œ์•ผ ์ž˜ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋„๋‹ˆ๋„ ๋‚˜๋„ ๋‘˜๋‹ค ์›”์š”์ผ๋ถ€ํ„ฐ ์ด์–ด์ ธ์˜จ ํ‰๊ท  ์ƒˆ๋ฒฝ 4 ~ 5์‹œ ์ทจ์นจ์œผ๋กœ ์ธํ•œ ํ”ผ๋กœ ๋ˆ„์ ์œผ๋กœ ๋ฐฑ์—”๋“œ์˜ ์ƒˆ๋ฏธ์—๊ฒŒ ์–‘ํ•ด๋ฅผ ๊ตฌํ•˜๊ณ  ์˜ค์ „ 11์‹œ๊นŒ์ง€, ํ‰์†Œ๋ณด๋‹ค 1์‹œ๊ฐ„ ๋” ์ž๊ณ  ์™”๋Š”๋ฐ๋„ ์ž ์„ ์ž” ๊ฒƒ ๊ฐ™์ง€๊ฐ€ ์•Š๊ณ  ์ง„์งœ ๊ทธ๋ƒฅ ๋„ˆ๋ฌด ์กธ๋ ธ๋‹ค.

๊ทธ๋ž˜๋„ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด์„œ ์กธ์ง€๋Š” ์•Š์•„ ๋‹คํ–‰์ด์—ˆ๋‹ค.

๋‚ด์ผ์€ ๋“œ๋””์–ด ๊ธˆ์š”์ผ! ์ฝ”์ฟผ ๊ฐ•๋‚จ ์„ผํ„ฐ์— ๋‚˜๊ฐ€๋Š” ๋‚ ์ธ๋ฐ ๋‚ด์ผ์€ ์ข€ ์ผ์ฐ ์ง‘์— ๋“ค์–ด์˜ฌ๊นŒ ํ•œ๋‹ค.

๋„ˆ์–ด๋ฌด ํ”ผ๊ณคํ•ด~~~

 

# ์˜ค๋Š˜ ํ•œ ์ผ์€....

์–ด์ œ ์ž‘์—…ํ•˜๋˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งˆ์ € ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋Š” ๋™์•ˆ ์˜ค๋Š˜๋„ ํ•˜๋ฃจ์ข…์ผ Styled Components์™€ ์‹ธ์šด๊ฑฐ ๊ฐ™๋‹ค.

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋‚ด๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ์Šคํƒ€์ผ์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ทธ๋Ÿฌ๋ฉด์„œ ๋™์‹œ์— ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๋ณด๋‹ˆ ๋‹จ์ˆœํžˆ ์Šคํƒ€์ผ์„ ๋งŒ๋“œ๋Š”๋ฐ๋„ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.

๊ทธ๋ž˜๋„ ๋‹ค ๋งŒ๋“ค๊ณ  ๋‚˜๋‹ˆ ๋ฟŒ๋“ฏํ•˜์ง€๋งŒ....

์ง„๋„๊ฐ€ ๋„ˆ๋ฌด ์•ˆ๋‚˜๊ฐ€๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€ ์‹ถ์–ด ์‚ด์ง ๊ฑฑ์ •์ด ๋œ๋‹ค.

 

# ์˜ค๋Š˜ ์•Œ๊ฒŒ ๋œ CSS ์ง€์‹

1. disabled ๋˜์–ด ์žˆ์–ด๋„ active ๋  ์ˆ˜ ์žˆ๋‹ค!

 

:active {
    background: ${({ theme }) => theme.COLOR.primary.initial};
    border: 4px solid ${({ theme }) => theme.COLOR.primary.focus};
}

๋‹น์—ฐํžˆ disabled ๋‹ˆ๊นŒ hover๋„ active๋„ ์•ˆ๋จน๊ฒ ์ง€ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์›ฌ๊ฑธ...๋‹ค ๋จนํ˜”๋‹ค....

์™œ์ด๋Ÿฐ๊ฐ€ ๋„๋‹ˆ์™€ ํ•จ๊ป˜ ์•Œ์•„๋ณด๋‹ˆ...ใ… 

:active doesn't exclude :disabled elements.

์•„๋ž˜์™€ ๊ฐ™์ด enabled ์ผ๋•Œ๋งŒ ์ ์šฉ๋˜๋„๋ก ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค!

:enabled:active {
    background: ${({ theme }) => theme.COLOR.primary.initial};
    border: 4px solid ${({ theme }) => theme.COLOR.primary.focus};
}

2. Styled Components์—์„œ ํ˜•์ œ ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•œ margin ๋„ฃ๊ธฐ!

๋‘๊ฐœ์˜ Input ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์„ ๋„ฃ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ฒ˜์Œ์—๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ•ด์™”๋˜ ๊ฒƒ์ฒ˜๋Ÿผ div๋กœ ๊ฐ์‹ธ๊ณ  height๋ฅผ ๋‘ input์œ„ height * 2 + ์—ฌ๋ฐฑํฌ๊ธฐ๋กœ ๊ณ ์ •ํ•˜๊ณ  space between์„ ๋„ฃ์—ˆ์—ˆ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ„๊ฒฉ์„ ๋ฒŒ๋ ธ๋Š”๋ฐ ๋‹จ์ˆœํžˆ ์ € input ๋‘๊ฐœ์— ์—ฌ๋ฐฑ์„ ์ค„๋•Œ๋Š” ๊ดœ์ฐฎ์•˜๋Š”๋ฐ ๋ชจ๋“  ์—ฌ๋ฐฑ์„ ๋‹ค div ๊ฐ์Œˆ + Flex ํ•ด๋ฒ„๋ฆฌ๋‹ˆ ํƒœ๊ทธ์˜ Depth๊ฐ€ ๋„ˆ๋ฌด ๊นŠ์–ด์ ธ๋ฒ„๋ ธ๋‹ค.

๊ทธ์ œ์„œ์•ผ ์•„ ์ด๊ฑฐ ์—๋ฐ”๊ตฌ๋‚˜ ์‹ถ์–ด์ ธ์„œ ๋„๋‹ˆ์—๊ฒŒ SOS๋ฅผ ํ–ˆ๋”๋‹ˆ ๋„๋‹ˆ๊ฐ€ ํ˜•์ œ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์„ ์•Œ๋ ค์คฌ๋‹ค!

const StyledLoginInput = styled(Styled_textInput)`
  & + & {
    margin-top: 16px;
  }
`;

์ €๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์•„๋ž˜์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ input ์œ„์—๋งŒ 16์˜ margin์ด ์ ์šฉ๋œ๋‹ค!

const Styled_buttonWrapper = styled.div`
  display: flex;
  flex-direction: column;
  align-items: center;
  button + button {
    margin-top: 16px;
  }
`;

์ดํ›„์— ๋‘ ๋ฒ„ํŠผ ์‚ฌ์ด๋ฅผ ๋„์šธ ๋•Œ๋„ ์ ์šฉํ•ด๋ดค๋‹ค!

 

๋„๋‹ˆ์งฑ!

  ( โ—œโ—ก‾ ) b
๏ผฟ(_ใค/๏ฟฃ๏ฟฃ/๏ผฟ
ใ€€  ๏ผผ/๏ผฟ๏ผฟ/

# PR ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•˜๋‹ค!

์ฝ”๋“œ์Šค์ฟผ๋“œ์˜ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ๋ทฐ์–ด๋กœ ๋ฐฐ์ • ๋ฐ›์€ ๋ถ„์€ Goody์˜€๋‹ค.

ํ•œ๋ฒˆ๋„ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•„๋ณธ์ ์ด ์—†์–ด์„œ ์–ด๋–ค ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์„์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ

์ง€๋‚œ ์›”ํ™”์ˆ˜๋™์•ˆ ๋„๋‹ˆ์™€ ํ•จ๊ป˜ ํ–ˆ๋˜ ๊ณ ๋ฏผ์— ๋Œ€ํ•ด ๋ชจ๋‘ ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ๋‹ต๋ณ€์„ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ–ˆ๋‹ค!

๋‚˜๋„ ์•ž์œผ๋กœ ๋‚จ์€ ๋‹ค์„ฏ ๋ฒˆ์˜ PR์— ์ข€ ๋” ์ •์„ฑ์„ ๋‹คํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค!