jwu-ice / pomodoro-timer

Pomodoro-timer on Vanila JS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐ŸŠ ์‚ฌ์ดํŠธ์ฃผ์†Œ

๋ฐ๋ชจ ๋งํฌ

๐ŸŽ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์š”

  • ํƒ€์ด๋จธ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹œ๊ฐ„์„ ๊ด€๋ฆฌํ•œ๋‹ค.

    • ์ขŒ์ธก ์˜ต์…˜์„ ํ†ตํ•ด ํƒ€์ด๋จธ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํƒ€์ด๋จธ์˜ ์‹œ๊ฐ„์€ ๋ฐ˜๋ณต๋˜๋ฉฐ ๋ฐ˜๋ณต ๋  ๋•Œ๋งˆ๋‹ค ํ™”๋ฉด๋ฐ”๋€œ๊ณผ ์†Œ๋ฆฌ๋กœ ์ง‘์ค‘์‹œ๊ฐ„ / ํœด์‹์‹œ๊ฐ„์„ ํ‘œ์‹œํ•œ๋‹ค.
  • ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ž‘์—…์„ ๊ด€๋ฆฌํ•œ๋‹ค.

    • ์ž‘์—… ๋ฆฌ์ŠคํŠธ๋ฅผ ์ ๋Š”๋‹ค.
    • ๋งˆ๋ฌด๋ฆฌ ํ•œ ์ž‘์—…์€ ์ฒดํฌ๋ฅผ ํ†ตํ•ด ์•„๋ž˜๋กœ ๋‚ด๋ ค๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • ์ž‘์—…์„ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. (ํƒ€์ด๋จธํŽ˜์ด์ง€ ์ƒ๋‹จ์— ํ‘œ์‹œ๋จ)
  • ์ƒ๋‹จ๊ณผ ํ•˜๋‹จ์˜ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ํƒ€์ด๋จธํŽ˜์ด์ง€ / ํˆฌ๋‘๋ฆฌ์ŠคํŠธํŽ˜์ด์ง€๋ฅผ ์˜ค๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ‹ ๋งŒ๋“ค๊ธฐ ์ „ ์Šค์ผ€์น˜

์Šค์ผ€์น˜์‚ฌ์ง„

๐Ÿฅญ ์ฃผ์ œ: ๋ฝ€๋ชจ๋„๋กœ ํƒ€์ด๋จธ์™€ todolist

๊ณ„ํš

  • ์›”์š”์ผ : ํƒ€์ด๋จธ๊ธฐ๋Šฅ & ๋ผˆ๋Œ€ css
  • ํ™”์š”์ผ : ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ & ์Šคํฌ๋กค ๋‚ด๋ฆด ์‹œ
  • ์ˆ˜์š”์ผ : ๋ชปํ•œ ๋ถ€๋ถ„ ์ •๋ฆฌ, ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

์™„์„ฑ ๊ธฐ๋Šฅ

  • ํƒ€์ด๋จธ (์‹œ์ž‘, ์ผ์‹œ์ •์ง€, ์ดˆ๊ธฐํ™”)
  • ํƒ€์ด๋จธ ์‹œ๊ฐ„ ๋ฐ”๊พธ๊ธฐ
  • Todo List (์ถ”๊ฐ€, ์‚ญ์ œ, ์™„๋ฃŒํ•œ ๊ฒƒ ์ฒดํฌ, ํฌ์ปค์Šค)
  • ์Šคํฌ๋กค์— ๋”ฐ๋ผ Fixed๋œ ํ—ค๋” ์ด๋™
  • ์˜ต์…˜ ์‚ฌ์ด๋“œ๋ฐ”

