Animated Rainbow Nyan Cat

โœจ ๋ณ€์ˆ˜, ์‚ฌ์น™์—ฐ์‚ฐ ๊ณผ์ œ


๐Ÿ’ก ์ด์ž์œจ ๊ณ„์‚ฐ

 ์ฒซ ์˜ˆ๊ธˆ์•ก์ด 5๋งŒ์› ๋ฏธ๋งŒ์ด๋ฉด ์ด์œจ์ด ์—ฐ 15ํผ์„ผํŠธ,
์ฒซ ์˜ˆ๊ธˆ์•ก์ด 5๋งŒ์› ์ด์ƒ์ด๋ฉด ์ด์œจ์ด ์—ฐ 20ํผ์„ผํŠธ๊ฐ€ ๋˜๋Š”๋ฐ
๋ณ€์ˆ˜์— ์˜ˆ๊ธˆ์•ก์„ ๋„ฃ์œผ๋ฉด 2๋…„ ํ›„์˜ ์ด ์˜ˆ๊ธˆ์•ก์„ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅ๋˜๋„๋ก ํ•ด๋ผ

 

js
var ์˜ˆ๊ธˆ์•ก = 10000;
var ๋ฏธ๋ž˜์˜ˆ๊ธˆ์•ก = 0;

if(์˜ˆ๊ธˆ์•ก>50000){
	๋ฏธ๋ž˜์˜ˆ๊ธˆ์•ก= ์˜ˆ๊ธˆ์•ก*(1.2)*(1.2);
}
else{
	๋ฏธ๋ž˜์˜ˆ๊ธˆ์•ก= ์˜ˆ๊ธˆ์•ก*(1.15)*(1.15);
}
console.log(๋ฏธ๋ž˜์˜ˆ๊ธˆ์•ก)

๐Ÿ˜ ์ƒ๊ฐํ•ด ๋ณผ ์ : ๊ฑฐ๋“ญ์ œ๊ณฑํ•˜๋ ค๋ฉด **์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. var ๋ฏธ๋ž˜์˜ˆ๊ธˆ์•ก = ์˜ˆ๊ธˆ์•ก * (1.15) ** 2; ์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก ์ปคํ”ผ ๋ฆฌํ•„์–‘ ๊ณ„์‚ฐ

๋งˆ์‹  ์ปคํ”ผ์˜ 2/3๋งŒํผ ์ด 2๋ฒˆ ๋ฆฌํ•„ํ•ด์ฃผ๋Š” ์นดํŽ˜๊ฐ€ ์žˆ๋‹ค. ์ฒ˜์Œ ์ฃผ๋ฌธํ•œ ์ปคํ”ผ ์–‘์— ๋”ฐ๋ผ ์ตœ๋Œ€ํ•œ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋Š” ์ปคํ”ผ๋ฅผ ์ฝ˜์†”์ฐฝ์— ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒ˜์Œ์— 90ml์ฃผ๋ฌธํ•˜๋ฉด ์ฒซ ๋ฆฌํ•„์€ 60ml, ๋‘๋ฒˆ์งธ๋ฆฌํ•„์€ 40ml๋ฅผ ํ•ด์ค€๋‹ค
js
	var first = 360;
        var maxCoffee = first+ first*(2/3)+ first*(2/3)*(2/3);
        console.log(maxCoffee);

๐Ÿค” ์ฃผ์˜์ : ์•„๋ฌด์ƒ๊ฐ์—†์ด var maxCoffee = first*(2/3)*(2/3); ์ด๋Ÿฐ์‹์œผ๋กœ ์“ฐ์ง€ ์•Š์„๊ฒƒ. ๋ฌธ์ œ๋ฅผ ์ž˜ ์ฝ์–ด๋ณด๋ฉด ์ฒซ๋ฒˆ์งธ์˜ ๋ฆฌํ•„์ด ๋”ํ•ด์ง€๊ณ  ๋‘๋ฒˆ์งธ์˜ ๋ฆฌํ•„์ด ๋”ํ•ด์ง€๋Š” ๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก ํ€ด์ฆˆ UI ๋งŒ๋“ค๊ธฐ

