-
[JavaScript/VanillaJS] ์กฐ์ฉํ ์๋(silence alarm) ์น ์ฑ ๋ง๋ค๊ธฐ - 1javascript 2019. 4. 23. 14:04
์๋ ํ์ธ์, Jerry์ ๋๋ค.
ํฌ์คํ ์ ์์ ์กฐ์ฉํ ์ํฉ์ ๊ฐ์ ํ๊ณ ์์ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
ํ์ฌ๋ ์กฐ์ฉํ ๊ณณ์์ ๋ฐ์คํฌํ ํน์ ๋ ธํธ๋ถ์ผ๋ก ์ผ์ ๋ณด๊ณ ์์ต๋๋ค. ์๋์ ๋ง์ถฐ์ผ ํ๋๋ฐ ์๋ฆฌ๋ชจ๋๋ก ํ์๋ ์ฃผ์๊ฐ ์กฐ์ฉํฉ๋๋ค. ์ง๋๋ชจ๋๋ก ํ์๋ ์ ๊ฐ ์ง๋์ ์ฒดํฌ ๋ชป ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๊ฐ์ ์ด๋ป๊ฒ ๋ง์ถฐ์ผ ํ ๊น์?
๊ทธ๋์ ์๊ฐํ ์ ๋ง ์ ๋ง ๋งค์ฐ ๋งค์ฐ ๊ฐ๋จํ ์น ์ฑ์ ํ๋ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ด๋ฆ์ ๊ตณ์ด ์ง์ด์ผ ํ๋ค๋ฉด, Silence Alarm์ผ๋ก ์ง์ด๋๊ณ ์์ํ๊ฒ ์ต๋๋ค.
(ํน์ ๊ด์ฐฎ์ ์ด๋ฆ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ XD)
๊ฐ๋จํ ์น ์ฑ์ ๋ฌด์์ด ํ์ํ์ง ์ฒดํฌํด๋ณด๊ฒ ์ต๋๋ค.
1. ํ์ฌ ์๊ฐ
2. (์๋์ด ์ธ๋ฆด)์ค์ ์๊ฐ
3. ์ ์ฐฝ
4. ํ๋ฉด ๋์ ๋๊ฒ ๊น๋นก๊ฑฐ๋ฆฌ๊ธฐ
์ด ์ ๋๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ค์ ํ ์๊ฐ์ด ํ์ฌ ์๊ฐ๊ณผ ๊ฐ์์ง ๋ ์ฐฝ์ด ํ๋ ๋จ๋ฉด์ ๋์ ๋๋ ์์ผ๋ก ํ๋ฉด์ ๊น๋นก๊ฑฐ๋ฆฌ๋ ๊ฒ๋๋ค.
์ ์ ์ฐฝ์?
์ ๋ ๋ฐ์คํฌํ์ผ๋ก ๋ ธ๋๋ฅผ ๋ค์ด์ผ ํ๋ค๋ฉด ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ ํญ์ ํ๋ ์ด๊ณ ์ ํ๋ธ(yotube)๋ก ๊ฐ๋๋ค.
๋ ธ๋์ ์ฉ ํญ์ธ๊ฑฐ์ฃ . ๊ทธ๋ฆฌ๊ณ ๋ ๋ค๋ฅธ ํญ์ ์ด์ด ๋ณผ ์ผ์ ๋ด ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฌ์ฉ์์ ๊ฒฝ์ฐ ์๋ ํ๋ฉด์ ๊ณ์ ์ผ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ ํ๋ฉด์ ์ผ๋ ์ฑ๋ก ์๋ก์ด ํญ์ ์ด์ด ๋ค๋ฅธ ์ ๋ฌด๋ฅผ ๋ณด๋ฌ ๊ฐ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ธฐ์กด์ ์๋ ์น ์ฑ ํ๋ฉด์ด ๊น๋นก์ธ๋ค๊ณ ํด๋ ์ฌ์ฉ์๊ฐ ์์์ฐจ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐฝ์ ์ด์ด์ค๋๋ค.
์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ฝ๋ ์๋์ ๊ธ์ ์์ฑํ๊ฒ ์ต๋๋ค :)
(์ฝ๋๋ธ๋ญ ์ ๋ง ์์์๋ค...)CSS
body { width: 100%; height: 100%; } .container { position: absolute; z-index: 1; width: 100%; height: 100%; top: 0; left: 0; display: table; } .nav { display: table-cell; vertical-align: middle; width: 100%; height: 100%; } .js-alarm{ width: 100%; height: 100%; text-align: center; }
์์๊ฒ ๊พธ๋ฉฐ์ง css๊ฐ ์๋๋๋ค. ๊ทธ๋ฅ ๊ฐ์ด๋ฐ์ ์๊ณ ๋ค์ด๊ฐ๊ณ , inputํ๊ทธ ๋ค์ด๊ฐ๊ฒ ๋์ ๋๋ค. inputํ๊ทธ๋ฅผ ๊ฐ์ด๋ฐ๋ก ์์น์ํฌ ๋ ์ด ๋ฐฉ๋ฒ๋ง๊ณ ํน์ ์์๋ ๋ถ ๊ณ์๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
HTML
<html> <head> <meta charset='utf-8'> <title>ALARM</title> <link rel='stylesheet' href='alarm.css'> </head> <body> <div class='container'> <div class='js-alarm nav'> <h1>00:00:00</h1> <input type='time' min='00:00' max='23:59'/> </div> </div> <script src='alarm.js'></script><!-- alarm.js๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. --> </body> </html>
์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ํ๋ง ์ก์๋๊ณ ์์ํ๊ฒ ์ต๋๋ค.
(์๋ง ๊พธ๋ฏธ๋๊ฑฐ ์์ด ์ด๋๋ก ๋์ด์ง ์๋ ์ถ์ ์๊ฐ..)<head></head>ํ๊ทธ ์์ <link>ํ๊ทธ๊ฐ ๋ณด์ด์๋์? rel์์ฑ์ ๋งํฌ๋ ์์์ด ์ฐธ์กฐ๋์ด ์๋ ๋ฌธ์์ ์๋ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ์ญํ ์ ํฉ๋๋ค.
์, ์ด๊ฒ ๋ฌด์จ ์๋ฆฌ์ธ๊ฐ?
ํ์ฌ HTMLํ์ผ์ alarm.css๋ stylesheet๋ก ์ฐธ์กฐ๋ ๋ฌธ์, ์ฆ ์ด ์์์ ์คํ์ผ์ํธ๋ค. ๋ ์๋ฏธ์ ๋๋ค. rel์ด ์๋ง๋ ๊ด๊ณ๋ฅผ ๋ปํ๋ relationsheep์ ์ฝ์ด์ด์ง ์์๊น ์ถ๋ค์.
@since 2019-04-24
๋ค, ํฌ์คํ ์ดํ ์ฐพ์๋ณด๋ relationsheep์ ์ฝ์ด๊ฐ ๋ง๋๊ฑฐ ๊ฐ์ต๋๋ค.
๊ทธ๋ผ ์ด์ , ์ด CSS๋ฅผ alarm.css, HTML์ alarm.html์ด๋ผ๊ณ ์ ์ฅํ๊ณ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ด๋ณด๊ฒ ์ต๋๋ค.๋ธ๋ผ์ฐ์ ๋ก htmlํ์ผ์ ์ฌ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. ํฌ๋กฌ์ ๊ฒฝ์ฐ ๋จ์ถํค๊ฐ ์๋๋ฐ [CTRL + O]๋ฅผ ๋๋ฅด๊ฒ ๋๋ฉด ํ์ผ์ ์ฌ๋ ์ฐฝ์ด ๋ํ๋ฉ๋๋ค. ๊ฑฐ๊ธฐ์ ์ด๊ณ ์ ํ๋ ํ์ผ์ ์ ํํ์ฌ ์ด๋ฉด ๋ฉ๋๋ค.
2. ์กฐ๊ธ ๋ ๊ฐ๋จํ ์๋ ์๊ณ ๊ท์ฐฎ์ ๋๋ ์๋ ๋ฐฉ๋ฒ์ ํ์ผ์ ์ง์ ๋ธ๋ผ์ฐ์ ์ ๋๋๊ทธํ๋ ๊ฒ์ ๋๋ค. ์๋์ ์ฌ์ง์ ์ฐธ๊ณ ํ์ธ์.
๊ทธ๋ ๋ค๋ฉด, ์์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ HTMLํ์ผ๊ณผ CSSํ์ผ์ด ์ด๋ป๊ฒ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋์ง ์๋์ ์บก์ณ๋ฅผ ํ ๋ฒ ๋ณผ๊น์?
์ ๋ ์ฝ๊ฐ ์ด์ํ์ฃ ? ์ฐ๋ฆฌ๋ ๋ถ๋ช ์์ ์์ฑํ HTML ์ฝ๋์ <h1>00:00:00</h1>๋ผ๊ณ ์์ฑํ๋๋ฐ ์๊ฐ์ด ๋์ค๋ค์.
๋ค; ์ ๋ alarm.js๊ฐ ๋ง๋ค์ด์ ธ ์์๊ธฐ ๋๋ฌธ์ด์์. ์ฐ๋ฆฌ๋ ์๊ฐ์ด ๋์ค๋๋ก ์ด์ javascript๋ฅผ ์์ฑํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ด์ ๋ถํด ์์ฒญ ์ฌ๋ฏธ์์๊ฒ๋๋ค! ๋ค, ์ ์ฌ๋ฐ์์ด์ :)
๊ธฐ๋๋ฅผ ํ๊ณ ์์ผ๋ก ๋์๊ฐ๋ณด์ฃ ! ์ผ๋จ ๋จ๊ณ์ ์ผ๋ก ์ค๋ช ์ ๋๋ ค์ผ๋๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๋์ด์ ์ฌ๋ฆฌ๊ณ ํฌ์คํ ๋ง์ง๋ง์ ์ ์ฒด ์ฝ๋ ์ฌ๋ฆด๊ฒ์.
JS-1
const alarmContainer = document.querySelector('.js-alarm'); const currentTime = alarmContainer.querySelector('h1'); function getTime(){ const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); const seconds = date.getSeconds(); currentTime.innerText = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`; } function init(){ getTime(); } init();
์ฌ๊ธฐ์ JS๋ ํ ๋ฒ ๋๊ณ ์ค๋ช ๋๋ฆด๊ฒ์. (์ค๋ช ์ ๊ธ๋ก๋ง ํ๋ ค๊ณ ํ๋ ์ ๋ ๋ต๋ตํ๊ณ ๊ธ ๋ณด์๋ ๋ถ๋ค๋ ๋ญ๊ฐ ๋ต๋ตํด ํ์ค๊ฑฐ ๊ฐ์ ๋๋์ด ๋ญ๋๋ค. ์์๋ ์ฐ์ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋๋ค์.)
์ผ๋จ HTML์์ class๋ช ์ js-alarm์ด๋ผ๊ณ ๋ช ์ํ div๋ฅผ ๋ณ์์ ๋ด๊ณ , div์ ์์์ธ h1๋ ๋ณ์๋ก ๋ด์ต๋๋ค.1. const : ES6์์ ๋์ ๋ ์์ TYPE์ ๋๋ค. ๊ธฐ์กด์ var ๋ฟ์ด์์ฃ , const์ let์ด ์ถ๊ฐ๋์ด์ var๋ ๊ฑฐ์ ์์ฐ๋ ์ถ์ธ์ ๋๋ค. var ์ let์ ์ฐจ์ด์ ์ด ๊ถ๊ธํ๋ค? https://bejerry.tistory.com/7 ์ ์ ๊ฐ์ ๋ณด๊ณ ์ค์ ๋ ๋ฉ๋๋ค. ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด๋์ต๋๋ค. ๋งํฌ๋ก ์ฌ๋ฆฐ ํฌ์คํ ์ ์ถํ ์ปจํ ์ธ ๋ณด์ํ ๊ณํ์ด๊ตฌ์.
2. querySelector : Document.querySelector()๋ก ์ฌ์ฉํฉ๋๋ค. Document๋ ์ ํ์ ํน์ ์ ํ์ ๋ญ์น๋ก ๋ณด๋ฉด ๋ฉ๋๋ค.
document.querySelector('.js-alarm')์ document์์ class๋ช ์ด js-alarm์ธ Element ์ค์ ์ฒซ ๋ฒ์งธ์ธ ๊ฒ์ ๊ฐ์ ธ์ต๋๋ค.
3. getTime(): ์๊ฐ์ ์ธํ ํด์ฃผ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ์๊ฐ์ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ https://bejerry.tistory.com/11 ์์ ์์ธํ ์ค๋ช ์ ๋ณด์ค ์ ์์ต๋๋ค. ์ด ํฌ์คํ ์ด ์ ์ ๋ฃจ์ฆํด์ง๋ ๊ฒ์ ๊ฐ์ํ์ฌ ์์ธํ ์ค๋ช ์ ์ฌ๊ธฐ์ ํ์ง ์๊ฒ ์ต๋๋ค. (์ฌ์ค ์์์ผ๋ก ๋ ์ฌ๋ฆด ์๊ฐ์ ๋๋ค!) ์์ค์ ๋ฐฑํฑ( ` )๋ ๋ณผ ์ ์์ฃ ?
JS-1-1
currentTime.innerText = `${hours}:${minutes}:${seconds}`;
์์ JS-1 ์์ค๋ 3ํญ์ฐ์ฐ์๋ก ๊ตฌ์ฑ๋์ด ์์๊ณ , ์ด๊ฑด ๊ฐ๋จํ๊ฒ Date๊ฐ์ฒด์์ ์ป์ด์จ ํ์ฌ ์๊ฐ๊ณผ ๋ถ, ์ด ์ ๋๋ค. ๊ทผ๋ฐ ์ด์งธ์ 3ํญ์ฐ์ฐ์๋ก ๋ณต์กํด๋ณด์ด๊ฒ ์์ค๋ฅผ ์งฐ๋? JS-1-1์ฒ๋ผ ์ฝ๋๋ฅผ ์ ์ผ๋ฉด 09:10:08๋ก ๋์ค๋๊ฒ ์๋๋ผ ์ฐธ์ผ๋ก ์ฌํ๊ฒ๋ 9:10:8๋ก ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅ๋ฉ๋๋ค. 0์ด ์์ด๋ ๋๋ ๋ถ๋ค์ 3ํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ JS-1-1 ์์ค์ฒ๋ผ ํ์ ๋ ๋ผ์! ์ ๋ 0์ด ์๋๊ฒ ์ด์ฉ๋๋ค. ๊ทธ๋์ 3ํญ์ฐ์ฐ์๋ก 10์ด๋ผ๋ ์ซ์๋ณด๋ค ์๋๋ฉด ์์ 0์ ๋ถ์ด๊ณ ์๋๋ฉด ๊ทธ๋ฅ ๋ณธ๋ ์๊ฐ์ผ๋ก ๋์ค๋ผ๋ ์๋ฏธ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.
์ ๋ ์ด์ ์ ๊ฒ ๋ฉ์ถฐ์๋ ์๊ฐ์ด ์๋๋ผ ์ค์๊ฐ์ผ๋ก ์๊ณ์ฒ๋ผ ์ด๊ฐ ๋ฐ๋๊ณ , ๋ถ์ด ๋ฐ๋๋๊ฑธ ๋ณด๊ณ ์ถ์ต๋๋ค! ๊ผฌ์ฅ ์ด๋ด ๋ ๋์ค๋๊ฒ ์์ฃ ? ๋ค์ ์ด ์๊ฐ.. ์์(!)
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