1์ผ์ฐจ

  • ํฌ๋กฑ๊ณผ ๋ฉด๋‹ด ์ง„ํ–‰

  • ๋‚ด์šฉ : ๊ด€์ƒํ•™์ ์œผ๋กœ... ์ข‹์€ ์–ผ๊ตด์ด๋‹ค.. ํ ? ์ž˜ํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์นธ๊ณผ ๋น„์Šทํ•œ ์ฃผ์ œ๋ผ ๊ฐ™์ด ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค!

  • 25๋ถ„ ์ง€๋‚˜๊ณ  ์‰ฌ๋Š” ์‹œ๊ฐ„ 5๋ถ„์„ ๊ฐ€์ ธ์•ผ ํ•  ๋•Œ, ๊ทธ ์ƒํ™ฉ์—์„œ ์ผ์‹œ์ •์ง€์™€ ์ •์ง€,

  • ๊ณต๋ถ€์‹œ๊ฐ„๊ณผ ์‰ฌ๋Š”์‹œ๊ฐ„ ์™ธ์ ์ธ ์ฐจ์ด๋ฅผ ๋‘์–ด์•ผํ•˜๋Š”๋ฐ .. 5์ดˆ ๋‚จ์•˜์„ ๋•Œ ์‹œ๊ฐ„์ƒ‰ ๋ฐ”๊ฟˆ, ํฌ์ปค์Šค๋˜๊ณ  ์žˆ๋Š” todo๋ฅผ break time์œผ๋กœ ์ž ์‹œ ๋ณ€๊ฒฝ

โ†’ ์˜ค๋Š˜์€ ๊ธฐ๋Šฅ์ ์ธ ์š”์†Œ๋ฅผ ์ฃผ๋กœ ๋งŒ๋“ค์ƒ๊ฐ. โ†’ ์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ์™ธ์ ์œผ๋กœ๋Š” ์Œ์•…์š”์†Œ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ์ •๋ ฌ๊ธฐ๋Šฅ, ํƒ€์ด๋จธ์‹œ๊ฐ„ ๋ฐ”๊พธ๊ธฐ ๋„ฃ์„๊ฑฐ๋‹ค!

2์ผ์ฐจ

  • Todo List๋ฅผ ๋‹ค ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค..!!! ์ฒดํฌํ•˜๋ฉด ๋ฐ‘์œผ๋กœ ๊ฐ€๋Š”๊ฒƒ๋„ ๊ดœ์ฐฎ์„๋“ฏ. ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ, ์ฒดํฌ๋ฐ•์Šค, ํฌ์ปค์Šค

  • ์Šคํฌ๋กค ์ด๋ฒคํŠธ ์ถ”๊ฐ€ ์Šคํฌ๋กค ๋‚ด๋ฆด ์‹œ ๋ Œ๋”๋ง. ์–ด๋Š ์‹œ์ . ์˜ฌ๋ฆฌ๋ฉด ๋‹ค์‹œ display:none ?

  • middle์นธ์„ bottom fixed๋กœ ํ•˜๊ณ  ํด๋ฆญ์‹œ ์œ„์•„๋ž˜์ด๋™(์• ๋‹ˆ๋ฉ”์ด์…˜), ํ•˜๋ฉด ๋‹ค์‹œ top fixed

  • setTimeInterval์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—”์ง„ ๋‚ด ์ง€์—ฐ๋˜๋Š” ์‹œ๊ฐ„ ๋•Œ๋ฌธ์— ์ •ํ™•ํžˆ ์‹œ๊ฐ„์„ ์žฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ์‹œ๊ฐ„์„ ์žฌ๋ ค๋ฉด setTimeout์„ ํ†ตํ•œ.. ๋กœ์ง์ด ์žˆ์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

  • insertAdjacentHTML ....................... ๋์— Html์ด๋ผ๊ณ  ์ ์–ด๋†“๊ณ  ํ•œ์ฐธ๋™์•ˆ์ด๋‚˜ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ณ  ๋‹ค๋…”๋‹ค. ๋ฐ›๋Š” ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ž˜๋ชป๋œ๊ฑด์ง€ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ฐ›์•„์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ.. ์™œ ์นด๋ฉœํ‘œ๊ธฐ๋ฒ•์ด์•„๋‹ˆ๋ผ HTML์ผ๊นŒ ..?

  • ์นธ์˜ ์˜ค๋ฅ˜๋ฅผ ์ƒˆ๋ฒฝ ๋‚ด๋‚ด ์žก์•˜๋‹ค. ์„œ๋„ˆ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ์žก๊ธดํ–ˆ์ง€๋งŒ,,, ์‚ฌ์‹ค ๋‚ด ์‹œ๊ฐ„์“ฐ๋Š”๊ฑด ์ƒ๊ด€์—†์ง€๋งŒ, ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ์˜ค๋ฅ˜๋ฅผ ๋ชป์žก์€ ๋‚ด ๋จธ๋ฆฌ๊ฐ€ ๋‹ต๋‹ตํ–ˆ๋‹ค... ์„ค๋ช…๋„ ์ž˜ ๋ชปํ•˜๊ณ .. ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์•Œ๋ ค์ค„๋งŒํผ์˜ ๋Šฅ๋ ฅ์ด ๋ถ€์กฑํ•œ ๊ฑธ ๋Š๊ผˆ๋‹ค.. ์–ธ๋„ ์—ด์‹ฌํžˆ ํ•˜์ž

