728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
- ์ค๋์ ํ ๊ธ์์ฉ ๋ณด์ฌ์ฃผ๋ Typewriting ์ ๋๋ฉ์ด์ ์ ๋ง๋ค์ด๋ณด์๋ค.
- Click Me! ๋ฒํผ์ ํด๋ฆญํ๋ฉด "Hi! I'm Seoyun. Good to see U." ๋ฌธ๊ตฌ๊ฐ ํ ๊ธ์์ฉ ๋์จ๋ค.
- ์ด๋ฒ ๊ธฐ๋ฅ์ setTimeout ํจ์๋ฅผ ์ด์ฉํด์ ๋ง๋ค ์ ์์๋ค.
๐ HTML
<div class="container">
<button>Click Me!</button>
<h1>Hi! I'm Seoyun. Good to see U.</h1>
</div>
- ๋จผ์ HTML ํ์ผ์ ๋ฒํผ๊ณผ ๋์์ผํ๋ ๋ฌธ๊ตฌ์ ๋ด์ฉ์ ์์ฑํด์ค๋ค.
๐ CSS
.container {
width: 100%;
margin: 50px;
}
h1 {
width: 100%;
text-align: center;
display: none;
}
button {
display: block;
margin: 30px auto;
width: 130px;
padding: 5px 10px;
border: none;
border-radius: 5px;
background: blueviolet;
color: white;
font-weight: bold;
font-size: 20px;
}
- ์ด๋ฒ ์ค์ต์์ css ๋ ์ค์ํ์ง ์๋ค. ๊ทธ๋ฅ ์ทจํฅ๊ป ๊พธ๋ฏธ๋ฉด ๋๋ค.
(๋ณด๋ผ์์ ์ข์ํด์ ๋ณด๋ผ์ ๋ฒํผ์ ๋ง๋ค์๋ค.) - h1 ํ๊ทธ์ ๋ฌธ๊ตฌ๋ค์ ๋ฐ๋ก ๋ณด์ฌ์ฃผ์ด๋ ๋์ง๋ง ์ง์~ ํ๋ ๋๋์ผ๋ก ๋์ค๊ธธ ์ํด์ display : none ์ ํตํด ์ผ๋จ ์จ๊ฒจ์ฃผ์๋ค.
๐ JavaScript
var h1Tag = document.querySelector('h1'); // h1 ํ๊ทธ ์์ฒด ์๋ฏธ
var h1Letter = document.querySelector('h1').innerHTML; // h1 ํ๊ทธ ๋ด์ฉ ์๋ฏธ
$('button').click(function(){
$('h1').show();
animation(h1Tag, h1Letter);
})
function animation(tag, letter){
tag.innerHTML = '';
for(let i=0; i < letter.length; i++){
setTimeout(function(){
tag.innerHTML += letter[i]
}, (i+1)*100)
}
}
- ์ค๋์ ํฌ์ธํธ๋ JavaScript ์ ์๋ค.
- ๋ฒํผ์ ํด๋ฆญํ์ ๋, ์ฐ์ ์จ๊ฒจ๋์๋ h1 ํ๊ทธ๊ฐ ๋ณด์ฌ์ผ ํ๋๋ฐ, ๋ชจ๋ ๊ธ์๊ฐ ํ ๋ฒ์ ๋ณด์ด๋ ๊ฒ ์๋๋ผ ์์์๋ถํฐ ํ ๊ธ์์ฉ ์์ฐจ์ ์ผ๋ก ๋ณด์ฌ์ผ ํ๋ค.
- ๋ฐ๋ผ์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ง animation ์ด๋ผ๋ ํจ์๋ฅผ ๋จผ์ ๋ง๋ค์ด์ฃผ์๋ค.
- animation ํจ์์ ์๋๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฐ์ , ์๋ h1 ํ๊ทธ ์์ ๋ด์ฉ์ ๋ค ์ง์์ ์๋ณด์ด๊ฒ ํด์ผ ํ๋ค. (tag.innerHTML = ' ';)
์ด ๋, animation ํจ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ tag ์ letter ๋ JavaScript ๋ฌธ๋ฒ์ด๋ฏ๋ก jQuery ๋ฌธ๋ฒ์ด ์๋ JavaScript ๋ฌธ๋ฒ์ผ๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋ฏ๋ก innerHTML ์ ์ฌ์ฉํ์๋ค. - ๊ทธ ๋ค์, h1 ํ๊ทธ ๋ด์ ๊ธ์ ์๋งํผ for ๋ฌธ์ ๋ฐ๋ณตํ๋ฉฐ, ๋ฐ๋ณตํ ๋๋ง๋ค ๊ธ์๋ฅผ ํ๋์ฉ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ค.
์ฌ๊ธฐ๊น์ง ์๊ฐํ๋ฉด for ๋ฌธ ์์ tag.innerHTML += letter[i] ๋ฅผ ๋ฃ์ผ๋ฉด ๋ ๊ฒ๊ฐ๋ค๋ ๊ฒ๊น์ง๋ ๊ฐ์ด ์จ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ฐจํผ ์ด๊ฒ๋ง ์จ๋ดค์.. ์ต์ข ๋จ๊ณ๋ง ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ฏ๋ก ํ๋ฉด์๋ ๊ทธ๋ฅ h1 ํ๊ทธ์ ๋ด์ฉ ๋ฃ์ ๊ฑฐ๋ ๋์ผํ๊ฒ ๋์จ๋ค. - ํฌ์ธํธ๋ ์ ๋นํ ์๊ฐ๊ฐ๊ฒฉ์ ์ฃผ๋ฉด์ ์ถ๊ฐ๊ฐ ๋์ด์ผ ํ๋ ๊ฒ!
- for ๋ฌธ์ ์์ฃผ ๋น ๋ฅด๊ฒ ๋ฐ๋ณต์ด ์งํ๋๋ฏ๋ก ์๊ฐ ๋ถ๋ถ์ ๊ทธ๋ฅ ์ซ์๋ง ์ ์ด๋ฒ๋ฆฌ๋ฉด ๊ธ์๊ฐ ๋์ค๋ ์๊ฐ ์ฌ์ด์ ๊ฐ๊ฒฉ์ด ์๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ชจ๋ ๊ธ์๋ฅผ 1์ด(1000ms)๋ก ์ค์ ํ๋ค๊ณ ํ๋ฉด ์ฒซ๋ฒ์งธ ๊ธ์๋ for ๋ฌธ์ด ๋์๋ง์ ์ฝ 1์ด ํ, ๋๋ฒ์งธ ๊ธ์๋ for ๋ฌธ์ด ๋์๋ง์ ์ฝ 1์ด ํ ์ด๋ฐ ์์ผ๋ก ๋์ค๊ธฐ ๋๋ฌธ์ h1 ํ๊ทธ์ ๋ด์ฉ์ด ๊ฑฐ์ ๋์์ ๋ณด์ฌ์ง๊ฒ ๋๋ค.
(ํท๊ฐ๋ฆฌ์ง ๋ง์. ๊ทธ ์ ๊ธ์๊ฐ ๋์จ ํ 1์ด๊ฐ ์๋๋ค.) - ๋ฐ๋ผ์, ๊ธ์๊ฐ ๋์ค๋ ์๊ฐ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ฃผ๊ธฐ ์ํด i ๋ฅผ ํ์ฉํ๋ค.
- ๋์ ๊ฒฝ์ฐ (i+1)*100 ์ ๋๋ก ์๊ฐ์ ์ค์ ํ๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด 0๋ฒ์งธ๋ 100ms, 1๋ฒ์งธ๋ 200ms, 2๋ฒ์งธ๋ 300ms... ์ด๋ฐ ์์ผ๋ก ๋๊ธฐ ๋๋ฌธ์ ๊ธ์๊ฐ ์ถ๊ฐ๋๋ ์๊ฐ ๊ฐ๊ฒฉ์ด 100ms ๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ์๋ฅผ ๋ค์ด, ๋ชจ๋ ๊ธ์๋ฅผ 1์ด(1000ms)๋ก ์ค์ ํ๋ค๊ณ ํ๋ฉด ์ฒซ๋ฒ์งธ ๊ธ์๋ for ๋ฌธ์ด ๋์๋ง์ ์ฝ 1์ด ํ, ๋๋ฒ์งธ ๊ธ์๋ for ๋ฌธ์ด ๋์๋ง์ ์ฝ 1์ด ํ ์ด๋ฐ ์์ผ๋ก ๋์ค๊ธฐ ๋๋ฌธ์ h1 ํ๊ทธ์ ๋ด์ฉ์ด ๊ฑฐ์ ๋์์ ๋ณด์ฌ์ง๊ฒ ๋๋ค.
- ์ฐ์ , ์๋ h1 ํ๊ทธ ์์ ๋ด์ฉ์ ๋ค ์ง์์ ์๋ณด์ด๊ฒ ํด์ผ ํ๋ค. (tag.innerHTML = ' ';)
728x90
๋ฐ์ํ