@daveliepmann # 90์์ ๋ฃจํ๋ฅผ ๋ซ๊ธฐ ์ํด c15070ca84f19cfa994dd38bb92adccb1d4fbed7์์ ์์
ํ ํ์ด ํ๋ก์ ํธ์์ ์ฌ์ฉ ๋ ์ด์ํ ๋ค์ฌ ์ฐ๊ธฐ / ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋๋๊ฒ๋ ์ ๋ ์ค์ ๋ก CSS ์์ค๋ฅผ ๋ณธ ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. tufte.css
ํ์ค ๋ค์ฌ ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
์ ๋์ด ํ๋ก์ ํธ์์ ์ฌ์ฉ ๋ ํฌ๋งท ํ์ค์ ์ ํํ์ต๋๋ค. ์๋ํ๋ฉด ์ฌ๋ ์ค๊ดํธ ๋ ๋ซ๋ ์ค๊ดํธ์ ๊ณต๊ฐ์ ์ค ํ์๊ฐ์๊ณ , ์ํ ์๊ฐ๋ฆผ์ด ์ ํ๊ธฐ ๋ธ๋ก์ ๊ตฌ๋ณํ๋ ๋ฐ ์ ์ฉํ ์๊ฐ์ / ์ ์ ์ ๋ฒํ๋ชฉ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ฅผ ์ํด "ํ์ค"CSS ๋ค์ฌ ์ฐ๊ธฐ _ ๊ฐ์ _ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ๋๋ฌธ์, ๋ด๊ฐ ๋ณผ ์์๋ ์ ์ผํ ๊ฐ์น๋ ์ธ๋ถ ํ๋ก์ ํธ์์ ์ฝ๋ ์ผ๊ด์ฑ์ ๋์ด๋ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ๊ทธ๋ค์ง ์ค๋๋ ฅ์ด ์๋ค๊ณ ์๊ฐํ๋ ์ด์ ์ค ํ๋๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ CSS์ ๋ง์ ์๊ฐ์ ์๋นํ์ง ์๊ธฐ ๋๋ฌธ์ ์ปจํ ์คํธ ์ ํ๊ณผ ๊ด๋ จ๋ ์ ์ ์ ์ค๋ฒ ํค๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ต์ํ์ง ์์ ๊ฒ์ด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋ฐฉํด๊ฐ๋ฉ๋๊น? ๋ด๊ฐ ๋ณด์ง ๋ชปํ๋ "ํ์ค"๋ค์ฌ ์ฐ๊ธฐ์ ๋ํ ๋ค๋ฅธ ์ด์ ์ด ์์ต๋๊น?
์ ๊ฒฝ์ฐ์๋ ์ ํ๋ก์ ํธ๋ฅผ ์ํด ๋ง์ ๋ถ๋ถ์ SCSS๋ก ๋ณํํ์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ ํ์ค์ผ๋ก ๋ค์ ํฌ๋งทํด์ผํ๋ ๊ฒ์ด ๊ณ ํต ์ค๋ฌ์ ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋จ์ง ๊ฒฝ๊ณ ๋ฅผ ์์ ๊ธฐ์ํ ๊ฒ์ธ์ง ์๋๋ฉด ์ค๋ฅ๋ฅผ ์ผ์ผ์ผฐ๋์ง ๊ธฐ์ต์ด ๋์ง ์์ต๋๋ค. ์ค์ฒฉ๊ณผ ๊ฐ์ ๊ฒ์ ๋ฐ๋์ ๋ค์ ํฌ๋งทํด์ผํฉ๋๋ค.
๋ํ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ ์ฝ๊ฒ ๋ณํฉ ๋ ์์๋ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ๋ค์ ๋์ ์ค์ง ๋ชปํ๊ฒํฉ๋๋ค.
80 ์ (๋งค์ฐ ์ ์์ ์)์ ์ํํธ ๋ํ์ ์ฌ์ฉํ๋ ํธ์ง๊ธฐ์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๊ฐ์๋ ๋ถ๋ถ์ ์ ๋ง ์ง์ ๋ถ ํด์ง๋๋ค.
๋ด๊ฐ ์ ์ํ๊ณ ์ถ์ ๊ฑด ์๋์ผ! :) ๋๊ตฌ๋ ์ ํธํ๋ ์์ ์ง์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ด ๊ฒฝํ์ ์๋ ค์ค๋๋ค.
๋ฌธ์ ์ธ์ฌ,
@ yb66 SCSS ๋ณํ์ ๋ด ๋ง์์ ์ค์ง ์์ ์ค์ง์ ์ธ ์ด์ ์ ๋๋ค.
...ํ์ง๋ง ์ถ๊ฐ ๊ฒ์ฌ์์ http://csstoss.com/ ๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ์ด ์์ ์ ์ฝ๊ฒ ์ํํ์ง ์์ต๋๊น? ๋๋ ๋ชจ๋ ์ฌ๋ ์ค๊ดํธ๋ฅผ ์ ํํ๊ณ ๋ค์ ๊ฐํ์ ์ถ๊ฐ ํ ๋ค์ ๋ชจ๋ ๋ซ๋ ์ค๊ดํธ๋ฅผ ์ ํํ๊ณ ์์ ๊ฐํ์ ์ถ๊ฐ ํ ๋ค์ ํ์ผ์ ๋ค์ ๋ค์ฌ ์ฐ์๊ฒ ์ต๋๊น?
์ํํธ ๋ฉํ ๋ฌธ์ ๋ ์๊ณ ์์ต๋๋ค.
ํ์์ ์ง์ ํ๊ณ ์ฃผ์ด์ง linter / formatter ๋๊ตฌ์ ๋ํ ์ฌ์์ ์ ๊ณตํ๋ ๊ฒ์ด ๋งค์ฐ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๋ฌํ ๋๊ตฌ๋ฅผ ์ง์ํ๊ณ ๋ชจ๋ ๋ณํฉ ๋ ์ปค๋ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ค์ ๋ก ์ฌ๋๋ค์ด ๊ธฐ์ฌํ๊ณ ๋์ด ์ค๊ธฐ ์์ฒญ์ํ๋ ๊ฒ์ด ๋ ์ฌ์ ์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ปค๋ฐํ๊ธฐ ์ ์ *.css
ํ์ผ์์ ๋ช
๋ น์ ์คํํ๊ณ ์๋ฃ ํ ์์์ ๋ ๋ค์ฌ ์ฐ๊ธฐ์ ์ค๊ดํธ๋ฅผ ์กฐ์ํ๋ ๋ฐ ์๊ฐ์ ์๋นํ๋ ์ฌ๋์ ์๋ฌด๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ํ์์ด ์ ํ๋์๋์ง์ ๋ํด์๋ ๋ฌด๊ด์ฌํฉ๋๋ค. ๋จ์ง ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๊ธฐ ์ ์ ๊ฐ๋จํ ๋ช
๋ น ์ค ๋๊ตฌ๋ฅผ ์คํํ์ฌ ๋ง์กฑ์ํฌ ์ ์๋ค๋ ์ ์
๋๋ค.
ํ ๊ฐ์ง ์ต์ ์ stylelint.io ์ด์ง๋ง ๋ค๋ฅธ ์ต์ ๋ ์์ต๋๋ค.
ํธ์ง : ๋ฌธ๋ฒ
๋ด ๋ง์, ๊ณต๋ฃก์ด ์ง๊ตฌ๋ฅผ ๋ฐฐํํ๊ณ ๋์์์ ๊ฑด๋ ๋ฐฐ๋ก ์ปค๋ฐ์ ๋ณด๋์ ๋๋ถํฐ README์ CSS ์คํ์ผ ๊ฐ์ด๋ ์น์ ์ด์์์ต๋๋ค. ๊ทธ ํ์ค์ ์ํํ๋ ๊ฒ์ ๋ํ ๋์ ์ ์ฑ ์
์ด ํ๋ก์ ํธ๋ 300 ์ค ๋ฏธ๋ง์ ๋๋ค. ๋๋ถ๋ถ์ PR์์๋ 6-8 ๊ฐ์ ์ค๊ดํธ๋ฅผ ์์ ํ๋ ๋ฐ 90 ์ด๊ฐ ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ธฐ ์ํด ๋ช ๋ น ์ค ๋๊ตฌ ์ข ์์ฑ์ ๋์ ํ ํ์์ฑ์ ์ ์คํ๊ฒ ์๊ฐํ์ง ์์ต๋๋ค.
๋๋ ๋ฒ๊ทธ์ PR์ ๋๋ฆฌ๊ฒ ์ฒ๋ฆฌํด ์์ง๋ง ์คํ์ผ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ธ๋ถ ์๊ฐ ์๋ฐ๊ณผ ๋ง์ ์ฅ์น์ ์๋๋ฆฌ์ค์์ ํ ์คํธ ๋ณ๊ฒฝ์ ๋ณต์ก์ฑ์ผ๋ก ์ธํ ๊ฒ์ ๋๋ค.
๋ด๊ฐ ์๋ ํ ์๋ ์์ ์ ๋ ๋ช ํํ์ง ์์ ๊ฒ์ ๋ํด ์ ๊ฐ์ค๋ฝ๊ฒ๋, ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ํด ๋์ ์ง๊ทธ์ฌ๊ทธ๋ก ๋๋ฌ ์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ฌ ์์์ ๋ค๋ฅธ ๋ ์ต์ A ๋ฐ B์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
ํ๋ฆ:
.table-caption { float:right;
clear:right;
margin-right: -60%;
width: 50%;
margin-top: 0;
margin-bottom: 0;
font-size: 1.0rem;
line-height: 1.6; }
.sidenote-number { counter-increment: sidenote-counter; }
.sidenote-number:after, .sidenote:before { content: counter(sidenote-counter) " ";
font-family: et-book-roman-old-style;
position: relative;
vertical-align: baseline; }
.sidenote-number:after { content: counter(sidenote-counter);
font-size: 1rem;
top: -0.5rem;
left: 0.1rem; }
.sidenote:before { content: counter(sidenote-counter) " ";
top: -0.5rem; }
blockquote .sidenote, blockquote .marginnote { margin-right: -82%;
min-width: 59%;
text-align: left; }
p, footer, table, div.table-wrapper-small, div.supertable-wrapper > p, div.booktabs-wrapper { width: 55%; }
์ต์ A
.table-caption { float:right;
clear:right;
margin-right: -60%;
width: 50%;
margin-top: 0;
margin-bottom: 0;
font-size: 1.0rem;
line-height: 1.6; }
.sidenote-number { counter-increment: sidenote-counter; }
.sidenote-number::after,
.sidenote::before { content: counter(sidenote-counter) " ";
font-family: et-book-roman-old-style;
position: relative;
vertical-align: baseline; }
.sidenote-number::after { content: counter(sidenote-counter);
font-size: 1rem;
top: -0.5rem;
left: 0.1rem; }
.sidenote::before { content: counter(sidenote-counter) " ";
top: -0.5rem; }
blockquote .sidenote,
blockquote .marginnote { margin-right: -82%;
min-width: 59%;
text-align: left; }
p,
footer,
table,
div.table-wrapper-small,
div.supertable-wrapper > p,
div.booktabs-wrapper { width: 55%; }
์ต์ B :
.table-caption {
float: right;
clear: right;
margin-right: -60%;
width: 50%;
margin-top: 0;
margin-bottom: 0;
font-size: 1.0rem;
line-height: 1.6;
}
.sidenote-number {
counter-increment: sidenote-counter;
}
.sidenote-number::after,
.sidenote::before {
content: counter(sidenote-counter) " ";
font-family: et-book-roman-old-style;
position: relative;
vertical-align: baseline;
}
.sidenote-number::after {
content: counter(sidenote-counter);
font-size: 1rem;
top: -0.5rem;
left: 0.1rem;
}
.sidenote::before {
content: counter(sidenote-counter) " ";
top: -0.5rem;
}
blockquote .sidenote,
blockquote .marginnote {
margin-right: -82%;
min-width: 59%;
text-align: left;
}
p,
footer,
table,
div.table-wrapper-small,
div.supertable-wrapper > p,
div.booktabs-wrapper {
width: 55%;
}
๋ด ์ธ์์์ ์์ญ๋ง ์ค์ CSS๋ฅผ ์ด ๋๋ ์ต์ B๋ฅผ ์ฝ๋ ๋ฐ ๊ฐ์ฅ ์ต์ํ์ง๋ง ์ต์ A์ ๊ฐ์ ์ผ์ด์ค๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ์ ์ ๋์ ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. ๊ฐ๋ ์ฑ๋ฉด์์ ํ์ฌ ํ์์ ๋ฅ๊ฐํ์ง ์์ต๋๋ค. ๋ฌผ๋ก , ๋น์ ์ด ์ง์ ํ๋ฏ์ด, ๊ทธ๊ฒ์ <300 ์ค์ด๊ธฐ ๋๋ฌธ์ ์ด๋ ์ชฝ์ด๋ ํฐ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
์ด ์์ ์์ ์ ๋ ์ข ๋ ์ ํต์ ์ธ ๊ฒ์ผ๋ก ๊ธฐ์ธ์ฌ์ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๋ ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ์ CSS ๊ท๋ฒ์ ๋ถํฉํฉ๋๋ค. ์ต์ B๋ ์ฌ๋๋ค์ด ๋ ์ ์์๋ณผ ์์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ต์ B๋ก ๊ฐ ๊ฒ์ ๋๋ค. ์ฌ๋์ด ์ฝ์ ์ ์๊ณ ์ฌ๋ฌ ํฌ๋งทํฐ / ๋ฆฐํฐ์ ๋ํด ๊ธฐ๊ณ๊ฐ ์ฝ์ ์์๋ ํ์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋์ด ์ด๊ฒ์ ๋ํด ์์ ๋ดค์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐ ํด์ฃผ์ ์ Adam๊ณผ 2 ์ผํธ๋ฅผ ์ถ๊ฐ ํด์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ ์ ์๊ฐ ์ด ์์ผ๋ฉด ์ปค๋ฐ (https://github.com/edwardtufte/tufte-css/commit/bfbe3b5c50ee450ba09122f1506233edf6a97ffe)์ ์ดํด๋ณด๊ณ A) ๋ค์ฌ ์ฐ๊ธฐ ๋๋ ์ง์ ์ ์ถ๊ฐ๋ก ํ์คํ ํ ์ ์๋์ง ์๋ ค์ฃผ์ธ์. B) ๊ตฌํ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. (์ํ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์คํฌ๋กคํ๋ ๊ฒ ์ธ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๊ตฌํํ์ง ์์์ต๋๋ค.)
@daveliepmann์ด๋ณด๊ธฐ ์ข๋ค์. ์ด๋ฐ ์ค๋๋ ๋ฌธ์ ์ ์ง๋ฉด ํ ์์๋ ์๋์ง๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ผ๋ง๋ ํ๋ ์ง ์๊ณ ์์ผ๋ฏ๋ก ๊ทธ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋ด ๋ธ๋ก๊ทธ๋ฅผ ์ ์ฌ์ดํธ์ ๋ค์ ๊ฒ์ํ๋ ์ค์ด๋ฏ๋ก ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ์ฉํ๊ณ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@daveliepmann ๋ฉ์ง๋ค์ . ์ด๋ ๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@ yb66 ๊ทธ๋ ... SCSS๊ฐ ์ด๋๊ฐ์ ์์ต๋๊น? github์์? HTML MIME ๋ถ๋ถ์ ํ์ ํ ๋ ์คํ์ผ์ ์ฌ์ ์ ํ ์์๋ ์ด๋ฉ์ผ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ SCSS๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ์ํด Tufte๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๋๊ตฐ๊ฐ ์ด๋ฏธ SCSS ๋ณํ์ ์ํํ๋ค๋ฉด ํจ์ฌ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
@serussell CSS๊ฐ ์ ํจํ SCSS๊ฐ ์๋๊ฐ์?
@adamschwartz :
๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค! ์ฌ๊ธฐ์ CSS๋ฅผ ์ฌ์ฉํ๋ฉด Stylelint๊ฐ ํฌ๋ฆฌ์ค๋ง์ค์ฒ๋ผ ๋น๋ฉ๋๋ค. ๊ทธ๊ฒ๋ค ์ค ์ผ๋ถ๋ ์คํ์ผ์ ๋ฌธ์ ์ด์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ฝ๊ฒ ์ ๊ฑฐ ํ ์์๋ ๋ง์ ๋ถ์ผ์น๋ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ์์ ์์ ์ ๋ ์ข ๋ ์ ํต์ ์ธ ๊ฒ์ผ๋ก ๊ธฐ์ธ์ฌ์ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๋ ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ์ CSS ๊ท๋ฒ์ ๋ถํฉํฉ๋๋ค. ์ต์ B๋ ์ฌ๋๋ค์ด ๋ ์ ์์๋ณผ ์์์ ๊ฒ ๊ฐ์ต๋๋ค.