์๋ ํ์ธ์,
ํ ์ค๋ก CSS ํ์์ ์ง์ ํ๋ ์ต์ ์ด ํ์๋์ง ์์์ต๋๋ค.
์ด์ ์ถ๋ ฅ:
.btn-primary {
background:#fff;
color:#000;
border:1px solid #000;
}
.btn-primary:hover {
background:#000;
color:#fff;
border:1px solid #fff;
}
์ํ๋ ์ถ๋ ฅ:
.btn-primary { background:#fff; color:#000; border:1px solid #000; }
.btn-primary:hover { background:#000; color:#fff; border:1px solid #fff; }
์ (๊ทธ๋ฆฌ๊ณ ๋ง์ ๊ฐ๋ฐ์๋ค)์๊ฒ๋ ๊ทธ๋ฐ ์์ผ๋ก ํ์ํ๋ CSS๋ฅผ ์ฝ๊ณ ์์ ํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
#330์ ๋ณต์ ํ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ์์ฒญ์ ๋์ด๋ฅผ ๊ฐ์ํ ๋ ๋๋ ์ด๊ฒ์ ์ด์ด๋๊ณ ์์ต๋๋ค.
Visual Studio์๋ @Alex360hd๊ฐ ์ํ๋ ๋๋ก *.css ํ์ผ์ ๋ํ ์ปดํฉํธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
js-beauty์ ํ์ฅ ํ๋ฌ๊ทธ์ธ์ด ์๋ Visual Studio ์ฝ๋์๋ ์์ง ์ด ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์์ถ ๊ธฐ๋ฅ์ ์ฝ๋๋ฅผ 1000ํ(์ปดํฉํธ) ๋ 5000ํ(์ด์ ํ์)์ผ๋ก ๋ง๋ค๊ณ God Perspective๋ก *.css ํ์ผ์ ์ ์ดํ ์ ์์ต๋๋ค.
sass/๋ ๊ธด ์ฝ๋๋ฅผ ์ซ์ดํฉ๋๋ค.
๋ค, +1์ ๋๋ค. ๋๋ CSS ํ ์ค ํ์์ ์ ๋ง ์ข์ํฉ๋๋ค. ๊ฐ ์ ํ๊ธฐ๋ ์๋ก ์์ ์๊ณ ์์ฃผ ์ข์ ์๊ทผ๊ฐ ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ถ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ค ์คํ์ผ์ ํ ์ค๋ก ๋ฐ๊พธ๊ณ ๋ฏธํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ค์ ์ฌ๋ฌ ์ค๋ก ๋ฐ๊ฟ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
@evocateur ์ #330 ์๊ฒฌ ("๋ฏธํ์ ์ญํ ์ ์ฝ๋๋ฅผ ์ถ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋
์ฑ์ ์ํด ๋ค์ ํฌ๋งทํ๋ ๊ฒ")์ ๋ํ ํ์ ์กฐ์น: ๊ฑฐ๊ธฐ์ ์ธ๊ธ๋ cssmin
๋ ๋ค์์ ์ํด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. clean-css
(๋ํ ๋น๋ ๋๊ตฌ์ ํจ๊ป clean-css๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ฐธ์กฐ). "ํ ์ค ์์"์ clean-css
๋ก ์ฝ๊ฒ ์ป์ ์ ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
level: 0, // no optimizations
format: {
breaks: {
afterRuleEnds: true // put a line break after every rule
}
}
๊ทธ๊ฑด ํด
.btn-primary {
background:#fff;
color:#000;
border:1px solid #000;
}
.btn-primary:hover {
background:#000;
color:#fff;
border:1px solid #fff;
}
~ ์์ผ๋ก
.btn-primary{background:#fff;color:#000;border:1px solid #000}
.btn-primary:hover{background:#000;color:#fff;border:1px solid #fff}
๊ฑฐ๊ธฐ์์ spaces
์ต์
์ ๋ฏธ์ธ ์กฐ์ ํฉ๋๋ค.
๋ด ๋๋ฃ์ ๋ชจ๋ ์ ์ ๊ฐ๋ฐ์๋ long long long less/sass๋ก ๋ชจ๋ ๋ผ์ธ์ ์์ฑํ๊ณ ๋ชจ๋ ๊ณณ์์ ์ค์ํฉ๋๋ค.
๋ด ํ ์ฝ๋๋ฅผ ์ฉ์ํ์ญ์์ค -_-!!.
let CSSIOStream=`.model-a {
background:#fff;
color: #aaa;
border: 1px solid #aaa;
border-radius : 5px;
}
.model-a:hover {
background:#000;
color:#fff;
border:1px solid #fff;
}
/*seperate page section style, normally, i will left one blank rows or a note*/
.model-b{margin-right:10px;}
.model-b-list{margin-right:10px;}
/*seperate page section style, normally, i will left one blank rows or a note*/
`;
let CSSIOStreamOutput=CSSIOStream
.replace(/\ +/g, ' ')
.replace(/;\n/g,';')
.replace(/{\n/g,'{')
console.log(CSSIOStreamOutput);
์ฐ์ถ:
.model-a { background:#fff; color: #aaa; border: 1px solid #aaa; border-radius : 5px;}
.model-a:hover { background:#000; color:#fff; border:1px solid #fff;}
/*seperate page section style, normally, i will left one blank rows or a note*/
.model-b{margin-right:10px;}
.model-b-list{margin-right:10px;}
/*seperate page section style, normally, i will left one blank rows or a note*/
{} ์ฌ์ด์ ์ฝ๋๋ฅผ ์์ถํ๋ฉด .scss&.less ํ์ผ์ ์ ์ธ๋ฉ๋๋ค.
option.css๊ฐ ์๋์ง ์๊ณ ์ถ์ต๋๋ค. *.css ํ์์ผ๋ก ์์ถ ํฉ๋๋ค. :)
@evocateur
๋ฏธํ์ ์ญํ ์ ์ฝ๋๋ฅผ ์ถ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ์ํด ๋ค์ ํฌ๋งทํ๋ ๊ฒ์ ๋๋ค.
์ถ์๊ฐ ์๋๋ผ ํ ์ค ํ์์ ์ฌ๋ฌ ์ ํ๊ธฐ ๊ท์น์ ๋ํด ์ผ๋ถ ๊ณต๋ฐฑ๊ณผ ์ผ๋ถ ์ค ๋ฐํ์ ์ ์งํฉ๋๋ค.
์ ์ ๋ง์ ์น ๊ฐ๋ฐ์์๊ฒ ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
.btn { border:1px solid black; background:#fff; border-radius:5px color:#000; }
.btn:hover,
.btn:focus { background:#000; color:#fff; }
์ด๋ณด๋ค ํจ์ฌ ์ฝ๊ธฐ ์ฝ์ต๋๋ค.
.btn {
border:1px solid black;
background:#fff;
border-radius:5px;
color:#000;
}
.btn:hover,
.btn:focus {
background:#000;
color:#fff;
}
์๋์.
2017๋ 3์ 22์ผ 01:08์ Alex360hd [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@evocateur
๋ฏธํ์ ์ญํ ์ ์ฝ๋๋ฅผ ์ถ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ์ํด ๋ค์ ํฌ๋งทํ๋ ๊ฒ์ ๋๋ค.
์ ์ ๋ง์ ์น ๊ฐ๋ฐ์์๊ฒ ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
.btn { ํ ๋๋ฆฌ:1px ๋จ์ ๊ฒ์ ; ๋ฐฐ๊ฒฝ:#fff; ํ ๋๋ฆฌ-๋ฐ๊ฒฝ:5px ์์:#000; }
. btn:hover { ๋ฐฐ๊ฒฝ:#000; ์์:#fff; }
์ด๋ณด๋ค ํจ์ฌ ์ฝ๊ธฐ ์ฝ์ต๋๋ค..btn {
ํ ๋๋ฆฌ:1px ๋จ์ ๊ฒ์ ;
๋ฐฐ๊ฒฝ:#fff;
ํ ๋๋ฆฌ-๋ฐ๊ฒฝ:5px;
์์:#000;
}. btn:ํธ๋ฒ {
๋ฐฐ๊ฒฝ:#000;
์์:#fff;
}
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
์๋ฆ๋ค์ด ๋ณ๋ก ...
๊ฐ์ธ์ ์ผ๋ก ๋๋ ๋ด CSS ์ ํ๊ธฐ์ ๋ํ ํ๋ฅญํ ๊ฐ์๋ฅผ ๊ฐ๊ณ "์ผ๋ฐ" ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๋ด ๋ทฐํฌํธ์ 3๊ฐ ๋๋ 4๊ฐ ์ด์์ ์ ํ๊ธฐ๊ฐ ๊ฑฐ์ ๋ณด์ด์ง ์์ต๋๋ค.
ํ ์ค ํ์์ ์ฌ์ฉํ์ฌ 20 ๋๋ 30๊ฐ์ ์ ํ๊ธฐ๋ฅผ ๋ณผ ์ ์๊ณ (์ต์ํ) ์์ ๊ทธ๋ฃน์ ๋ํ ๊ฐ์๋ฅผ ์ฝ๊ฒ ๋ณผ ์ ์์ต๋๋ค.
CSS๋ฅผ ์ ์๊ณ , ์ ์ฐ๊ณผ ์ ํ๊ธฐ๋ฅผ ์ง๋ฅ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ ํ๊ธฐ์ ๋ํด 5~6๊ฐ ์ด์์ ๊ท์น์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์์ผ๋ฉฐ ์ค๋๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ํ๋ฉด(๋งค์ฐ ํผ)์์๋ ์ํ ์คํฌ๋กค๋ฐ ์์ด ๋ชจ๋ ๊ท์น์ ๋ณผ ์ ์์ต๋๋ค. (์ด ๊ฒฝ์ฐ ๋ด IDE์๋ ์๋ ์ค ๋ฐํ์ ๋ํ ๋ง์ ์ต์ ์ด ์์ต๋๋ค).
์จ๋ผ์ธ CSS ํฌ๋งทํฐ๋ฅผ ๊ฒ์ํ๋ฉด ๋๋ถ๋ถ์ด ๋จ์ผ ๋ผ์ธ ์ต์ ์ด ์์์ ์ ์ ์์ต๋๋ค. ์๋ง๋ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ ๊ด์ฌ์ด ์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค...
@evocateur - ๐ ๋น์ ์ ์ฌ์ ์์ด ๊ณ ์์ด ์ธ์์ ๊ธ์ ๋ณํ. ๐ ๐
@Alex360hd @jsonchou - ๊ทํ์ ํฌ์ธํธ๊ฐ ์ ํ์ฉ๋์์ต๋๋ค. ์ด๊ฒ์ ์ถ์์ ๋ฏธํ ์ฌ์ด ์ด๋๊ฐ์ ์ํ๋ฉฐ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ์ด๋ ค ์๊ณ ๊ฐ์ ์ฌํญ์ผ๋ก ๋์ด๋๋ ์ด์ ์ ๋๋ค.
์ด๊ฒ์ ํฉ๋ฆฌ์ ์ธ ์์ฒญ์ด์ง๋ง ์ ์ ์ด ํ๋ก์ ํธ์ ๋ค๋ฅธ ์ฃผ์ ๊ธฐ์ฌ์(์: @evocateur)์๊ฒ๋ ์ฐ์ ์์๊ฐ ๋ฎ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ด์ฌ ๊ตฌํ๊ณผ ์ถฉ๋ถํ ๋ฒ์์ ํ ์คํธ๊ฐ ํฌํจ๋ PR์ ์ ์ถํ๊ธฐ๋ก ์ ํํ ๊ฒฝ์ฐ ์๋ฝ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ํ๋ก์ ํธ ์ ์ฒด์์ ๋ ๋์ ์ฐ์ ์์๋ฅผ ์ฐจ์งํ๋ ๋ค๋ฅธ ์์ ์ด ์์ต๋๋ค.
@olets
ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฐ ๋์ฒด CSS ๋๊ตฌ๋ฅผ ์ง์ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
@jsonchou -
์ฃ์กํฉ๋๋ค. ๋๋ถ๋ถ์ ์
๋ ฅ ๋๋ ์ต์ํ ๊ทํ ๋๋ ์ ๊ฐ ์๋ํ ๋ชจ๋ ์
๋ ฅ์ ๋ํด ์๋ํ๋ ์ ๊ท์์ด ํญ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ชจ๋ ์
๋ ฅ์ ๋ํด ์ค์ ๋ก ์๋ํ์ง ์์ผ๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ์ด๊ฒ์ด css-beautifier ์ฝ๋๊ฐ ์ค๋๋ ์ฒ๋ผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ด์ ์
๋๋ค. ์ฌ๋๋ค์ด ์ํ์ ๊ฐ์ํ๊ธฐ๋ก ์ ํํ ๊ฒฝ์ฐ ํดํนํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ๋์ @olets ์๋ฃจ์
์ ์ฌ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๐
@jsonchou LESS ๋ฐ Sass์์ //inline comments
์กฐ์ฌ
@Alex360hd @Zmove
VSCode์ฉ CSS ์ปดํฉํธ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ์ต๋๋ค.
https://marketplace.visualstudio.com/items?itemName=jsonchou.css-compact
ํ๋ฅญํฉ๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
Hey @jsonchou - ํ๋ฌ๊ทธ์ธ์ sass/scss ์ธ๊ณ๋ก ๊ฐ์ ธ๊ฐ๋ค๋ฉด ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ ๊ฒ ๊ฐ์์. 3000ํฝ์ ๋๋น์ ๋ชจ๋ํฐ๊ฐ ์๋ ์ด ์๋์ ์ฌ๋๋ค์ด CSS์์ ํ๋ฉด ๊ณต๊ฐ์ 5%๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋๋ฆฐ ์ด์ ๋ฅผ ์๊ฐํ๋ฉด ๊ฐ์ด์ด ๋ญํดํฉ๋๋ค!
์ฌ๋๋ค์ด ์์ฑ์ด ํ์ํ ORDER๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์์น ๋ฐ ํ์์ ๊ฐ์ ํญ๋ชฉ์ ๋ชฉ๋ก์ ์ด๊ธฐ์ ์์ด์ผ ํ๊ณ ๊ทธ ๋ค์ ์ฌ๋ฐฑ, ํจ๋ฉ ๋ฑ, ๊ทธ ๋ค์์๋ ์์, ๊ธ๊ผด ๋ฑ์ด ์์ด์ผ ํฉ๋๋ค.
์ ์๊ฒ๋ SCSS๋ฅผ ์์ฑํ๋ ๋ง์ ์ฌ๋๋ค์ด ์๋ ํ์์ ๋งค์ฐ ๊ฐ๋ ฅํ๋ค๋ ๊ฒ์ด ์ ์ฆ๋์์ต๋๋ค.
์ฃ์กํฉ๋๋ค. ๋๊ตฐ๊ฐ ์์ฑ ํค ๊ฐ์ด ๋ณ๋์ ์ค์ ์์ด์ผ ํ๋ ํ ๊ฐ์ง ์ข์ ์ด์ ๋ฅผ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น? ๋ชจ๋ฐ์ผ ์ฅ์น์์ CSS๋ฅผ ์์ฑํ์๊ฒ ์ต๋๊น?
์คํฐ๋ธ
@tateman74 ์๋ง๋ .scss ํ์ผ์ ํ ์ค๋ก ๋ง๋ค๋ ค๊ณ ํ๊ฒ ์ง๋ง ORDER ์์ฑ์ csscomb์ ๊ฐ์ ์ธ ๋ฒ์งธ ์๋ฃจ์ ์ผ๋ก ์ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ํฅ๋ฏธ๋กญ๊ตฐ. CSSComb์ ํ์คํ ๋ด๊ฐ ์ฃผ๋ฌธํ ๋ ์ฐพ๊ณ ์๋ ๊ฒ์ ๋๋ค. VSCode ํ์ฅ์ ๋ง๋ค์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐํ์ด ์ค์ ๋ก ์๋ฏธํ๋ ๋ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ SCSS๋ ์ฝ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ต๊ณ ์ ๊ฐ๋ ์ฑ์ ์ํด ํญ์ ๋ค์๊ณผ ๊ฐ์ด ํ์์ ์ง์ ํฉ๋๋ค.
์ผ๋ง ์ (MySpace ๊ทผ๋ฌด ์์ :)) ๋ช ๋ช ์ CSS ์น๊ตฌ์ ์ ๋ ๊ณต๊ธ์ ์ฒด ์ ๋์ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก (๋ฌด์๋๋) ์์ฑ ์ข ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๊ฐํ์์ ์์ํด์ผ ํ๋ค๊ณ ์ถ๋ก ํ์ต๋๋ค. ์ฆ, ์๋ฏธ๊ฐ ์์ง๋ง ํธํ์ฑ์ ์ํด์๋ง ์กด์ฌํฉ๋๋ค. ์ด ์๋์ ์ฐ๋ฆฌ๋ ์ด์จ๋ PostCSS๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ํด๋น ๊ณต๊ธ์ ์ฒด ์ ๋์ฌ๊ฐ ์กด์ฌํ์ง ์์์ผ ํฉ๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ๋์์ด ํ์ํ๋ฉด ์๋ ค์ฃผ์ธ์. ๋ค์์ ๋ด๊ฐ ์ ํธํ๋ ๊ฝค ์ผ๋ฐ์ ์ธ SCSS ํ์ผ์
๋๋ค.
๋๊ฐ ์ฝ์ ์ ์๋ค๊ณ ๋งํด! :)
์คํฐ๋ธ
์ด ๊ธฐ๋ฅ์ด ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ ์ฌ๋์ด CSS ๋ฏธํ ๊ธฐ๋ฅ์ ๊ธฐ๊บผ์ด ๊ตฌํํ์๊ฒ ์ต๋๊น? ์๋ง ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ ๊ฒ์ ๋๋ค.
์๋ํ๋ ค๋ฉด ์ต์ํ CSS ํ ํฐํ๊ฐ ํ์ํฉ๋๋ค(#545). ๊ทธ๊ฒ์ด ์๋ฃ๋๋ฉด ๊ทธ๊ฒ์ ์คํํ๊ธฐ ์ํด ์ฝ๊ฐ์ ์์ ์ด ํ์ํ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋์.