๐Ÿ”‘๋ฌด์ž‘์œ„ ์•”ํ˜ธ ์ƒ์„ฑ๊ธฐ

10216 ๋‹จ์–ด beginnerswebdevcssjavascript
HTML, CSS ๋ฐ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Random Password Generator ์•ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Front End Developer Career path์—์„œ Scrimba์„ ๋ณต์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์žฌ๋ฏธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Coding Addict์˜ John๋„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ „์— John์˜ ๋น„๋””์˜ค๋ฅผ ๋ณด์•˜๊ณ  ๊ทธ์˜ ์‹œ์ž‘ ํŒŒ์ผ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ๋” ๋นจ๋ฆฌ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๊ฐ€ ์Šคํƒ€ํ„ฐ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ๋น„๋””์˜ค๋ฅผ ์‹œ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ํŒŒ์ผ๊ณผ ์›ํ•˜๋Š” ๋Œ€๋กœ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค! ์ด ์•ฑ์„ ๋นŒ๋“œํ•œ ํ›„ ์ €๋Š” ์Šคํƒ€ํ„ฐ ํŒŒ์ผ๊ณผ ๊ทธ ์ด๋ฉด์˜ ํž˜์— ๋Œ€ํ•ด ๋” ์ž˜ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!


๋‹ค์Œ์€ ์ตœ์ข… ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.



์ด ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ์•„์ด๋””์–ด๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 4๊ฐœ์˜ ์ž„์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด UI์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋จผ์ € HTML๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. HTML์€ ๋ช‡ ๊ฐœ์˜ ์ œ๋ชฉ, ๋‹จ๋ฝ ๋ฐ 4๊ฐœ์˜ ๋นˆ ์ž…๋ ฅ 4๊ฐœ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ•„๋“œ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ ์•„์ด์ฝ˜์ด ์žˆ์–ด์•ผํ–ˆ์ง€๋งŒ ๊ทธ ๋‹น์‹œ์—๋Š” ๊ทธ ๋ถ€๋ถ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ˜‚ ๊ทธ๋ž˜์„œ ๋Œ€์‹ ์— ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค!

๋‹ค์Œ์œผ๋กœ CSS ์ž‘์—…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋งŽ์€ CSS๋Š” ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์œ„์˜ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ ๋‹ค์‹œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์€ CSS ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

body {
  background: var(--backgroundColor);
  font-family: var(--bodyFont);
  font-weight: 400;
  line-height: 1.75;
  color: var(--textColor);
}

p {
  margin-top: 0;
  margin-bottom: 1.5rem;
  max-width: 40em;
}


ํŒŒ์ผ ๋งจ ์œ„์— ๋ชจ๋“  CSS ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‚˜์ค‘์— ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSS ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์ด๋ฒˆ์ด ์ฒ˜์Œ์ด์—ˆ๊ณ  ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋งˆ์นจ๋‚ด ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! JavaScript๋กœ ์ด๋™ํ•˜๊ธฐ ์ „์— ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€๋Š” CSS๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฒ˜์Œ์— NOT ์Šคํƒ€ํ„ฐ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•œ ๋งŽ์€ ๊ทผ์œก ๊ธฐ์–ต์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ๊ตฌ์ถ•ํ–ˆ๋‹ค๋ฉด ๊ฐœ์ธ ๋˜๋Š” ํ”„๋ฆฌ๋žœ์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ ์Šคํƒ€ํ„ฐ ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋‹ค์‹œ John์€ ์ž์‹ ์˜ ์ฑ„๋„์—์„œ ์ด์œ ์™€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์˜ ๋น„๋””์˜ค๋ฅผ ๋ณธ ํ›„์— ๋‚˜๋Š” ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ๋‚ด ์ทจํ–ฅ์— ๋งž๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์˜ ๋น„๋””์˜ค๋Š” ์กฐ๊ธˆ ๊ธธ์ง€๋งŒ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค! ํ”„๋กœ์ ํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋ ค๋Š” ๊ฒฝ์šฐ! ์ด์ œ ์ผ๋ถ€ JavaScript๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

let letter = "abcdefghijklmnopqrstuvqaxyz"
letter += letter.toUpperCase()
letter += "@#$&*(){}?|!^-+=/"
const lettersArray = Object.assign([], letter)
 let pw1 = document.getElementById("pw1")
 pw1.value = "Cake"

 let pw2 = document.getElementById("pw2")
 pw2.value = "is"

 let pw3 = document.getElementById("pw3")
 pw3.value = "a"

 let pw4 = document.getElementById("pw4")
 pw4.value = "Lie"



๋น„๋ฐ€๋ฒˆํ˜ธ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์žฅ JavaScript ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ๋™์ผํ•œ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ผ๋ถ€ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Assign์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋งํฌ๋ฅผ ํ†ตํ•ด mdn ๋ฌธ์„œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค! (๐Ÿ˜‚) ๋งˆ์นจ๋‚ด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฐ€ Password ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค!


 function generatePassword(){
     var message1 = ""
     var message2 = ""
     var message3 = ""
     var message4 = ""
     for(let i = 0; i < 13; i++){
        message1 += lettersArray[Math.floor(Math.random() * letter.length)]
        message2 += lettersArray[Math.floor(Math.random() * letter.length)]
        message3 += lettersArray[Math.floor(Math.random() * letter.length)]
        message4 += lettersArray[Math.floor(Math.random() * letter.length)]
     }
     pw1.value = message1
     pw2.value = message2
     pw3.value = message3
     pw4.value = message4
 }


์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” 13์ž๋กœ ํ•˜๋“œ ์ฝ”๋”ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ๊ฐ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!
์ด๊ฒƒ์œผ๋กœ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€!
  • ์‹œ์ž‘ CSS ํŒŒ์ผ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐœ์ฒด.ํ• ๋‹น
  • ์ž…๋ ฅ ์ƒ์ž์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด .Value! ๋””
  • ๋งˆํฌ ๋‹ค์šด ์“ฐ๋Š” ๋ฐฉ๋ฒ•

  • ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ์œ„ํ„ฐ์™€ Dev Vlog๊ฐ€ ์žˆ๋Š” YouTube ์ฑ„๋„์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๋‚จ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ํŽธ์—์„œ ๋งŒ๋‚˜์š”!

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