๊ฐœ๋ฐœ ๐Ÿพ/JavaScript

๋ฆฌ์ŠคํŠธ์— ์• ๋‹ˆ๋ฉ”์ด์…˜ํšจ๊ณผ์ฃผ๊ธฐ

JOTOKKI 2019. 11. 21. 18:10
728x90

 ์›น์˜ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ ์ฐจ ๋งŽ์€ ํšจ๊ณผ๋ฅผ ์Šคํฌ๋ฆฝํŠธ์™€ CSS๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด ๋ณด๋„๋ก ํ• ๊ป˜์š”. 

์ง„์งœ ์ดˆ์ดˆ์ดˆ์ดˆ์ดˆ์ดˆ์ดˆ์ดˆ์ดˆ ๊ฐ„๋‹จํ•œ๊ฑฐ๋ผ์„œ ๋ญ .. ๋„์›€์ด ๋ ๊นŒ ์‹ถ์ง€๋งŽ์€ ์ž…๋ฌธ์ž๋“ค์—๊ฒŒ๋Š” ๋˜ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ž–์•„์š”?????????!

 

์•„๋ฌดํŠผ ์ œ๊ฐ€ ๊ตฌํ˜„ํ•  ํšจ๊ณผ๋Š” ์ด๋Ÿฐ๊ฑฐ์˜ˆ์š”. 

์ง„์งœ ๊ฐ„๋‹จํ•˜์ฅฌ?

ํŠนํžˆ CSS์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ ์•„๋‹ˆ๋ฏ€๋กœ ์Šคํƒ€์ผ์€ ๋ฐฐ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. 

๋ฌผ๋ก  ๊ทธ๋ ‡๋‹ค๊ณ  CSS๋ฅผ ์•„์˜ˆ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์˜ˆ์š” 

 

 

- html 

1
2
3
4
5
6
7
<ul>
    <li class="item">Javascript</li>
    <li class="item">React</li>
    <li class="item">Angular</li>
    <li class="item">Vue</li>
    <li class="item">JQuery</li>
</ul>
cs

 

๊ทธ๋ฆฌ๊ณ  css๋Š” ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ํšจ๊ณผ๋ฅผ ์ค„๊ฒƒ์ธ์ง€ ์ž˜ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค. 

 

๋””ํดํŠธ๋Š” ์ฒ˜์Œ ์•ก์…˜ ๊ทธ๋ฆฌ๊ณ  activeํด๋ž˜์Šค๋ฅผ ์ฃผ์—ˆ์„๋•Œ ๋น„๋กœ์†Œ ์ตœ์ข… ์•ก์…˜์„ ๊ฐ€์งˆ๊บผ๊บผ์˜ˆ์š”.

์ €๋Š” ์ผ๋‹จ ์•„๋ž˜์—์„œ ์œ„๋กœ ์‚ฌ๋ผ๋ฝ ํ•˜๋ฉด์„œ ์˜ฌ๋ผ์˜ค๊ฒŒ ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ ์‹ถ๊ธฐ๋•Œ๋ฌธ์— 

์ผ๋‹จ ์•„๋ž˜์—์„œ ์œ„๋กœ ์˜ฌ๋ผ์˜ค๋ ค๋ฉด ๊ฐ์ฒด๊ฐ€ ํ˜„์žฌ์œ„์น˜๋ณด๋‹ค ์•„๋ž˜์— ์œ„์น˜ํ•ด์•ผ๊ฒ ์ฃ . 

๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ ์ „ ๋‹จ์ˆœํžˆ margin-top์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. 

๋˜ํ•œ ๋ฐ”๋กœ ๋ ์šฉ ํ•˜๊ณ  ๋‚˜ํƒ€๋‚˜๋Š”๊ฒƒ๋ณด๋‹จ ์Šค๋ฅด๋ฅต ํ•˜๋ฉด์„œ ๋‚˜ํƒ€๋‚˜๋ฉด ๋” ๋ฉ‹์žˆ์„๊ฒƒ๊ฐ™์•„ ์ผ๋‹จ์€ ๋ณด์ด์ง€ ์•Š๊ฒŒ 

opacity๋ฅผ 0 ์œผ๋กœ ์ฃผ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด์›€์ง์ž„์„์œ„ํ•ด transition์„ ์ถ”๊ฐ€ํ–ˆ์–ด์š” 

1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
    .item {
        margin-top:80px;
        opacity:0;
        transition: 0.3s ease-in; 
    }
 
    .item.active{
        margin-top: 0;
        opacity:1;
    }
</style>
 
cs

 

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด active ํด๋ž˜์Šค๊ฐ€ ๋ถ™์€ item๋งŒ ํ™œ์„ฑํ™”๊ฐ€ ๋˜๊ฒ ๋„ค์š”. 

๊ทธ๋Ÿฌ๋ฉด ์ฒ˜์Œ ๋กœ๋“œ๋ฌ์„๋•Œ li์— ์ˆœ์ฐจ์ ์œผ๋กœ activeํด๋ž˜์Šค๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋ ๊ฒƒ๊ฐ™์•„์š”. 

 

 

์ฐธ๊ณ ๋กœ for๋ฌธ์„ ์“ฐ๋ฉด ์—ฐ์‚ฐ์ด ๋นจ๋ผ ํ•œ๊บผ๋ฒˆ์— ๋ถ™์€๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒ ์ฃ ? 

์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด์ด๊ธฐ์œ„ํ•ด์„œ๋Š” setInterval์„ ์‚ฌ์šฉํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
    var item = document.querySelectorAll('.item');
    var cnt = 0
 
    function activeFunc(){
        item[cnt].classList.add('active');
        cnt++;    
        if(cnt >= item.length){
            clearInterval(addActive);
        }
    }
 
    var addActive = setInterval(activeFunc, 130);
 
</script>
 
cs

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ œ๋Œ€๋กœ ๋™์ž‘ํ• ๊บผ์˜ˆ์š” !

 

setInterval(function, time) ์„ ์ฃผ์–ด time๋งˆ๋‹ค function์„ ํ˜ธ์ถœํ•˜๊ฒŒ๋˜์š”.

๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— ์„ ํƒindex๋ฅผ ์œ„ํ•ด ์„ ์–ธํ•œ cnt๋ณ€์ˆ˜๋Š” global๋ณ€์ˆ˜๋กœ ๋นผ์ค˜์•ผ ํ•˜๊ตฌ์š”. 

๊ทธ ์ดํ›„์—๋„ ๋™์ž‘ํ•˜๋Š”๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ์œ„ํ•ด cnt ๊ฐ€ ๋ชจ๋“  item์— activeํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋’ค

clearInterval(setIntervalfunction) ์œผ๋กœ ์ข…๋ฃŒ์‹œ์ผœ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

 

๋ฐ˜์‘ํ˜•