๐Ÿ”ฅ [UIUX] 0204 JAVASCRIPT Coding, ์ฝ”๋”ฉ ์ดˆ๊ธ‰~๊ณ ๊ธ‰ 19

You_Jin.ยท2025๋…„ 2์›” 4์ผ
1
post-thumbnail

โœ๏ธ 2025. 02์›” 04์ผ / javascript ์ดˆ๊ธ‰~๊ณ ๊ธ‰ 19

๐Ÿ’ก ๋„์ „! ์‹ค์Šต ๋ผ์ดํŠธ ๋ฐ•์Šค ํšจ๊ณผ ๋งŒ๋“ค๊ธฐ
์•ž์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ํด๋ฆญํ•˜๋ฉด ๋‚ด์šฉ์˜ ์†์„ฑ์ด ๋ฐ”๋€Œ๋Š” ๋ผ์ดํŠธ ๋ฐ•์Šค ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
โœ”๏ธ css

    <style>
      * {
        margin: 0px;
        padding: 0px;
      }
      .row {
        width: 1520px;
        height: auto;
        margin: 160px auto;
      }
      .row > ul {
        display: flex;
        flex-wrap: wrap;
        gap: 40px;
        list-style: none;
      }
      /* ๋ผ์ดํŠธ ๋ฐ•์Šค ์˜์—ญ */
      #light_box {
        position: absolute;
        top: 0px;
        left: 0px;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, 0.5);
        display: flex;
        justify-content: center;
        align-items: center;
        display: none;
      }
    </style>

โœ”๏ธ html

 <body>
    <div class="row">
      <ul>
        <!-- 1 -->
        <li>
          <img
            src="./img/img_tumb-1.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-1.jpg"
            class="pic"
          />
        </li>
        <!-- 2 -->
        <li>
          <img
            src="./img/img_tumb-2.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-2.jpg"
            class="pic"
          />
        </li>
        <!-- 3 -->
        <li>
          <img
            src="./img/img_tumb-3.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-3.jpg"
            class="pic"
          />
        </li>
        <!-- 4 -->
        <li>
          <img
            src="./img/img_tumb-4.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-4.jpg"
            class="pic"
          />
        </li>
        <!-- 5 -->
        <li>
          <img
            src="./img/img_tumb-5.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-5.jpg"
            class="pic"
          />
        </li>
        <!-- 6 -->
        <li>
          <img
            src="./img/img_tumb-6.png"
            alt="์ธ๋„ค์ผ์ด๋ฏธ์ง€"
            data-src="img/img-6.png"
            class="pic"
          />
        </li>
      </ul>
    </div>
    <!-- ๋ผ์ดํŠธ ๋ฐ•์Šค -->
    <div id="light_box">
      <img src="./img/img-1.jpg" alt="ํฐ ์ด๋ฏธ์ง€" id="light_box_img" />
    </div>

โœ”๏ธ js

    <script>
      let pic = document.getElementsByClassName("pic"); //์ธ๋„ค์ผ 6์žฅ
      let lightBox = document.getElementById("light_box"); //๋ผ์ดํŠธ ๋ฐ•์Šค ์˜์—ญ
      let lightBoxImg = document.getElementById("light_box_img"); //๋ผ์ดํŠธ ๋ฐ•์Šค์˜ ํฐ์ด๋ฏธ์ง€
      //์ธ๋„ค์ผ 6์žฅ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด์ค๋‹ˆ๋‹ค.
      for (let i = 0; i < pic.length; i++) {
        pic[i].addEventListener("click", showLightBox);
      }
      //์ธ๋„ค์ผ์„ ํด๋ฆญํ•˜๋ฉด ์‹คํ–‰ํ•  ์ด๋ฒคํŠธ
      function showLightBox() {
        let bigLocation = this.getAttribute("data-src"); //์ธ๋„ค์ผ ์ด๋ฏธ์ง€์˜ ํฐ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ
        //๋ผ์ดํŠธ ๋ฐ•์Šค ์•ˆ์˜ ํฐ ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ data-src์˜ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
        lightBoxImg.setAttribute("src", bigLocation);
        //๋ผ์ดํŠธ ๋ฐ•์Šค ์˜์—ญ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
        lightBox.style.display = "flex";
      }
      //๋ผ์ดํŠธ ๋ฐ•์Šค๋ฅผ ๊ฐ์ถฅ๋‹ˆ๋‹ค.
      lightBox.onclick = function () {
        lightBox.style.display = "none";
      };
    </script>