๋‹ต์„ ๋งž์ถ”๋ฉด alert('์„ฑ๊ณต');
๋‹ต์„ 3๋ฒˆ ์ฐ์–ด์„œ ๋ชป๋งž์ถ”๋ฉด alert('๋ฐ”๋ณด') ๋ฅผ ๋„์›Œ์ฃผ์ž
html
<p>ํƒœ์กฐ ์ด์„ฑ๊ณ„๊ฐ€ ํƒœ์–ด๋‚œ ๋…„๋„๋Š”?</p>
<input type="text" id="answer">
<button id="send-answer">์ œ์ถœ</button>

<script>
    var cnt=0;
    document.getElementById('send-answer').addEventListener("click", function () {
        if(document.getElementById("answer").value == "1335"){
            alert('์„ฑ๊ณต');
            cnt=0;
        }else{
            cnt++;
            if(cnt>2){
                alert('๋ฐ”๋ณด');
            }
        }
    });
</script>


๐Ÿ’ก ๋ฌดํ•œ์ปคํ”ผ๋ฆฌํ•„

์œ„์˜ ๋ฌธ์ œ์—์„œ ์ปคํ”ผ๋ฆฌํ•„์„ ๋ฌดํ•œ์œผ๋กœ ํ•ด์ค€๋‹ค๋ฉด ์ฒ˜์Œ ๋‹ด์•„์ฃผ๋Š” ์ปคํ”ผ๊ฐ€ 360ml์ผ๋•Œ ์ด ๋ช‡ ml์˜ ์ปคํ”ผ๋ฅผ ๋งˆ์‹ค ์ˆ˜ ์žˆ์„๊นŒ?

๋ฌดํ•œ์œผ๋กœ ๋‹ด์•„์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด 

var maxCoffee = first+ first\*(2/3)+ first\*(2/3)\*(2/3)+first\*(2/3)\*(2/3)\*(2/3)+first\*(2/3)\*(2/3)\*(2/3)\*(2/3)+ ....


์ด๋Ÿฐ์‹์œผ๋กœ ๋์ด ์—†์„ ๊ฒƒ์ด๋‹ค.
์ด๊ฒƒ์„ ๋ฌดํ•œ ๋“ฑ๋น„๊ธ‰์ˆ˜์˜ ํ•ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค

๋‹คํ–‰ํžˆ 2/3์€ -1์ดˆ๊ณผ 1๋ฏธ๋งŒ์ด๋ฏ€๋กœ ๊ฐ’์ด ์ˆ˜๋ ดํ•˜๊ณ  ๊ทธ ํ•ฉ์€ first*1/(1-2/3)์ด ๋  ๊ฒƒ์ด๋‹ค.
์ด์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

	var first = 360;
        var maxCoffee = first*(1/(1-2/3));
        console.log(maxCoffee);

๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ณผ๋Š” ์›๋ž˜ 1080์ด ๋‚˜์™€์•ผ ํ•˜๋‚˜, ๋ถ€๋™ ์†Œ์ˆ˜์  ์—ฐ์‚ฐ์˜ ํ•œ๊ณ„๋•Œ๋ฌธ์— ์ฝ˜์†”์ฐฝ์—๋Š” 1079.999999๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ toFixed๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ˜์˜ฌ๋ฆผํ•ด์ค€๋‹ค.

	var first = 360;
        var maxCoffee = (first*(1/(1-2/3))).toFixed();
        console.log(maxCoffee);

toFixed์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ํ•˜๋‹จ์— ์„œ์ˆ ํ•  ์˜ˆ์ •์ด๋‹ค


โœจ setTimout ํƒ€์ด๋จธ