๋‚ด์ผ ํ•ด์•ผํ•  ๊ฒƒ!

  1. ํƒ€์ด๋จธ๋Š” ์‹œ๊ฐ„์ด ์ •ํ™•ํ•ด์•ผํ•จ
  2. ํƒ€์ด๋จธ์‹œ๊ฐ„๋ฐ”๊พธ๋Š” ์˜ต์…˜
  3. ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์ €์žฅ
  4. ํšจ๊ณผ์Œ์ด๋‚˜ ๋…ธ๋ž˜ ๋„ฃ๊ธฐ๋„ ํ•ด๋ณด์ž.

3์ผ์ฐจ

  • ์ผ๋‹จ... focusํ•˜๋Š”๊ฑฐ ํ•ด์•ผํ•˜๊ณ , check๋œ๊ฒƒ์€ focus์•„์˜ˆ ์•ˆ๋˜๊ฒŒ ๋ง‰์•„๋†“๊ณ . check๋œ ๊ฒƒ css๋ž‘ rod ์ค„ ์ˆ˜์ •ํ•ด์•ผํ•จ.

  • ์Šคํฌ๋กค ์ด๋ฒคํŠธ ์ถ”๊ฐ€ ์Šคํฌ๋กค ๋‚ด๋ฆด ์‹œ ๋ Œ๋”๋ง. ์–ด๋Š ์‹œ์ . ์˜ฌ๋ฆฌ๋ฉด ๋‹ค์‹œ display:none ?

  • middle์นธ์„ bottom fixed๋กœ ํ•˜๊ณ  ํด๋ฆญ์‹œ ์œ„์•„๋ž˜์ด๋™(์• ๋‹ˆ๋ฉ”์ด์…˜), ํ•˜๋ฉด ๋‹ค์‹œ top fixed

  • ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ 1. ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์ €์žฅ (ํ•„์š”์—†๋Š” ๊ธฐ๋Šฅ์ด๋ผ ์•ˆํ•จ.. ์‹œ๊ฐ„๋•Œ๋ฌธ์•„๋‹˜!) 2. ํƒ€์ด๋จธ ์‹œ๊ฐ„๋ฐ”๊พธ๋Š” ์˜ต์…˜

  1. ํƒ€์ด๋จธ ์ง€์—ฐ์‹œ๊ฐ„ 11์ดˆ์ •๋„๋ฅผ 0.1์ดˆ๋กœ ๋งŒ๋“ค์–ด๋ณด์ž.
  2. ํšจ๊ณผ์Œ์ด๋‚˜ ๋…ธ๋ž˜ ๋„ฃ๊ธฐ๋„ ํ•ด๋ณด์ž.