๐Ÿ’ก DOM์—์„œ ๋…ธ๋“œ ์ถ”๊ฐ€ ์‚ญ์ œํ•˜๊ธฐ
DOM์—์„œ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด node list๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ๋ž€ DOM์— ์ ‘๊ทผํ•  ๋•Œ querySelectorAll()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด
๋…ธ๋“œ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋•Œ, ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์œผ๋ฉฐ, ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ์—๋Š” ์ธ๋ฑ์Šค์™€ ์š”์†Ÿ๊ฐ’์ด ์ €์žฅ๋˜๊ณ  lenght์†์„ฑ์— ๋ช‡ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ƒ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ํŠน์ • ์ˆœ๋ฒˆ์งธ์— ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

      [๊ธฐ๋ณธํ˜•]
      document.querySelectorAll('์š”์†Œ')[index]

๐Ÿ’ก ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ
1. ์š”์†Œ ๋…ธ๋“œ ๋งŒ๋“ค๊ธฐ
: DOM์—์„œ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ์š”์†Œ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” .createElement()๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.
-
[๊ธฐ๋ณธํ˜•]
document.createElement(๋…ธ๋“œ๋ช…) ๋…ธ๋“œ๋ช…์€ ํƒœ๊ทธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
2. ํ…์ŠคํŠธ ๋…ธ๋“œ ๋งŒ๋“ค๊ธฐ
: ์ƒˆ๋กœ์šด ์š”์†Œ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ์€ ๋‚ด์šฉ์„ ๋‹ด๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ '์ž์‹๋…ธ๋“œ'๋กœ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ๋Š” .createTextNode() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
-
[๊ธฐ๋ณธํ˜•]
document.createTextNode('ํ…์ŠคํŠธ')
3. ์ž์‹ ๋…ธ๋“œ ์—ฐ๊ฒฐํ•˜๊ธฐ
: 1๋ฒˆ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋…ธ๋“œ์™€ 2๋ฒˆ์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ํ…์ŠคํŠธ ๋…ธ๋“œ๋Š” ๋…ธ๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ƒํƒœ์ผ ๋ฟ์ด๋ฉฐ
์•„์ง ๋ถ€๋ชจ๋…ธ๋“œ์™€ ์ž์‹๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
.appendChild()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…์ŠคํŠธ ๋…ธ๋“œ๋‚˜ ์†์„ฑ๋…ธ๋“œ๋ฅผ ๋งŒ๋“  ํ›„ ์š”์†Œ ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋•Œ .appendChild()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ ์ค‘ ๋งจ ๋์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
-
[๊ธฐ๋ณธํ˜•]
๋ถ€๋ชจ๋…ธ๋“œ.appendChild(์ž์‹๋…ธ๋“œ)

profile
๐ŸŽง แด˜สŸแด€สษชษดษข: UXUI (Feat: coding) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โšชโ”€โ”€โ”€โ”€โ”€ ๐Ÿธ:๐Ÿท๐Ÿพ / ๐Ÿน:๐Ÿป๐Ÿผโ € ใ…ค โ—„โ—„โ €โ–โ–โ €โ–บโ–บ โ”€โ”€โ”€โ—‹ ๐Ÿ”Š

0๊ฐœ์˜ ๋Œ“๊ธ€