๐Ÿ“ Study/Web Front-End Basic

[7์ฃผ์ฐจ] Javascript ์˜ˆ์ œ ์‹ค์Šต

0=2. 2024. 7. 18. 17:12

HTML, CSS์— ์ด์–ด Javascript ๊ธฐ์ดˆ๋ฅผ ํ•™์Šตํ•œ ํ›„ ์˜ˆ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋งํฌ์—์„œ ์ตœํ•˜๋‹จ์˜ Quiz๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์‹ค์Šต ์˜ˆ์ œ ๋ชจ์Œ | ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ


Quiz-1) ๋ฉ”์ธํ™”๋ฉด ํƒญ ๋ฉ”๋‰ด ๊ตฌํ˜„

 

html ์ฝ”๋“œ

๊ธฐ๋ณธ HTML ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="About" class="content">
      <h1>About</h1>
      <p>Custom Software Development Company</p>
    </div>

    <div id="Products" class="content">
      <h1>Products</h1>
      <p>Building tailored software to address critical needs of global enterprises.</p>
    </div>

    <div id="Technology" class="content">
      <h1>Technology</h1>
      <p>Machine Learning, Artificial Intelligent, Cloud Platform.</p>
    </div>

    <div id="Downloads" class="content">
      <h1>Downloads</h1>
      <p>You can download a free 10 days trial.</p>
    </div>

    <button id="default" class="tab" onclick="openMenu('About', this, 'tomato')">About</button>
    <button class="tab" onclick="openMenu('Products', this, 'darkolivegreen')">Products</button>
    <button class="tab" onclick="openMenu('Technology', this, 'dodgerblue')">Technology</button>
    <button class="tab" onclick="openMenu('Downloads', this, 'orange')">Downloads</button>

    <script>

    </script>
  </body>
</html>

 

css ์ฝ”๋“œ

๊ธฐ๋ณธ CSS ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ CSS ํŒŒ์ผ ํ˜น์€ ์ž„๋ฒ ๋””๋“œ CSS ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/* tab button */
.tab {
    background-color: #555;
    color: white;
    float: left;
    border: none;
    outline: none;
    cursor: pointer;
    padding: 14px 16px;
    font-size: 17px;
    width: 25%;
}

/* change background color when mouse over */
.tab:hover {
    background-color: #777;
}

/* default content */
.content {
    color: white;
    display: none;
    padding: 50px;
    text-align: center;
}

/* Style each tab content individually */
#About { background-color: tomato; }
#Products { background-color: darkolivegreen; }
#Technology { background-color: dodgerblue; }
#Downloads { background-color: orange; }   

 

openMenu() ํ•จ์ˆ˜

๊ฐ๊ฐ์˜ ํƒญ์ด ํด๋ฆญ๋˜์—ˆ์„๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋กœ ์˜คํ”ˆํ•  ํƒ€์ผ“์˜ id, ํ˜ธ์ถœํ•œ๊ฐ์ฒด(this), ๋ณ€๊ฒฝํ•  tab์ƒ‰์ƒ ์„ ์ธ์ž๋กœ ๊ฐ€์ง„๋‹ค.

 

function openMenu(target, seltab, color) {

}

์ฝ”๋“œ

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="js-quiz1.css">
</head>

<body>
    <div id="About" class="content">
        <h1>About</h1>
        <p>Custom Software Development Company</p>
    </div>

    <div id="Products" class="content">
        <h1>Products</h1>
        <p>Building tailored software to address critical needs of global enterprises.</p>
    </div>

    <div id="Technology" class="content">
        <h1>Technology</h1>
        <p>Machine Learning, Artificial Intelligent, Cloud Platform.</p>
    </div>

    <div id="Downloads" class="content">
        <h1>Downloads</h1>
        <p>You can download a free 10 days trial.</p>
    </div>

    <button id="default" class="tab" onclick="openMenu('About', this, 'tomato')">About</button>
    <button class="tab" onclick="openMenu('Products', this, 'darkolivegreen')">Products</button>
    <button class="tab" onclick="openMenu('Technology', this, 'dodgerblue')">Technology</button>
    <button class="tab" onclick="openMenu('Downloads', this, 'orange')">Downloads</button>

    <script>

        document.getElementById('default').click();

        function openMenu(target, seltab, color) {

            var contents = document.getElementsByClassName("content");
            var tabs = document.getElementsByClassName("tab");

            for( var i = 0; i < contents.length; i++ ){
                var content = contents.item(i);
                content.style.display = "none";
            }

            for( var i = 0; i < tabs.length; i++ ){
                var tab = tabs.item(i);
                tab.style.background = "#555";
            }

            document.getElementById(target).style.display = "block";
            seltab.style.backgroundColor = color;
        }

    </script>