๐Ÿ”Ž setTimeout

 

setTimeout(function(){},1000)

1000ms ํ›„์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป

setTimeout(function(){document.querySelector(".alert").style.display='none'},5000)

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด 5์ดˆ๋’ค์— ํ•ด๋‹น div๊ฐ€ ์ˆจ๊ฒจ์ง„๋‹ค.

 

html
    <div class="alert alert-danger">
        5์ดˆ ์ด๋‚ด ๊ตฌ๋งค์‹œ ์‚ฌ์€ํ’ˆ ์ฆ์ •!
    </div>
js
setTimeout(function(){document.querySelector(".alert").style.display='none'},5000)

setInterval(function(){},1000)

1์ดˆ ๋งˆ๋‹ค ์ฝ”๋“œ ์‹คํ–‰๋จ


๐Ÿ“‹ 1์ดˆ๋งˆ๋‹ค 1์”ฉ ๊ฐ์†Œ๋˜๋Š” ์ฝ”๋“œ

html
    <div class="alert alert-danger">
        <h id="num">5</h>
        ์ดˆ ์ด๋‚ด ๊ตฌ๋งค์‹œ ์‚ฌ์€ํ’ˆ ์ฆ์ •!
    </div>
js
  initialTime=5;
  function timer(){
    initialTime--;
    document.getElementById("num").innerHTML=initialTime;
  }
  setTimeout(function(){document.querySelector(".alert").style.display='none'},5000)
  setInterval(timer,1000)

๐Ÿค” ์ฃผ์˜ํ•  ์ : js์—์„œ setInterval(timer(),1000) ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์™œ ์•ˆ๋˜๋‚˜ ์‹ถ์—ˆ๋‹ค.. ๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„์•ผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœ๋œ๋‹ค.


โœจ ์ •๊ทœ์‹์œผ๋กœ ์ด๋ฉ”์ผ ํ˜•์‹ ๊ฒ€์ฆ


๐Ÿ”Ž ๋ฌธ์ž ๊ฒ€์‚ฌ

'๋ฌธ์ž'.includes('์ฐพ์„๋‹จ์–ด')

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฌธ์ž๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

/abc/.test('abcdef')

/์ •๊ทœ์‹/.test(์ •๊ทœ์‹์œผ๋กœ ๊ฒ€์‚ฌํ•ด๋ณผ๋ฌธ์ž)
๋“ค์–ด์žˆ์œผ๋ฉด true, ์—†๋‹ค๋ฉด false๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค

/[a-d]/.test('aefg')

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

/\S/.test('abcde')

์•„๋ฌด๋ฌธ์ž๊ฐ€ ์žˆ๋А๋ƒ.. true๋ฅผ ์ถœ๋ ฅ

/^a/.test('abcde')

a๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ

/e$/.test('abcde') 

e๋กœ ๋๋‚˜๋Š” ์ง€ ๊ฒ€์‚ฌ

/(e|f)/.test('abcde') 

e๋˜๋Š” f๊ฐ€ ์žˆ๋Š” ์ง€ ๊ฒ€์‚ฌ

/a+/

a์™€ ์ผ์น˜ํ•˜๋ฉด ๋ฐ˜๋ณตํ•ด์„œ ์ฐพ์•„๋‹ฌ๋ผ๋Š” ๋ง. ex. aaaaa

/\S+k/

๋ฌธ์ž ์—ฌ๋Ÿฌ๊ฐœ ๋‹ค์Œ์— k๊ฐ€ ์žˆ๋А๋ƒ๋ฅผ ๊ฒ€์‚ฌ
aaaaak
ccck ์ด๋Ÿฐ๊ฑธ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

/\S+@\S+\.\S+/

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ด๋ฉ”์ผ ํ˜•์‹์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค. (ex. dkffsda@naver.com)
\S+ ์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ๋‚˜์—ด๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ


