EduManager ๋์์ธ ์์คํ
ํ๋์ ํ ํฐยท์ปดํฌ๋ํธ ์
(src/main/webapp/css/theme.css)์ผ๋ก ์ ํ๋ฉด์ ํต์ผํฉ๋๋ค.
๋ค์ด๋น ๋ธ๋๋ ยท ๋ฐ์ ์บ๋ฒ์ค ยท ์นด๋ ๊ธฐ๋ฐ ๋ ์ด์์ ์ด ๊ธฐ๋ณธ ํค์
๋๋ค.
์์น
์๋ฏธ
ํ๋์ ์์คํ
๋ชจ๋ ์ยท๊ฐ๊ฒฉยท๊ทธ๋ฆผ์ยท์ปดํฌ๋ํธ๋ theme.css์ ํ ํฐ/ํด๋์ค์์. ํ์ด์ง CSS๋ ํ ํฐ๋ง ์ฐธ์กฐ(ํ๋์ฝ๋ฉ ์ยทํฝ์
๊ธ์ง).
๋ค์ด๋น ์ก์ผํธ
๋ธ๋๋/์ก์
์ ๋ค์ด๋น(--brand), ๋ณธ๋ฌธ์ ์ํฌ ๊ทธ๋ ์ด. ๊ฐ์กฐ๋ ์์ด ์๋๋ผ ๊ตต๊ธฐยท์ฌ๋ฐฑ ์ผ๋ก.
์นด๋์ ์ฌ๋ฐฑ
์ ๋ณด๋ ํฐ ์นด๋(--surface) + ์
์ ๋ผ์ธ/๊ทธ๋ฆผ์๋ก ๋ฌถ๊ณ , ๋๋ํ ์ฌ๋ฐฑ์ผ๋ก ์จ ์ฌ๊ฒ.
์ฐจ๋ถํ ๋ชจ์
hover/focus์ ์์ liftยท๋ง๋ง. 0.12~0.2s ease. ๊ณผํ ์ ๋๋ฉ์ด์
์ง์.
์ ๊ทผ์ฑ ๊ธฐ๋ณธ
์
๋ ฅ focus ๋ง, ์ถฉ๋ถํ ๋ช
๋ ๋๋น, ์ฌ์ฉ์ ์
๋ ฅ์ ํญ์ <c:out>์ผ๋ก ์ด์ค์ผ์ดํ.
2. ๋์์ธ ํ ํฐ (:root)
์ โ ๋ธ๋๋ / ํ
์คํธ
ํ ํฐ
๊ฐ
์ฉ๋
--brand
#1e2a7c
๊ธฐ๋ณธ ์ก์
ยท๊ฐ์กฐ(๋ค์ด๋น)
--brand-strong / --brand-press
#18215f / #141b50
hover / active
--brand-tint / --brand-tint-strong
#eef1fb / #e0e5f6
์
์ ๋ฐฐ๊ฒฝ ๊ฐ์กฐ
--brand-line
#d6ddf2
๊ฐ์กฐ ํ
๋๋ฆฌ
--ring
rgba(30,42,124,.16)
focus ๋ง
--ink / --ink-2
#111827 / #344054
์ ๋ชฉ / ๋ณธ๋ฌธ
--muted / --faint
#667085 / #98a2b3
๋ณด์กฐ / placeholder
--on-brand
#ffffff
๋ค์ด๋น ์ ๊ธ์
์ โ ๋ฉด / ๋ผ์ธ / ์ํ
ํ ํฐ
๊ฐ
์ฉ๋
--canvas
#f6f7f9
ํ์ด์ง ๋ฐฐ๊ฒฝ
--surface / --surface-2 / --surface-3
#fff / #fbfcfe / #f4f6fa
์นด๋ยท์
๋ ฅ / ์
์ ๋ฉด
--line / --line-strong
#e3e8ef / #d0d7e2
ํ
๋๋ฆฌ
--success #047857 ยท --warning #b45309 ยท --danger #dc2626
+ *-bg
์ํ์(์ฑ๊ณต/๊ฒฝ๊ณ /์ํ)
๋ฐ๊ฒฝ ยท ๊ทธ๋ฆผ์ ยท ํ์ดํฌ ยท ๋ ์ด์์
๊ทธ๋ฃน
ํ ํฐ
๋ฐ๊ฒฝ
--r-xs 10 ยท --r-sm 12 ยท --r-md 14 ยท --r-lg 20 ยท --r-xl 24 ยท --r-pill 999 (Toss ํค: ๋ฅ๊ธ๊ฒ)
๊ทธ๋ฆผ์
--shadow-xs/-sm/(๊ธฐ๋ณธ)/-lg (์
์ ์
์ฒด) ยท --shadow-brand(๋ค์ด๋น ๋ฒํผ)
ํ์ดํฌ
--font: 'Pretendard', system-ui โฆ ยท ๋ณธ๋ฌธ 15px / line-height 1.5
๋ ์ด์์
--page-max 1120px ยท --page-wide 1200px ยท --gutter 24px
ํ์ดํฌ ์ค์ผ์ผ(๊ถ์ฅ): ํ์ด์ง ์ ๋ชฉ 22px/800 ยท ์นด๋ ์ ๋ชฉ 1618px/700800 ยท ๋ณธ๋ฌธ 1415px/500 ยท ๋ผ๋ฒจ 1314px/700 ยท ์บก์
12px.
3. ์ปดํฌ๋ํธ (theme.css ํด๋์ค)
.em-page / .em-page--wide โ ๊ณตํต ์ฝํ
์ธ ํญ(๋ค๋น์ ์ ๋ ฌ).
.em-card (+ --flat ๊ทธ๋ฆผ์ ์ ๊ฑฐ, --pad ํจ๋ฉ24) โ ๊ธฐ๋ณธ ์นด๋.
.em-head (+ .em-eyebrow ์์ ๋๋ฌธ์ ๋ผ๋ฒจ, h1, p) โ ํ์ด์ง ์ ๋ชฉ ์นด๋.
๋ณํ
์ฉ๋
--primary
์ฃผ ์ก์
(๋ค์ด๋น + brand ๊ทธ๋ฆผ์)
--secondary
๋ณด์กฐ(๋ผ์ธ ๋ฒํผ)
--subtle
์
์ ๋ค์ด๋น ํดํธ
--ghost
ํ
์คํธํ
--danger
์ญ์ /์ํ
ํฌ๊ธฐ: --sm 36 ยท ๊ธฐ๋ณธ 44 ยท --lg 50 ยท --block ๊ฐ๋ก 100%
์
๋ ฅ ยท ๋ฑ์ง ยท ํญ ยท ๊ธฐํ
.em-field / .em-label / .em-input ยท .em-select ยท .em-textarea โ focus ์ ๋ค์ด๋น ํ
๋๋ฆฌ + --ring.
.em-badge (+ --neutral/--success/--warning/--danger) โ pill ๋ผ๋ฒจ.
.em-tab (+ .on) โ segmented/ํญ.
.em-divider ยท .em-dots/.em-dot.active(์จ๋ณด๋ฉ) ยท .filebox(์ปค์คํ
ํ์ผ ์
๋ก๋).
4. ํ์ด์ง ์ ์ฉ ๊ท์น (์ค์ โ ํจ์ ํฌํจ)
๋ก๋ ์์ : ๋ชจ๋ JSP <head>์์ theme.css๋ฅผ ํ์ด์ง๋ณ CSS๋ณด๋ค ๋จผ์ ๋งํฌ. ์ ๊ทธ๋ฌ๋ฉด ํ ํฐ ๋ฏธ์ ์๋ก ๊นจ์ง.
ํ ํฐ๋ง ์ฌ์ฉ : ํ์ด์ง CSS์์ ์ยท๋ฐ๊ฒฝยท๊ทธ๋ฆผ์๋ var(--token)์ผ๋ก. raw hex/px ๊ฐ์กฐ ๊ธ์ง.
์บ์ ๋ฌดํจํ : CSS/JSP ์์ ์ ๋งํฌ์ ?v=YYYYMMDD-xxx๋ฅผ ๊ฐฑ์ (๋ธ๋ผ์ฐ์ ์บ์ ๊ฐ์ ์๋ก๊ณ ์นจ).
XSS ์์ : JSP์์ ์ฌ์ฉ์ ์
๋ ฅ ์ถ๋ ฅ์ ๋ฐ๋์ <c:out value="${...}"/>. ์์ฑ๊ฐ์ ํ๋ฐ์ดํ value='${...}'.
์ถ๊ฐ ํผ ๊ฐ๋กํญ : ํญ์ .form div๊ฐ ์๋๋ผ <form> ์์ (.main-container > form)์ ์ง์ . div์ % ํญ์ ์ฃผ๋ฉด shrink-to-fit์ผ๋ก ๋ฌด๋์ง.
.js์ ์ต์
๋ ์ฒด์ด๋(?.) ๊ธ์ง : Eclipse JSDT๊ฐ ๋นจ๊ฐ ์๋ฌ๋ก ์คํ โ ๊ณ ์ ๊ฐ๋ ์ฌ์ฉ.
5. ํ๋ฉด๋ณ ํค ๊ฐ์ด๋
ํ๋ฉด
๊ตฌ์ฑ
๋ฉ์ธ ์บ๋ฆฐ๋(๋์๋ณด๋)
ํค๋ ์นด๋ + ์ ๊ทธ๋ฆฌ๋(์ด๋ฒคํธ ์นฉ) + '์ค๋' ํจ๋ + '์ ํํ ๋ ์ง ์์ธ' 4์ด(์์
/์ผ์ /์ํ/๊ณผ์ , ์๋จ ์ก์ผํธ).
๊ฐ์/์คํฐ๋ ์ ์ฒญ
ํค๋ ์นด๋(+๊ฒ์) + ํญ/๋ง๋ค๊ธฐ ๋ฒํผ + ์นด๋ ๊ฐค๋ฌ๋ฆฌ(์ปค๋ฒยท์ ๋ชฉยท์นดํ
๊ณ ๋ฆฌ ๋ฑ์งยท๊ฐ์ฌ). ์นด๋ hover lift.
๊ฐ์/์คํฐ๋ ์์ธ
์ ๋ณด ์นด๋(์ปค๋ฒ + ์ ๋ชฉยท์ค๋ช
์ธ๋ก์ค์) + ํ๊ธฐ ์นด๋.
ํญ๋ชฉ ์์ธ
๋ถ๋ฅ/์ผ์/์์ ํ
์ด๋ธ + ์์ธ ๋ด์ฉ + (๊ณผ์ ) ์ ์ถ ํํฉ/์ ์ถ ํผ + ๋ง๊ฐ ์ํ ๋ฐ์ค.
ํผ(๊ณต์งยท๊ณผ์ ยท์ผ์ ยท๋ง๋ค๊ธฐยท์์ )
์ค์ ์นด๋ ํผ, ๋ผ๋ฒจ ์ยท์
๋ ฅ ์๋, 2์ด ๊ทธ๋ฆฌ๋(๋ ์งยท์๊ฐ), ์ฐํ๋จ ์ฃผ ๋ฒํผ.
6. ๋ฐ์ํ ยท ์ ๊ทผ์ฑ
๋ฐ์ํ : ์นด๋/๊ทธ๋ฆฌ๋๋ min()ยทfrยท๋ฏธ๋์ด์ฟผ๋ฆฌ(โค640/760/820px)๋ก 1์ด ์ ํ.
ํฌ์ปค์ค : ์
๋ ฅยท๋ฒํผ focus ์ ๋ค์ด๋น ํ
๋๋ฆฌ + --ring. ํค๋ณด๋ ์ฌ์ฉ์ ๊ณ ๋ ค.
๋๋น : ๋ณธ๋ฌธ --ink-2/--muted๋ ํฐ ๋ฐฐ๊ฒฝ์์ WCAG AA ์ถฉ์กฑ ๋ฒ์.
์ํ ํผ๋๋ฐฑ : ์ฑ๊ณต/์คํจ๋ ๊ณตํต ๋ค๋น๊ฒ์ด์
์ flash ๋ฐฐ๋(๋
น์/๋นจ๊ฐ)๋ก 1ํ ํ์.
์ด ๋ฌธ์๋ src/main/webapp/css/theme.css๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. ํ ํฐ/์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊พธ๋ฉด ์ด ๋ฌธ์๋ ํจ๊ป ๊ฐฑ์ ํ์ธ์.