ํ๋ฆฌ ๋นํธ์ธ (Pre Built-in) ์ปดํฌ๋ํธ
๋ฏธ๋ฆฌ ๋ง๋ค์ด์ ธ์๋ ๋ด์ฅ ํจ์
์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ(Utility-first)
ํ๋ํ๋ ํด๋์ค ์กฐ๊ฐ(์ ํธ๋ฆฌํฐ)์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ
๐ ํน์ง
1. ํ์ฅ ํ๋ก๊ทธ๋จ ๊น๊ธฐ
2. ํ๊ฒฝ ๊ตฌ์ฑ ๋ฐ ๋น๋
touch src/index.html src/css/input.css
input.css
๋ก ํด์ผํ๋ค.3. ํจํค์ง ๊น๊ธฐ
npm install -D tailwindcss
-D
๊ฐ๋ฐ ์์กด ๋ชจ๋(๋ฐ๋ธ ๋ํ๋ ์์ค)4. ์ถ๊ฐ ํจํค์ง ๊น๊ธฐ
npm i -D live-server npm-run-all postcss-cli@latest
5. Tailwind CSS ์ด๊ธฐํ ์ํค๊ธฐ
npx tailwindcss init -p
-p
postcss.config.js ๊น์ง ๊ฐ์ด ๊น๋ฆฌ๋ ๋ช
๋ น์ดpackage-lock.json
package.json
postcss.config.js
tailwind.config.js
๊น๋ฆฐ ๊ฒ ํ์ธ!npm init -y
ํ๊ณ ๋ค์ 3๋ฒ๋ถํฐ ๋ค์ ์์ํ๊ธฐ6. tailwind.config.js ํ์ผ ์์
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [],
}
content: ["./src/**/*.{html,js}"]
โ ํ์ฌ ํ์ผ์ ๊ธฐ์ค์ผ๋ก src ํด๋๋ก ๋์ด๊ฐ ํ ํน์ ๋ชจ๋ฅผ ํด๋ ๋๋ฌธ์ ** ๋ ์์ ๋ค์ด๊ฐ๋ค. ๊ทธ ๋ค์ ํ์ฅ์ html ๋๋ js ๋ฅผ ์ฐพ์๋ผ
7. input.css ํ์ผ ์์
@tailwind base;
@tailwind components;
@tailwind utilities;
8. package.json ์ ๋จ์ถํค ๋ฑ๋ก
"scripts": {
"start": "run-p server watch",
"tailwind": "tailwindcss -i ./src/css/input.css -o ./src/css/output.css",
"watch": "npm run tailwind -- --watch",
"server": "live-server ./src"
},
"tailwind" : "tailwindcss -i ./src/css/input.css -o ./src/css/output.cssโ
-i
input-o
output9. โ๏ธ(๊ด๋ฆฌ) โ ์ค์ โ tailwind ๊ฒ์ โ settings.json ํ์ผ ์ ํ
๐ป ๋งจ ๋ง์ง๋ง ์ค์ ์ถ๊ฐํ๊ธฐ
"files.associations": {
// "*.css": "tailwindcss",
"*html": "html",
"*css": "css"
},
"editor.quickSuggestions": {
"strings": true
},
"tailwindCSS.includeLanguages": {
"plaintext": "html",
"postcss": "css"
},
10. index.html ์์ํ๊ธฐ
<link rel="stylesheet" href="./css/output.css" />
์ฐ๊ฒฐโ๏ธ top-1 = 4px
, 4px์ด ๊ธฐ์ค!!
โ๏ธ bg-gray-200
์ด๊ฑด tailwind ๊ธฐ๋ณธ ์ ํธ๋ฆฌํฐ
โ๏ธ bg-gray3
์ด๊ฑด ๋ด๊ฐ tailwind.config.js์์ ์ปค์คํ
ํ ์ ํธ๋ฆฌํฐ
โ๏ธ md:
@midea-query
โ๏ธ darkMode: "class"
media
๋ก ์ค์ ํ๋ฉด ๊ฐ ์ด์์ฒด์ ์ ์ค์ ์ผ๋ก ์ ํํด์ผํ๋ค.class
๋ก ์ค์ ํ๋ฉด classname ์์ฑ์ผ๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค.โ๏ธ underline
๋ฐ์ค
โ๏ธ sr-only
sr-only
์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ์ด๋ ๋ค.position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
clip: rect(0, 0, 0, 0);
์ด๊ฑด ๊ตฌํ ๋ฒ์
clip-path: (50%)
์ ํ ๋ฒ์
input.css
โ ์์ฃผ ์ฐ๋ ๋ช
๋ น์ด ๋จ์ถํค ์ค์
.ํด๋์ค๋ช
{
@apply ;
}
โ๏ธ appearance
none
: ๋ธ๋ผ์ฐ์ ์์ด์ ํธ ์คํ์ผ ์์ค๋ค. ๋์ ๋ณด์ด์ง๋ง ์์ ๋ฟ ์์๋ ์กด์ฌํ๋ค.์ค๋์ Tailwind์ ๊ธฐ์ด๋ฅผ ๊ฐ๋ณ๊ฒ ๋ฐฐ์ ๋ค. ์ฒ์์๋ ๊ฐ๋
์ฑ๋๋ฌธ์ ๋ณ๋ก๋ผ๊ณ ์๊ฐํ๋๋ฐ ๋ฐฐ์ฐ๋ฉด ๋ฐฐ์ธ ์๋ก ๋น ๋ฅด๊ฒ ์คํ์ผ๋ง์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์ ๋ง ์ปธ๋ค. ์๊ฐ์ด ๋๋ฌด ๋น ๋ฅด๊ฒ ์ง๋๊ฐ ์ ๋๋ก ์ฌ๋ฏธ์์๊ณ ํ๋ก์ ํธ๊ฐ ๋๋๊ณ ๋๋ฉด Tailwind๋ก ํ์ด์ง๋ฅผ ํ๋ฒ ์ ์ํด๋ณด๊ณ ์ ํ๋ค. ์๋ก ๋ฐฐ์ฐ๋ ๊ฒ๋ค์ ๋น ๋ฅด๊ฒ ์ตํ๋ ๋ฐฉ๋ฒ์ ์ญ์ ์ฝ๋๋ฅผ ์ง์ ๋ง์ด ์ณ๋ณด๋ ์๋ฐ์ ์๋ค. Sass๋ฅผ ํตํด ๋ฐฐ์ด ๊ฒ..๐ฌ
์ค๋์ด HTML/CSS ์ฌ๋น์ค๊ณผ์ ๋ง์ง๋ง ์์
์ด์๋๋ฐ ๋๋ฌด ์์ฌ์ ๋ค. ์์ง ๋ ๋ฐฐ์ธ๊ฒ ๋๋ฌด ๋ง์๋ฐ ๋ฒ์จ ๋์ด ๋๋ค๋ใ
ใ
์ฌ๋น์ค ๋๋ถ์ ์ ๋ง ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๋๊ผ๋ ํ๋ฌ์ด์๋ค. ํ๋ก์ ํธ ๊ธฐ๊ฐ๋์ ๋ด๋น ๊ฐ์ฌ๋์ด์
์ ๊ณ์ ๋ชจ๋ฅด๋๊ฒ ์์ผ๋ฉด ๋ฌผ์ด๋ณผ ์ ์์ง๋ง ์ด์ ์์
์ด ์๋ค๋๊ฒ ๋๋ฌด๋๋ฌด ์์ฝ๋คใ
ใ
ใ
ใ
ํ๋ฌ์ด ์ด๋ ๊ฒ ๊ธ๋ฐฉ๊ฐ๋ค๋๐ญ๐ญ๐ญ๐ญ
ํ๋ก์ ํธ ์์์ด ๋์๋๋ฐ 4๊ฐ์ง๊ฐ ์์๋ค. ๋ฐ์ํ, ๊ณ ์ ํ, ๋ชจ๋ฐ์ผ์ฉ, ๋ฐ์คํฌํ์ฉ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์๋ ์์์ด๋ผ๊ณ ์๊ฐ๋๋ค. ๊ทธ ์ค ํ์๋ค๊ณผ ํ์ ๋์ ์ ํ ์์์ ๋ง์ผ์ปฌ๋ฆฌ์์๐ ํํธ์ผ๋ก๋ ์ด๋ฌํ์ด์ง๋ฅผ ํ๊ณ ์ถ์์ง๋ง ํ์๋ค๊ณผ์ ๋ํ ์ค ๋๋ ์ ์ ๋ด๊ฐ ๊ฐ์ฅ ์ค๋ ฅ์ด ๋ค์ณ์ง๋ค๋ ๊ฒ์ด์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ดํ ๊ณต๋ถํด๋ณด๊ฒ ๋ค๊ณ ์ด๋ ค์ด ์์ ๊ณ ๋ฅด๋ฉด ๋ด๊ฐ ๋๋ฌด ๋ฏผํ๊ฐ ๋ ๊ฒ๊ฐ์์ ์๊ฒฌ์ ๋ด์ง๋ ์์๋ค. ๋ง์ผ์ปฌ๋ฆฌ ์์๋ ์ฌ์ด ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์!! ๋ค๋ค ๋ฏ์ ๋ง์ด ๊ฐ๋ฆฌ์ ์ ์กฐ์ฅ๋ถ๊ป์ ์ญํ ์ ์ ํด์ฃผ์ จ๋ค. ๋๋ ๋ฉ์ธ๋ถ๋ถ์ด์๋๋ฐ ์ฌ์๋ณด์ด๋ ๋ฏ ์๊ฐ๋ณด๋ค ๊น๋ค๋ก์ด ๊ฒ๋ค์ด ๋ง์๋ณด์๋ค. ๋ด์ผ๋ถํฐ ์์์ธ๋ฐ ๋ฏผํ๊ฐ ๋์ง ์๊ฒ ์ ๋ง ์ด์ฌํ ํด์ผ๊ฒ ๋ค! ๋ฌด์์น์ฐจ๋ ์ ๋ ์ํ ๊บผ์ง๋ง ๋ฒ์ค๋ฅผ ํ๊ฒ ๋ ๊ฒ๊ฐ์ ์ด ๊ธฐ๋ถ์ ๋ญ๊น๐ ์ฒซ ํ๋ก์ ํธ์ด๋ ์ํต๋ ์ด์ฌํ ํ๊ณ ์ข์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ด์ผ์ง๐ฅ๐ฅ๐ฅ๐ฅ
๋ด์ผ๋ถํฐ ํ๋ก์ ํธ ๋๋ ๋๊น์ง๋ TIL์ ์์ฑํ ์ผ์ด ์์ ๋ฏํ๋ค.
๋์ ํ๋ก์ ํธ ์งํํ๋ฉด์ ์ด์๊ฐ์๊ฑฐ ์์ฑํด์ผ๊ฒ ๋ค.