๐Ÿ“‹  ํผ ์ „์†ก์‹œ ํ˜•์‹ ๊ฒ€์ฆ

js
  document.querySelector("form").addEventListener("submit", function (e) {
    if (document.getElementById("email").value == "") {
      e.preventDefault();
      alert("์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•˜์„ธ์š”");
    }else if(!/\S+@\S+\.\S+/.test(document.getElementById("email").value)){//์ด๋ฉ”์ผ ํ˜•์‹ ๋ชป์ง€ํ‚ฌ ๊ฒฝ์šฐ
      e.preventDefault();
      alert('์ด๋ฉ”์ผ ํ˜•์‹์„ ์ง€์ผœ์ฃผ์„ธ์š”');
    }
    if (document.getElementById("pw").value == "") {
      e.preventDefault();
      alert("๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
    } else if (document.getElementById("pw").value.length < 6) {
      e.preventDefault();
      alert("๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 6์ž ์ด์ƒ ์ž…๋ ฅํ•˜์„ธ์š”");
    } else if(!/[A-Z]/.test(document.getElementById("pw").value)){//๋Œ€๋ฌธ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ
      e.preventDefault();
      alert("๋Œ€๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”");
    }
  });

โœจ ์บ๋Ÿฌ์…€(์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ)

๋ธŒ๋ผ์šฐ์ € ํญ ==100vw

ํ™”๋ฉด์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋œ๋‹ค.

float : left;

์™ผ์ชฝ์œผ๋กœ ๋ฐฐ์น˜

<div style="overflow: hidden"\>

๋„˜์น˜๋Š” ์š”์†Œ๋ฅผ ์ˆจ๊ฒจ๋‹ฌ๋ผ

transform: translateX(-100vw);

์˜†์œผ๋กœ 100vw์”ฉ ๋„˜๊ฒจ๋‹ฌ๋ผ

transition:all 1s;

์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฃผ๊ธฐ


๐Ÿ“‹ ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ์ขŒ์šฐ ์ด๋ฏธ์ง€

์ธ์Šคํƒ€๊ทธ๋žจ ๊ฐ™์ฃ ? ๐Ÿค“

html
    <div style="overflow: hidden">
        <div class="slide-container">
            <div class="slide-box">
                <img src="food1.jpg">
            </div>
            <div class="slide-box">
                <img src="food2.jpg">
            </div>
            <div class="slide-box">
                <img src="food3.jpg">
            </div>
        </div>
    </div>
    <button class="slide-1">1</button>
    <button class="slide-2">2</button>
    <button class="slide-3">3</button>
js
  document.querySelector(".slide-2").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform = "translateX(-100vw)";
  });
  document.querySelector(".slide-3").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform = "translateX(-200vw)";
  });
  document.querySelector(".slide-1").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform = "translateX(0vw)";
  });
css
.slide-container {
  width: 300vw;
  transition: all 1s;
}
.slide-box {
  width: 100vw;
  float: left;
}
.slide-box img {
  width: 100%;
}

๐Ÿ“‹ ์ด์ „, ๋‹ค์Œ ๋ฒ„ํŠผ ์ถ”๊ฐ€

html
<div style="overflow: hidden">
        <div class="slide-container">
            <div class="slide-box">
                <img src="food1.jpg">
            </div>
            <div class="slide-box">
                <img src="food2.jpg">
            </div>
            <div class="slide-box">
                <img src="food3.jpg">
            </div>
        </div>
    </div>
    <button class="prev">์ด์ „</button>
    <button class="slide-1">1</button>
    <button class="slide-2">2</button>
    <button class="slide-3">3</button>
    <button class="next">๋‹ค์Œ</button>