ํšŒ๊ณ 

  • ์Šคํฌ๋กค์ด๋ฒคํŠธ๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ๊ฒน์น˜๋Š” ํ˜„์ƒ์ด ์žˆ์–ด ํ•œ ๊ฐ€์ง€๋ฅผ ๋น„๋™๊ธฐ๋กœ ๋‘์–ด ํ•ด๊ฒฐํ–ˆ๋‹ค. โ‡’ setTimeout์„ 0์œผ๋กœ ๋‘์–ด ๋น„๋™๊ธฐํ•จ์ˆ˜๋กœ ์ฝœ์Šคํƒ์— ์Œ“์ธ ํ•จ์ˆ˜๋ฅผ ์ „๋ถ€ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์ค‘์— ์‹คํ–‰ํ•˜๊ฒŒ ๋‘์—ˆ๋Š”๋ฐ ๋ณ€ํ™”๊ฐ€ ์—†์—ˆ๋‹ค.. ์•Œ๊ณ ๋ณด๋‹ˆ ์Šคํฌ๋กค ๋‚ด๋ฆด ๋•Œ ํ•˜๋‚˜ํ•˜๋‚˜์— ๋น„๋™๊ธฐ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด ์–ด๋Š์ •๋„์˜ ์‹œ๊ฐ„ ํ…€์„ ๋” ์ค˜์•ผํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. โ‡’ 0ms โ†’ 10ms๋กœ ๋ฐ”๊พธ๋‹ˆ ์ž˜ ๋๋‹ค!
  • ๋ชจ๋ธ๊ณผ ๋ทฐ, ๊ตฌ๋ถ„์„ ์ง€์—ˆ์ง€๋งŒ ๋กœ์ง์ด๋‚˜ ๊ณ„์‚ฐ ๋“ฑ ๋Œ€๋ถ€๋ถ„์„ ๋ทฐ์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์€ ๋งŽ๊ณ , ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š”.. ๋ถ€์กฑํ•ด์„œ ๋งŽ์ด ๋งŒ๋“ค์ง€ ๋ชปํ–ˆ๋‹ค. ์–ด์ œ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์ด์ „ ๊ธฐ์ˆ˜ ๋น ์‚์ฝ”๊ฐ€ ๋งํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ์‹œ๊ฐ„ ์•ˆ์— ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์–ด๋Š์ •๋„ ๊ตฌ์ฒด์ ์ธ ๊ณ„ํš์„ ์„ธ์šฐ๋Š”๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
  • ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ €์žฅ์ด ์ž˜ ์•ˆ๋๋‹ค. ๋งŒ๋“ค ๋–„ ๋ถ€ํ„ฐ ๊ณ ๋ คํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ํ…๋ฐ ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ•ด์ ธ์žˆ์–ด์„œ ์˜ค๋ฅ˜๋ฅผ ๋ชป ์ฐพ์•˜๋‹ค.. ใ…œ

ํฌ๋กฑ์˜ ์ฝ”์ฝ”์•„ ์—์„œ์˜ ๋งˆ์ง€๋ง‰ ๋ง์”€

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋‚˜๋ฅผ ๊นŠ๊ฒŒ ๋ณด๋Š”๊ฒŒ ์ข‹๋‹ค.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋งค๋‹ฌ๋ฆด ํ•„์š”๋Š” ์—†๋‹ค. ๋ฌผ๋ก  ์ค‘์š”ํ•˜์ง€๋งŒ
  • ๋„๊ตฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ตํžˆ๋ ค๊ณ  ํ•œ๋‹ค๊ธฐ๋ณด๋‹จ ์ ์–ด๋„ 6๊ฐœ์›”๋™์•ˆ ๋ฐ”๋‹๋ผ๋กœ ๋ฐฐ์› ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

12/3 Update

  • LocalStorage ์ €์žฅ
  • Focus ์‹œ ์‚ญ์ œ, ์ˆ˜์ • ์‹œ ํ’€๋ฆฌ๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •

About

Pomodoro-timer on Vanila JS


Languages

Language:JavaScript 48.3%Language:CSS 42.9%Language:HTML 8.8%