๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/JavaScript jQuery

[JavaScript / jQuery] jQuery ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋‹ฌ์ฐฝ ๋งŒ๋“ค๊ธฐ

by Connecting-the-dots 2022. 3. 4.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ฌ์ฐฝ์ด ์„œ์„œํžˆ ๋œจ๊ณ  ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋‹ฌ์ฐฝ์ด ์„œ์„œํžˆ ์‚ฌ๋ผ์ง€๊ฒŒ ํ–ˆ๋‹ค.

๐Ÿ’œ HTML

<div class="black-bg">
    <div class="white-bg">
        <h4>๋กœ๊ทธ์ธํ•˜์„ธ์š”</h4>
        <form action="success.html">
            <div class="my-3">
                <input type="text" class="form-control" id="email">
            </div>
            <div class="my-3">
                <input type="password" class="form-control" id="password">
            </div>
            <button type="submit" class="btn btn-primary" id="submit">์ „์†ก</button>
            <button type="button" class="btn btn-danger" id="close">๋‹ซ๊ธฐ</button>
        </form> 
    </div>
</div> 

<button class="btn-login">๋กœ๊ทธ์ธ</button>
  • ๋จผ์ € ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ๊ณผ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋œฐ ๋ชจ๋‹ฌ์ฐฝ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. 
  • ๋ชจ๋‹ฌ์ฐฝ์€ ํ™”๋ฉด ์ „์ฒด๋ฅผ ๋ฎ์–ด์•ผ ํ•˜๋ฏ€๋กœ body ํƒœ๊ทธ ์ค‘ ์ œ์ผ ์ƒ๋‹จ์— ๋ชจ๋‹ฌ์ฐฝ ๊ด€๋ จ html ์ด ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’œ CSS

.black-bg {
  width: 100%;
  height: 100%;
  position: fixed;
  background: rgba(0, 0, 0, 0.6);
  z-index: 5;
  padding: 30px;
  visibility: hidden; /* ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค„ ๋•Œ display: none ๋Œ€์šฉ, ์—†์• ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ์Šต๋งŒ ์ˆจ๊น€ */
  opacity: 0;
  transition: all 0.5s;
}

.white-bg {
  background: white;
  border-radius: 5px;
  padding: 30px;
}

.btn-login {
  background: gold;
  border: none;
  margin: 10px;
  padding: 8px 24px;
  border-radius: 5px;
}

.show {
  display: block; // ์ด ๋ถ€๋ถ„์€ Navbar ๋ฅผ ์œ„ํ•œ ์†์„ฑ
  opacity: 1;
  visibility: visible;
}
  • ๋จผ์ € ๋ฐ˜ํˆฌ๋ช…์ธ ๊ฒ€์€ ๋ชจ๋‹ฌ์ฐฝ ๋ฐฐ๊ฒฝ์„ ๋งŒ๋“ค๊ณ  z-index ๊ฐ’์„ ๋„ฃ์–ด ํ™”๋ฉด์„ ๋ฎ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • z-index ๋Š” position: static (๊ธฐ๋ณธ)์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜!
  • ๋ชจ๋‹ฌ์ฐฝ์ด ๋ฟ…!ํ•˜๊ณ  ๋œจ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์„œ์„œํžˆ ๋œจ๊ณ , ๋‹ซํž ๋•Œ๋„ ์„œ์„œํžˆ ๋‹ซํžˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด transition ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.
  • ์ด ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ์ด ๋•Œ๊นŒ์ง€ ํ™”๋ฉด์— ์•ˆ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” display: none ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ด ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด transition ๊ณผ ๊ฐ™์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ์ ์šฉ์ด ์ž˜ ์•ˆ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด visibility : hidden !
  • show ๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ถ™์—ˆ์„ ๋•Œ visibility: visible ์ด ์ ์šฉ๋˜๊ณ , transition ์†์„ฑ์„ ํ†ตํ•ด 0.5์ดˆ ๋™์•ˆ ์ดˆ๊ธฐ๊ฐ’์ด์—ˆ๋˜ opacity: 0 ์ด opacity: 1 ์ด ๋˜๋ฉด์„œ ์„œ์„œํžˆ ๋ชจ๋‹ฌ์ฐฝ์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

๐Ÿ’œ JavaScript

$('.btn-login').eq(0).on('click', function(){
    $('.black-bg').eq(0).toggleClass('show');
})

$('#close').eq(0).on('click', function(){
    $('.black-bg').eq(0).toggleClass('show');
})
  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ, ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ show ํด๋ž˜์Šค๊ฐ€ ๋ถ™์—ˆ๋‹ค ๋–จ์–ด์กŒ๋‹คํ•˜๋ฉด์„œ ๋ชจ๋‹ฌ์ฐฝ์ด ๋ณด์˜€๋‹ค๊ฐ€ ์•ˆ ๋ณด์˜€๋‹ค๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ฒŒ toggleClass ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๋„ฃ์—ˆ๋‹ค.
  • id ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ eq(์ˆซ์ž)์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค๋ฅผ ๋„ฃ์–ด์ค„ ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋„ฃ์–ด๋„ ์ƒ๊ด€์€ ์—†์–ด์„œ ๋„ฃ์—ˆ๋‹ค.(์‚ฌ์‹ค ๋„ฃ๋Š” ์Šต๊ด€์ด ์ƒ๊ฒจ๋ฒ„๋ ค์„œ...)
728x90
๋ฐ˜์‘ํ˜•