๐ŸŸฉ Frontend-HTML & CSS & +JS/๐Ÿ”ฐHTML & CSS & JQ

[JS+HTML] html์•ˆ์— script๋กœ ๊ณตํ†ต์š”์†Œ (div)๊ฐ€์ ธ์˜ค๊ธฐ (+JS๋™์ž‘)

ramen2 2024. 9. 10. 16:36
๋ฐ˜์‘ํ˜•

| ๋ชฉํ‘œ

์•ˆ๊ฒฝ ๋‚€ ๊ณ ์–‘์ด ์™ธ์˜ ์š”์†Œ(ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ, ์‹œ๊ณ„, ์™ผ์ชฝ ์‚ฌ์ด๋“œ์˜ ๊ณ ์–‘์ด๋“ค ๋“ฑ) ๋“ค์€

๊ฐ sub/ ์˜ html ์•ˆ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ์ผ div์ด๋ฉฐ,

js์˜ script ๋˜ํ•œ ๋™์ž‘ํ•ด์•ผํ•จ

 

 

 

 

| ๋ฐฉ๋ฒ• 

 

1. ๊ณตํ†ต์œผ๋กœ ๋„ฃ์„ div๋ฅผ ๊ฐ€์ง„, html ํŒŒ์ผ์„ ๋งŒ๋“ฌ (common_widget.html)
โš ๏ธ meta tag ๋นผ๊ณ  div ์•Œ๋งน์ด๋งŒ ๊ฐ€์ง€๋Š” ํŒŒ์ผ์ด ๋ผ์•ผํ•จ โš ๏ธ

<!-- ๊ณตํ†ต ํ—ค๋” -->
<header>
     <div class="header_in">
          <p class="title">Insomnia's Room</p>
     </div>
     <div class="fullpage" id="fullscreenBtn"><i class="fas fa-expand"></i></div>
</header>



<!-- ์‹œ๊ณ„ ์œ„์ ฏ -->
<div class="draggable_clock">
     <i class="fas far fa-grip-lines"></i>
     <div class="clock_widget">
          <div class="time_hms" id="hour_min_sec"></div>
          <div class="time_pmam" id="pmam"></div>
     </div>

</div>

.... ๊ทธ ์™ธ div์š”์†Œ๋“ค

 

2. ๊ณตํ†ต์œผ๋กœ ๋„ฃ์–ด์งˆ html (common_widget.html) ํŒŒ์ผ์˜ css์™€ js๋ฅผ ๋งŒ๋“ฌ

(common.css /sub_common.js)

// ์•„๋ž˜๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ์œ„ํ•œ, sub_common.js์˜ ์ผ๋ถ€ js


// |๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ๏ฟฃ|
//     drag_box 1.์‹œ๊ณ„์œ„์ ฏ
// |๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ๏ผฟ|
//    \ (โ€ขโ—กโ€ข) /


$(document).ready(function () {
     // drag_box_inner_btn์˜ li ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
     // ์ตœ์ดˆ๋กœ ์‹œ๊ณ„๋Š” widget_active_clock๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋‹ˆ, ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด ์—†์• ๋„๋กํ•จ
     $(".drag_box_inner_btn .box_clock").click(function () {
          let img = $(this).find("img");
          if (img.hasClass("widget_active_clock")) {
               img.removeClass("widget_active_clock");
          } else {
               img.addClass("widget_active_clock");
          }
     });
});