</body>

</html>

css

๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ์ฝ”๋“œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

css ์ฝ”๋“œ ์ค‘์—์„œ ์•„๋ž˜ ์ฝ”๋“œ ๋ถ€๋ถ„์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์šฐ์Šค๋ฅผ ํƒญ์— ์–น์—ˆ์„ ๋•Œ ํƒญ์˜ ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ์ด ํšŒ์ƒ‰์œผ๋กœ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

/* change background color when mouse over */
.tab:hover {
    background-color: #777;
}

 

์„œ์นญํ•ด๋ณด๋‹ˆ javascript ์ฝ”๋“œ์™€์˜ ์šฐ์„ ์ˆœ์œ„ ๋ฌธ์ œ๋•Œ๋ฌธ์— background-color๊ฐ€ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
javascript ์ฝ”๋“œ์—๋„ ํƒญ์˜ background-color๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ css ์ฝ”๋“œ์™€ ๊ฒน์น  ๊ฒฝ์šฐ css ์ฝ”๋“œ๊ฐ€ ๋ฌด์‹œ๋˜๋‚˜ ๋ด…๋‹ˆ๋‹ค.
javascript ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์—ˆ์ง€๋งŒ, quiz์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์„œ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ ํ™•์ธ ์‹œ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค.


Quiz-2) ์–ด์ฝ”๋””์–ธ UI ๊ตฌํ˜„

html ์ฝ”๋“œ

๊ธฐ๋ณธ HTML ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html>
<head>
    <style>
        .accordion {
            background-color: #eee;
            color: #444;
            cursor: pointer;
            padding: 18px;
            width: 80%;
            border: none;
            outline: none;
            font-size: 15px;
            transition: 0.4s;
        }

        .accordion:hover {
            background-color: #ccc;
        }

        .panel {
            padding: 0 18px;
            background-color: white;
            max-height: 0;
            width: 80%;
            overflow: hidden;
            transition: max-height 0.2s ease-out;
        }
    </style>
</head>

<body>
    <div align=center>
        <h2>Accordion</h2>
        <hr>
        <button class="accordion">Section 1</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <button class="accordion">Section 2</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <button class="accordion">Section 3</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <script>
        </script>
    </div>
</body>
</html>

 

์–ด์ฝ”๋””์–ธ ์š”์†Œ ๋””์ž์ธ

์–ด์ฝ”๋””์–ธ ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด button, div ์˜ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

<button class="accordion">Section 1</button>
<div class="panel" align=left>
    <p>Lorem ipsum dolor sit amet...</p>
</div>

์ฝ”๋“œ

html

<!DOCTYPE html>
<html>

<head>
    <style>
        .accordion {
            background-color: #eee;
            color: #444;
            cursor: pointer;
            padding: 18px;
            width: 80%;
            border: none;
            outline: none;
            font-size: 15px;
            transition: 0.4s;
        }

        .accordion:hover {
            background-color: #ccc;
        }

        .panel {
            padding: 0 18px;
            background-color: white;
            max-height: 0;
            width: 80%;
            overflow: hidden;
            transition: max-height 0.2s ease-out;
        }
    </style>
</head>

<body>
    <div align=center>
        <h2>Accordion</h2>
        <hr>
        <button class="accordion">Section 1</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <button class="accordion">Section 2</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <button class="accordion">Section 3</button>
        <div class="panel" align=left>
            <p>Lorem ipsum dolor sit amet...</p>
        </div>

        <script>
            var accordion = document.getElementsByClassName("accordion");

            for (var i = 0; i < accordion.length; i++) {
                accordion[i].addEventListener("click", function () {
                    this.classList.toggle("active");
                    var panel = this.nextElementSibling;
                    if (panel.style.maxHeight) {
                        panel.style.maxHeight = null;
                    } else {
                        panel.style.maxHeight = panel.scrollHeight + "px";
                    }
                });
            }
        </script>
    </div>
</body>

</html>

๊ฒฐ๊ณผ