์ฝ๋๋ฒ ์ด์ค์ ์ ๋ฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด freeCodeCamp์ CSS ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ ์ํ๊ณ ์ถ์ต๋๋ค. FreeCodeCamp์๋ ๋ง์ ๊ธฐ์ฌ์๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ์ฌ๋์ด CSS๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ CSS๋ฅผ ์์ฑํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ถ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ฃผ์ ์ถ๊ฐ, ์ LESS ํ์ผ์ ์์ํ ๋ ๊ฐ๋ฐ์๊ฐ ์์ ์ค์ธ ๋ด์ฉ์ ์ ์ ์๋๋ก ์ฝ๋ ๋ธ๋ก๊ณผ ๊ด๋ จ๋ ์ ์น์ ์ ์์ํ ๋ ์ฃผ์์ ์ถ๊ฐํ๋ฉด ๊ฐ๋ ์ฑ์ ๋์์ด๋ฉ๋๋ค. ์๋์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ด๋ฌํ ์คํ์ผ์ ์ฃผ์์ ์ฝ๋๋ฒ ์ด์ค์ ๊ฑธ์ณ ์์ผ๋ฏ๋ก ์๋ก์ด ์คํ์ผ์ ์ ์ํ๋ ๋์ ๊ณ์ ์์ฑํ๊ณ ์ถ์ต๋๋ค)
์ 1-์ LESS ํ์ผ์ ์์ํ ๋ :
//
// Navigation
// --------------------
//
// Navigation - Mobile Styles
// ------------------------------
์์ฑ ๋ค์ ๊ณต๋ฐฑ์ ์ถ๊ฐํ๋ฉด ์ด๋ฌํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค. ์๋์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ 1-์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ
p {
color: #fff;
}
p {
color:#fff;
}
๋๋ฌธ์ ๋์ ์๋ฌธ์๋ฅผ ์ ํธํฉ๋๋ค. ์ด์ CSS ์ ๋ฐ์ ๊ฑธ์ณ ๊ธฐ์ฌ์๋ค์ด ๋ ๊ฐ์ง๋ฅผ ํผํฉํ๊ณ ์์ต๋๋ค. ์๋ฌธ์๋ ์ฐ๊ธฐ๊ฐ ๋น ๋ฅด๊ณ ์ฝ๊ธฐ ์ฝ์ต๋๋ค. CSS์ ์ผ๊ด๋ ๊ท์น์ด์๋ ๊ฒฝ์ฐ ๋ค์ ์ ๋ฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค. ๋ํ ๊ฐ๋ฅํ๋ฉด 16 ์ง์ ๊ฐ์ ์ค์ด์ญ์์ค. ์๋์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ 1-์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ
p {
color: #fff;
}
p {
color: #FFFFFF;
}
๊ฐ ๋ค์ ๊ณต๋ฐฑ์ ์ถ๊ฐํ๋ฉด ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค. ์๋์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ 1-์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ
p {
color: rgba(123, 123, 0, 0.1);
}
p {
color: rgba(123,123,0,0.1);
}
box-shadow์ ๊ฐ์ ์์ฑ์์ 0 ๊ฐ์ ์ค์ ํ๋ฉด ๋จ์ ์ถ๊ฐ๋ฅผ ํผํด์ผํฉ๋๋ค. ์๋ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ 1-์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ
p {
box-shadow: 1px 1px 0 rgb(0, 0, 0);
}
p {
box-shadow: 1px 1px 0px rgb(0, 0, 0);
}
@raisedadead ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
๊ฐ์ฌํฉ๋๋ค. ๋ณดํ์ด ์ผ์ง ์๋ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ญ๋๊น? ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ์ญ๋๊น?
@raisedadead @tomasvn ๋์ ๋ฐ๋ฅด๋ฉด CSS ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ๊ณ ์ํ๋ ๊ณผ์ ์ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ ๊ฒ์
๋๋ค. React, Yarn, Babel ๋ฐ ๊ธฐํ ๋ง์ ์คํ ์์ค ํ๋ก์ ํธ๋ Prettier
๋ฐ ๊ธฐํ ์ ์ฌํ ํ์ฅ์ CSS ์คํ์ผ ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋๋ ๋์ . ๊ธฐ์ฌ์์๊ฒ IDE / ์ฝ๋ ํธ์ง๊ธฐ์ Prettier
์ ์ค์นํ๋ผ๊ณ ์๋ ค์ผํฉ๋๋ค.
@raisedadead ์ด๊ฒ์ ๋ํ ์๊ฐ?
๊ฐ์ฌํฉ๋๋ค. ๋ณดํ์ด ์ผ์ง ์๋ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ญ๋๊น? ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ์ญ๋๊น?
์์๊ฒ ์ ์๋ํฉ๋๋ค;). CSS ์คํ์ผ ๊ท์น์ ์๋ฐํ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋๋ ๋์ . ๊ธฐ์ฌ์์๊ฒ IDE / ์ฝ๋ ํธ์ง๊ธฐ์ Prettier๋ฅผ ์ค์นํ๋ผ๊ณ ์๋ ค์ผํฉ๋๋ค.
๋ฌธ์ ์์ ์จ๋ ๊ฒ์ ๋๊ตฌ์๊ฒ๋ ๋์์ด๋์ง ์์์ต๋๋ค ... ๐ !
๋๋ ํฌ๋งคํฐ๋ฅผ ํผํ๊ณ ๋์ ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ์ ํธํฉ๋๋ค. ์๋ํ๋ ๋ฉ์ง๊ณ ์ฌ์ด ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง ํ์ค ์ฝ๋ ์์ฑ์ ์์ ์ ์ ๊ฑฐํฉ๋๋ค.
IMHO, ์ฐ๋ฆฌ๋ ํ์ต์ ์ค์ฌ์ผ๋ก ํ ์ปค๋ฎค๋ํฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฆฐํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฝ๋ ์คํ์ผ๋ก ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๊ฒ์ ์ฃผ์ ํด์๋ ์๋ฉ๋๋ค.
๋ํ Prettier๋ _Opinionated_ Code Formatter์ ๋๋ค.
๋์ ๋ฐ๋ฅด๋ฉด CSS ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ๊ณ ์ํ๋ ๊ณผ์ ์ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ์๋ชป๋ ์ฃผ์ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (ํต๊ณ๊ฐ ์์ผ๋ฉด ํ๋ ธ๋ค๋ ๊ฒ์ ์์ ๋กญ๊ฒ ์ฆ๋ช ํ์ญ์์ค).
Airbnb JS ์คํ์ผ ๊ฐ์ด๋, JS Standard ๋ฑ์ ํ์ธํ๋ฉด ํ์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ฐ๋ฏธ๊ฐ ์์ผ๋ฉฐ ์์ฒ ๊ฐ์ ํ์ฌ์ ๊ฐ๋ฐ์๊ฐ ๋งค์ผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@raisedadead ์ฐ๋ฆฌ๋ ๋ฌธ์ ์์ ์จ์ด ์์ง ์์ต๋๋ค ...! ์ฐ๋ฆฌ๋ linters๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง Prettier๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ํค ๋ฐ์ธ๋ฉ์ผ๋ก ๋์ผํ ์์ ์ ์ํ ํ ์ ์์ต๋๋ค. ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ์ฅ๊ธฐ์ ์ผ๋ก ์๋ํ๊ณ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ ์๋ชป๋ ์ฃผ์ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (ํต๊ณ๊ฐ ์์ผ๋ฉด ํ๋ ธ๋ค๋ ๊ฒ์ ์์ ๋กญ๊ฒ ์ฆ๋ช ํ์ญ์์ค).
Airbnb JS ์คํ์ผ ๊ฐ์ด๋, JS Standard ๋ฑ์ ํ์ธํ๋ฉด ํ์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ฐ๋ฏธ๊ฐ ์์ผ๋ฉฐ ๋งค์ผ ์์ฒ ๊ฐ์ ํ์ฌ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ๋น์ ๊ณผ ๊ฐ๋ ฅํ ๋์ํฉ๋๋ค! ๊ทธ๋ค์ JS ์คํ์ผ ๊ฐ์ด๋๋ ์ ๋ง ๋์์ด๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ฌธ์ ์์ ๋ฒ์ด๋์ง ์๊ณ ์๋ค ...! ์ฐ๋ฆฌ๋ linters๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง Prettier๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ํค ๋ฐ์ธ๋ฉ์ผ๋ก ๋์ผํ ์์ ์ ์ํ ํ ์ ์์ต๋๋ค. ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ์ฅ๊ธฐ์ ์ผ๋ก ์๋ํ๊ณ ์์ต๋๊น?
์๋ํ๋ฉด ์ฐ๋ฆฌ๋ ํ์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ต๋๊น? ๊ธฐ์ฌ์๋ ์ํ๋ ๋๊ตฌ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง ๊ฐ์ด๋๊ฐ ํ์ํ์ง ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
์ด์จ๋ , ๊ฐ์ด๋์ ๋ํ ๊ฑด์ค์ ์ธ ํผ๋๋ฐฑ์ ์ํด์ด ์ค๋ ๋๋ฅผ ์ ์งํ๊ฒ ์ต๋๋ค. ๋์ ์ฑํ ์์ ํญ์ ํ ๋ก ์ ํ ์ ์์ต๋๋ค.
@tomasvn RFC๋ ํฅ๋ฏธ๋ก์ ๋ณด์ด๋ฉฐ ํผ๋๋ฐฑ์ ๊ด์ฌ์ด ์์ผ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์๊ฐ์ ์ป์ ์์๋ ํ๋ฆฝ ๋ ์คํ์ผ ๊ฐ์ด๋์ ๋๊ตฌ๋ฅผ ์ฐพ์ ๋ณด๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
์๋ํ๋ฉด ์ฐ๋ฆฌ๋ ํ์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ต๋๊น? ๊ธฐ์ฌ์๋ ์ํ๋ ๋๊ตฌ๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง ๊ฐ์ด๋๊ฐ ํ์ํ์ง ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ๋น์ ๊ณผ ํจ๊ป ์์ต๋๋ค. ์ข์ต๋๋ค. ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ stylelint ๋ฅผ ๋ฆฐํฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
@raisedadead stylelint๋ ๊ด์ฐฎ์ ๋ณด์ ๋๋ค
@tomasvn ๋ฐฉ๊ธ ์๋ก์ด ์ปค๋ฆฌํ๋ผ๊ณผ ํ์ต ํ๋ซํผ์ ์ถ์ํ์ต๋๋ค. ์์ง๋์ด ์ผ์ ๋๊ณ ์ถ์ผ์ญ๋๊น?
์ฐ๋ฆฌ์ ๋ชจ๋ CSS์๋ ์ข์ ๋ฆฌํฉํฐ๋ง์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋ค๋ฟ๋ง ์๋๋ผ์ด๋ฅผ ํ๋ก์ ํธ์ ์ฆ์ ์ ์ฉํ๊ณ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ด์ ๋ถํฉํ๋์ง ํ์ธํ๋ ์ข์ ๊ธฐํ๊ฐ ๋ ๊ฒ์ ๋๋ค.
@QuincyLarson ๋ฌผ๋ก ์ ๋๋ค. freecodecamp๋ ๊ฝค ํฐ ์ฝ๋๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์๋ด์ด CSS๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
@tomasvn ๊ต์ฅ ํ ๊ฒ์ ๋๋ค!
freeCodeCamp์๋ ๊ทธ๋ค์ง ๋ง์ CSS๊ฐ ์์ต๋๋ค. freeCodeCamp์ CSS๋ ์ฃผ๋ก "main.less"์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Bootstrap 3.0์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ฒฐ๊ตญ Bootstrap 4.0์ผ๋ก ์ด๋ํ๊ฑฐ๋ Flexbox๋ฅผ ์ฌ์ฉํ๋๋ก CSS๋ฅผ ๋ค์ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น๋ถ๊ฐ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ React Bootstrap์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํ์ฌ Bootstrap 3.0์ ๊ณ ์ ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ main.less์์๋ ๊ธฐ์กด ์ฌ์ฉ์ ์ ์ CSS๋ฅผ ์ ๋ฆฌํ๊ณ ์ค๋ณต์ ์ค์ด๊ณ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@QuincyLarson ์ด ๊ฐ์ ธ ์๊ณ main.less๋ client / less / main.less์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ํ์ผ์ ๋๊น?
@tomasvn ์ํด
@tomasvn ์ด๊ฒ์ ๋์์ด ํ์ํ์ญ๋๊น? ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค
@tomasvn ์์ง์ด ์์ ์ ์์ํ ๊ธฐํ๊ฐ ์์์ต๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด @borisyordanov ์-์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํ ๊ทํ์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค.
@borisyordanov ์ง์ฐ ์ฃ์กํฉ๋๋ค. Windows์์ dev env๋ฅผ ์คํํ๋ ๋ฐ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ์์ํ ์ ์์ต๋๋ค. ๋ด ๋ฌผ๊ฑด์ ๊ณ ์น ๋ ๋ฆฌํฉํ ๋งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
@tomasvn ๋ด๊ฐ ๋น์ ์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋์ต๋๋ค. ์ฑํ ์์ ๋ง๋์ ์ด๊ฒ์ ๊ณํํ๊ฒ ์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๊ฐ์ด๋ ๋ฅผ ์ดํด ๋ณด๊ฑฐ๋ Gitter์์ ๋์์ ์์ฒญ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ์ ํ ํ์ํ ๊ฒฝ์ฐ์ด ์์ ์ ๋์ ๋๋ฆด ์ ์์ต๋๋ค.
@ Jgriebel1990 ๋๋
@ jgriebel1990 ์์ ๋กญ๊ฒ ๋งํ๋ฉด ๋ฉ๋๋ค.
@tomasvn @ Jgriebel1990 ๊ณผ @borisyordanov๊ฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ธฐํ๋ฅผ ์ป์ง ๋ชปํ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@QuincyLarson Windows์์ ์๋ํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ์ฌ์ ํ ์คํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ๊ฒฝ์ ์ค์ ํ ์์๋ ๊ฒฝ์ฐ ์ค๋ ๋๋ฅผ ๋ซ์ผ์ญ์์ค.
@tomasvn ๊ฑฑ์ ํ์ง ๋ง์ธ์-๋ก์ปฌ์์ ์คํ๋๋ ๋ฐ ํ์ด์ด ์์ต๋๊น?
@QuincyLarson ์ด์ด
@tomasvn ๋ก์ปฌ๋ก ์ค์ ํ ๋ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ ํ์ต๋๊น?
@tomasvn์ด ์ฝ์ด์ฃผ์ญ์์ค - https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-setup-freecodecamp-locally.md
@raisedadead https://github.com/freeCodeCamp/design-style-guide ์ ๋ฐ์ดํธ๋ก์ด ๋ฌธ์ ๊ฐ ํ์ํฉ๋๊น?
๋ก๋๋งต์ ๋ ๋ง์ด ์์ต๋๋ค. ๊ฒฐ๊ตญ UI ๊ตฌ์ฑ ์์์ ์ค์ฌ ๋ฆฌ์์ค๊ฐ ๋ ๊ฒ์ ๋๋ค.
CSS ํ
๋๋ฆฌ ์คํ์ผ
border-style ์์ฑ์ ํ์ ํ ํ
๋๋ฆฌ ์ข
๋ฅ๋ฅผ ์ง์ ํฉ๋๋ค.
๋ค์ ๊ฐ์ด ํ์ฉ๋ฉ๋๋ค.
dots-์ ์ ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
ํ์ -ํ์ ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
solid-์ค์ ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
double-์ด์ค ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
๊ทธ๋ฃจ๋ธ-3D ๊ทธ๋ฃจ๋ธ ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค. ํจ๊ณผ๋ ํ
๋๋ฆฌ ์์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
์ต๊ธฐ-3D ์ต๊ธฐ ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค. ํจ๊ณผ๋ ํ
๋๋ฆฌ ์์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
์ฝ์
-3D ์ฝ์
ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค. ํจ๊ณผ๋ ํ
๋๋ฆฌ ์์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
outset-3D outset ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค. ํจ๊ณผ๋ ํ
๋๋ฆฌ ์์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
none-ํ
๋๋ฆฌ๋ฅผ ์ ์ํ์ง ์์ต๋๋ค.
hidden-์จ๊ฒจ์ง ํ
๋๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค.
border-style ์์ฑ์ 1-4 ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค (์์ชฝ ํ
๋๋ฆฌ, ์ค๋ฅธ์ชฝ ํ
๋๋ฆฌ, ์๋์ชฝ ํ
๋๋ฆฌ ๋ฐ ์ผ์ชฝ ํ
๋๋ฆฌ).
์-
p.dotted {border-style: dotted;}
p.dashed {border-style: dashed;}
p.solid {border-style: solid;}
p.double {border-style: double;}
p.groove {border-style: groove;}
p.ridge {border-style: ridge;}
p.inset {border-style: inset;}
p.outset {border-style: outset;}
p.none {border-style: none;}
p.hidden {border-style: hidden;}
p.mix {border-style: dotted dashed solid double;}
์ผ! ์ด๊ฒ์ ๋ํ ์ง์ ์ ๋ฌด์์ ๋๊น? ๋์ ๋๋ฆด ์ ์์ต๋๋ค!
@ManasMahanand , ๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ CSS ๋ฆฐํฐ๋ฅผ ์ดํด๋ณด๊ณ ๋น๊ตํ์ฌ stylelint๋ณด๋ค ๋ ๋์ ๊ฒ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฆฐํฐ๋ฅผ ์ถ๊ฐํ๊ณ CSS ํ์ผ์ ๋ณ๊ฒฝํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฆฐํ
์ค๋ฅ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
@ahmadabdolsaheb ๋ ํฌ์ ์ถ๊ฐํ๋ค๋ ์๋ฏธ๊ฐ ๋ฌด์์ ๋๊น?
eslint๊ฐ ์ด๋ฏธ์๋ ๊ฒ์ฒ๋ผ linter๋ฅผ ์ข ์์ฑ์ผ๋ก ์ค์น ํ์๊ฒ ์ต๋๊น?
์๋๋ฉด github ์์ฒด์ ํ ์คํธ๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ง ์๋ ํ ๋ณํฉ์ ํ์ฉํ์ง ์์ต๋๊น?
์ข์, stylelint ์์ฒด๊ฐ ์ข์ ์ต์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ค์นํ๊ณ ์๋ค.
์คํ์ ์ํด OP์์ ์ ์ํ ๊ท์น์ ์ค์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ๊ท์น์ ์ ๊ฑฐํ๊ณ ํ๋ณด๋ฅผ ์ฝ๋ ๋ค. ๊ทธ๋ฐ ๋ค์ ๊ท์น์ ๋ ผ์ํ๊ณ ์ค์ ํ ์ ์์ต๋๋ค.
https://stylelint.io/user-guide/rules/about
์ด ๋งํฌ์์ ์ค์ ํ ์์๋ ๊ท์น ์ ํ์ ๋ณผ ์ ์์ต๋๋ค.
ํ์ฌ ์ด๋ฏธ ๋ ์์๊ฒ ์ฌ์ฉํ๋ lint : css ๋ช ๋ น์ด ์์ต๋๋ค. stylelint๋ฅผ ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด์จ๋ ๋๋ ๊ทธ๊ฒ์ ์ค์นํ์ผ๋ฉฐ ๊ท์น ์ธํธ์ ๋ฐ๋ผ ์ค๋ฅ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ฐ์งํฉ๋๋ค. PR์ ์ด๊น์?
๋ ์์ ๊ฒ์ ์ ๊ฑฐ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ ์์ ๊ตฌ์ฑ ํ์ผ์ ํ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์์๋ stylelint ๊ท์น์ ๋ํ ๊ตฌ์ฑ์ด ์์ต๋๋ค.
๋๋ฐ. ๋ด์ผ ์๋ํฉ๋๋ค.
stylelint ๊ท์น (๋๋ ๊ทธ ๋ฐฉ๋ฒ)์ ๋ํ ๋ ์์ ๊ตฌ์ฑ์ ์ฐพ์ง ๋ชปํ์ง๋ง ํ์ฌ ์ถฉ๋์ ํ์ธํ๊ณ ์ถฉ๋ํ๋ ๊ท์น์ ํด์ ํ๋ ๋ ๋ค๋ฅธ stylelint-config-prettier ํจํค์ง๋ฅผ ์ค์นํ์ต๋๋ค.
๋ด๊ฐ ์๊ฐํ๋ ๊ฒ์ lint : css ๋ช ๋ น์ ์์ผ๋ฉฐ stylelint ๋ช ๋ น๋ ๋ ์์๊ฒ ์คํํ ์ ์์ต๋๋ค.
(์คํผ๋์ธ) fcc์ ๋ง๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ ์ปค์คํ ์คํ์ผ ๋ฆฐํธ ๊ท์น์ ์์ฑํ ์ ์๊ณ ์ฌ์ง์ด๋ ๋ ์์ ๊ฒ์ ์์ ํ ์ ๊ฑฐ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋จ์ง ์๊ฒฌ ์ผ ๋ฟ์ด๋ฉฐ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ฌ๋ฌ๋ถ์ ๋ชซ์ ๋๋ค.
์งํ ์ํฉ์ ๋ํด @ManasMahanand ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ ๋ฒ์งธ ์๊ฒฌ์ ์ํด @ojeytonwilliams ๋ฅผ ํ๊ทธํ๊ณ ์์ต๋๋ค.
๋ ์๋ป์ ์์์ ์ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์ ์งํ๊ณ ์ถ์ต๋๋ค. https://github.com/prettier/stylelint-prettier ๋ฅผ ์ฌ์ฉํ๋ฉด prettier๊ฐ stylelint์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ๋ ๊ฐ์ง ์ฅ์ ์ ๋ชจ๋ ์ป์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ JavaScript linting์ ์ฌ์ฉํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@raisedadead @tomasvn ๋์ ๋ฐ๋ฅด๋ฉด CSS ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ๊ณ ์ํ๋ ๊ณผ์ ์ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค. React, Yarn, Babel ๋ฐ ๊ธฐํ ๋ง์ ์คํ ์์ค ํ๋ก์ ํธ๋
Prettier
๋ฐ ๊ธฐํ ์ ์ฌํ ํ์ฅ์ CSS ์คํ์ผ ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋๋ ๋์ . ๊ธฐ์ฌ์์๊ฒ IDE / ์ฝ๋ ํธ์ง๊ธฐ์
Prettier
์ ์ค์นํ๋ผ๊ณ ์๋ ค์ผํฉ๋๋ค.@raisedadead ์ด๊ฒ์ ๋ํ ์๊ฐ?