$(document).ready(function () {
     // .box_clock๋ฅผ ํด๋ฆญํ•  ๋•Œ .widget_active_clock ํด๋ž˜์Šค๋ฅผ ํ† ๊ธ€ํ•˜์—ฌ .draggable_clock์˜ display ์†์„ฑ์„ ๋ณ€๊ฒฝ
     $(".box_clock").click(function () {
          if ($(this).children('img').hasClass("widget_active_clock")) {
               $(".draggable_clock").css("display", "block");
          } else {
               $(".draggable_clock").css("display", "none");
          }
     });

 

 

3. ์œ„์—์„œ ๋งŒ๋“  ๊ณตํ†ต์œผ๋กœ ๋„ฃ์„ div๋ฅผ ๊ฐ€์ง„ html์„ ๋„ฃ์„ html ํŒŒ์ผ(root_page.html)์„ ์—ด๊ณ 

์•„๋ž˜์— 1(๊ณตํ†ต์š”์†Œ html)๊ณผ 2(๊ณตํ†ต์š”์†Œjs) ๋ฅผ ๋„ฃ์„ script๋ฅผ ์ž‘์„ฑํ•จ

 

// root_page.html ๋‚ด ์ฝ”๋“œ
<body>
<!-- ๊ณตํ†ต ์œ„์ ฏ์ด ๋“ค์–ด๊ฐˆ ์œ„์น˜ -->
    <div id="common_widget"></div>
    
</body>


// ์•„๋ž˜๋Š” root_page.html ์˜ ์ตœํ•˜๋‹จ ๋ถ€๋ถ„ script ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ถ€๋ถ„์ž„

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
    <!-- jquery-ui-touch-punch -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js">
    </script>
    <!-- ์ด ์œ„๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ์œ„ํ•œ, ์›๋ž˜ ๋‚ด๊ฐ€ ์“ฐ๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ CDN์ด๋ฏ€๋กœ ์•„๋ž˜๋งŒ ์ฐธ๊ณ ๋ฐ”๋žŒ -->
    

    <script>
        // ๊ณตํ†ต ์œ„์ ฏ์„ ๋กœ๋“œํ•˜๋Š” ํ•จ์ˆ˜
        function loadCommonWidget() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    // ๊ณตํ†ต ์œ„์ ฏ์„ ์‚ฝ์ž…ํ•  ์œ„์น˜์— ๋‚ด์šฉ์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.
                    document.getElementById("common_widget").innerHTML = this.responseText;

                    // ๊ณตํ†ต ์œ„์ ฏ์ด ๋กœ๋“œ๋œ ํ›„ sub_common.js ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
                    var script = document.createElement("script");
                    script.src = "../js/sub_common.js";
                    script.type = "text/javascript";
                    document.body.appendChild(script); // ์Šคํฌ๋ฆฝํŠธ๋ฅผ body์— ์ถ”๊ฐ€
                }
            };
            xhttp.open("GET", "/common_widget.html", true);
            // ๊ณตํ†ต ์š”์†Œ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
            xhttp.send();
        }

        // ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ๊ณตํ†ต ์œ„์ ฏ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
        window.onload = loadCommonWidget;
    </script>

 

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ณตํ†ต์š”์†Œ ์•ˆ์—์„œ ๋™์ž‘ํ•  js (2๋ฒˆ ํŒŒ์ผ) ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ 

script.src = "../js/sub_common.js";
script.type = "text/javascript";

 

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ณตํ†ต์š”์†Œ html์•ˆ์˜ div (1๋ฒˆ ํŒŒ์ผ)  ์„ ๊ฐ€์ ธ์˜ด

xhttp.open("GET", "/common_widget.html", true);

 

 

CSS๋Š” common.css๋กœ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต์š”์†Œ๋ฅผ ๋„ฃ์„ html ํŒŒ์ผ(root_page.html) ์ƒ๋‹จ์— ์—ฐ๊ฒฐ ํ•ด๋‘์–ด

์ ์šฉ๊ฐ€๋Šฅ!

 

 

 

 


| ๊ฒฐ๊ณผ

root_page.html ์•ˆ์— ๋ถˆ๋Ÿฌ์™€์ง„ common_widget.html ๋‚ด์˜ id, common_widget

 

 

ํŽผ์ณค์„๋•Œ ๋“ค์–ด์˜ด์„ ํ™•์ธ ๊ฐ€๋Šฅ

 

 

 

 

 

 

์ฒ˜์Œ์— ๊ณตํ†ต์œ„์ ฏ์˜ html ๊นŒ์ง€๋Š” ์ž˜ ๊ฐ€์ ธ์™”๋Š”๋ฐ

์œ„์ ฏ์˜  ๊ณตํ†ต ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๋Š”๊ฑธ,

<script src="../js/sub_common.js"></script>

 

์ด๋Ÿฐ์‹์œผ๋กœ, html ํŒŒ์ผ๋‚ด์—

๋‹จ์ˆœํžˆ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ์–ด์„œ ๋ช‡๋ช‡ ์ฝ”๋“œ๋Š” ๋™์ž‘ํ•˜๊ณ  ๋ช‡๊ฐœ๋Š” ๋™์ž‘์„ ์•ˆํ•ด์„œ ๊ณ ์ƒํ–ˆ๋‹ค..
(์•„์˜ˆ ์•ˆ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋ช‡๋ช‡์ฝ”๋“œ๋Š” ๋™์ž‘ํ•ด์„œ ๋” ํ—ท๊ฐˆ๋ฆผ)

 

์œ„์— ๊ธฐ์ˆ ํ–ˆ๋“ฏ, โš ๏ธ๊ณตํ†ต์œ„์ ฏ ๋กœ๋“œํ•˜๋Š” ํ•จ์ˆ˜๋‚ด์— โš ๏ธ
๊ณตํ†ต ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ

์ •์ƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”๊ฑฐ์˜€๋‹น

script.src = "../js/sub_common.js";
script.type = "text/javascript";
๋ฐ˜์‘ํ˜•