js
  document.querySelector(".slide-2").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform =
      "translateX(-100vw)";
  });
  document.querySelector(".slide-3").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform =
      "translateX(-200vw)";
  });
  document.querySelector(".slide-1").addEventListener("click", function () {
    document.querySelector(".slide-container").style.transform =
      "translateX(0vw)";
  });
  var nowPic = 1; //ํ˜„์žฌ๋ณด๊ณ ์žˆ๋Š” ์‚ฌ์ง„
  document.querySelector(".prev").addEventListener("click", function () {//์ด์ „๋ฒ„ํŠผ
    if (nowPic > 1) {
      document.querySelector(".slide-container").style.transform =
        "translateX(" + -100 * (nowPic-2) + "vw)";
      nowPic--;
    }
  });
  document.querySelector(".next").addEventListener("click", function () {//๋‹ค์Œ๋ฒ„ํŠผ
    if (nowPic < 3) {
      document.querySelector(".slide-container").style.transform =
        "translateX(" + -100 * nowPic + "vw)";
      nowPic++;
    }
  });
css
.slide-container {
  width: 300vw;
  transition: all 1s;
}
.slide-box {
  width: 100vw;
  float: left;
}
.slide-box img {
  width: 100%;
}

โœจ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฃผ์˜์ 


๐Ÿ”Ž ์†Œ์ˆ˜์  ์—ฐ์‚ฐ์‹œ ์ฃผ์˜

 

console.log(1.1+0.3)

1.4๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ณ  1.40000000001 ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š”๋ฐ, 2์ง„๋ฒ•์˜ ๋ฌธ์ œ๋‹ค.
๊ทธ๋ž˜์„œ ์†Œ์ˆ˜์  ์—ฐ์‚ฐ์€ ์ด๋Ÿฐ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


๐Ÿ”Ž ์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผ

์œ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” toFixed๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

console.log( (1.1 + 0.3).toFixed(1) );

์ˆซ์ž.toFixed(์†Œ์ˆ˜๋’ค์˜ ์ž๋ฆฟ์ˆ˜)
์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , 0์—์„œ 100๊นŒ์ง€์˜ ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์‹์€ ์†Œ์ˆ˜์  1์ž๋ฆฌ์ˆ˜๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ 1.4์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜ ์ž๋ฆฌ์— ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด 0์ด ๋“ค์–ด๊ฐ„๋‹ค.
๐Ÿค”์ฃผ์˜์ : ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜๋ฏ€๋กœ ์ˆซ์ž๋กœ ์“ฐ๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ์ˆซ์ž๋กœ ๋ณ€ํ™˜์‹œ์ผœ์•ผ ํ•œ๋‹ค.


๐Ÿ”Ž ์ˆซ์ž๋กœ ๋ณ€ํ™˜

parseFloat('100')

์‹ค์ˆ˜(not mistake)๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค

parseInt('100')

์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.


๐Ÿ’ก ๋ถ„,์ดˆ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ms๋‹จ์œ„๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

 

        function StoMs(min,sec){
            return (min*60+sec)*1000;
        }
        console.log(StoMs(1,30));
        console.log(StoMs(2,10));

๐Ÿ’ก ๊ฐ€๊ฒฉ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ž…๋ ฅํ•˜๋ฉด 10% ํ• ์ธ๊ฐ€ ์•Œ๋ ค์ฃผ๊ธฐ

 

        function discount(price,ifFirst){
            var finalPrice=(price*0.9).toFixed(1);
            if(ifFirst==true){
                finalPrice-=1.5;
            }
            return finalPrice;
        }
        console.log(discount(70,false));
        console.log(discount(10,true));

 

'๐Ÿ“š Front-End Study with me' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Javascript ์ •๋ฆฌ โ‘ฅ  (0) 2024.05.17
Javascript ์ •๋ฆฌ โ‘ค  (0) 2024.05.01
Javascript ์ •๋ฆฌ โ‘ฃ  (0) 2024.04.22
Javascript ์ •๋ฆฌ โ‘ก  (1) 2024.03.28
Javascript ์ •๋ฆฌ โ‘   (0) 2024.03.25