๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
EFFECT

[EFFECT] ๋งˆ์šฐ์Šค ํšจ๊ณผ 04 : ์ด๋ฏธ์ง€ ํšจ๊ณผ

by _ํ† ๋งคํ†  2022. 9. 23.
728x90

๐Ÿ–ฑ ๋งˆ์šฐ์Šค ํšจ๊ณผ : ์ด๋ฏธ์ง€ํšจ๊ณผ ๐Ÿ–ฑ

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ด๋ฏธ์ง€ ์˜์—ญ์•ˆ์— ์ปค์„œ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ ์Šคํƒ€์ผ์ด ๋ฐ”๋€œ๊ณผ ๋™์‹œ์— ์ด๋ฏธ์ง€๋„ ์ปค์„œ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋Š” ํšจ๊ณผ๋ฅผ ์ฃผ๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


#1. HTML / CSS ์„ค์ •ํ•˜๊ธฐ

! HTML TIP !
figure๋Š” ์ด๋ฏธ์ง€๋‚˜ ๊ทธ๋ž˜ํ”„ ๋“ฑ์˜ ๋„ํ‘œ๋ฅผ ๋ฌธ์„œ์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. figure๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€์˜ ์˜์—ญ์„ ์žก์•„์ค๋‹ˆ๋‹ค!
figcaption์€ figure์˜ ์„ค๋ช…์„ ๋„์™€์ฃผ๋Š” ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ๋ผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. figcaption์„ ํ†ตํ•ด ํ…์ŠคํŠธ์˜ ์˜์—ญ์„ ์žก์•„์ค๋‹ˆ๋‹ค~!

โœ๏ธ HTML ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ
<main id="main">
    <section id="mouseType04">
        <div class="mouse__cursor"></div>
        <div class="mouse__wrap">
            <figure>
                <img src="../assets/img/Mountian_bg03.jpg" alt="image">
                <figcaption>
                    <p>The way get started is to quit talking and begin doing.</p>
                    <p>๋ฌด์–ธ๊ฐ€๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋งํ•˜๋Š” ๊ฒƒ์„ ๋ฉˆ์ถ”๊ณ  ํ–‰๋™์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.</p>
                </figcaption>
            </figure>
        </div>
    </section>
  
    <div class="mouse__info">
        <ul>
            <li>mousePageX : <span class="mousePageX">0</span>px</li>
            <li>mousePageY : <span class="mousePageY">0</span>px</li>
            <li>centerPageX: <span class="centerPageX">0</span>px</li>
            <li>centerPageY: <span class="centerPageY">0</span>px</li>>
        </ul>
    </div>
</main>

! CSS TIP !
position: absolute; : ๊ธฐ์กด์˜ ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๋”ฐ๋ผ๋‹ค๋‹ˆ๋„๋ก ํฌ์ง€์…˜์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค. (์Šคํฌ๋ฆฝํŠธ์™€ GSAP์„ ํ†ตํ•ด left์™€ top๊ฐ’์ด ์ด๋™ํ•  ๋•Œ ๋งˆ๋‹ค ๋ณ€ํ•˜๋„๋ก ์„ค์ •ํ•ด์ค„ ๊ฒƒ์ด๋ฏ€๋กœ ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์ž ์‹œ ์œ„์น˜์‹œ์ผœ ์ค๋‹ˆ๋‹ค.)
object-fit: cover๋Š” background-size: cover;์™€ ๊ฐ™์€ ์†์„ฑ์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„ค์ •์ด ์•„๋‹Œ imgํƒœ๊ทธ์—๊ฒŒ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ๏ธ CSS ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ : ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ / ์ปค์„œ / ์—๋‹ˆ๋ฉ”์ด์…˜ํšจ๊ณผ
/* mouseType */
.mouse__wrap {
    width: 100%;
    height: 100vh;  /* vw๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋กค์ด ์ƒ๊ธฐ๋ฏ€๋กœvh๋กœ ์ž‘์—… */
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: #fff;
    overflow: hidden;
    /* cursor: none; */
}

.mouse__wrap figure {
    width: 50vw;
    height: 50vh;
    /* background: #ccc; */
    position: relative;
    overflow: hidden;
    transition: transform 500ms ease;
    cursor: none;
}

.mouse__wrap figure:hover {
    transform: scale(1.025);
}

.mouse__wrap figure img {
    position: absolute;
    left: -5%;
    top: -5%;
    width: 110%;
    height: 110%;
    /* ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํฌ์ง€์…˜ ์ปค๋ฒ„์™€ ๊ฐ™์€ ํšจ๊ณผ๋กœ ์ด๋ฏธ์ง€ ํƒœ๊ทธ์—๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. */
    object-fit: cover;

}

.mouse__wrap figure figcaption {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    font-size: 16px;
    font-weight: 300;
    line-height: 1.5;
    white-space: nowrap;
}

.mouse__cursor {
    position: absolute;
    left: 0;
    top: 0;
    width: 20px;
    height: 20px;
    background: #fff;
    border-radius: 50%;
    z-index: 1000;
    user-select: none;
    pointer-events: none;
}

/*  .mouse__info */
.mouse__info {
    position: absolute;
    left: 20px;
    bottom: 10px;
    font-size: 14px;
    line-height: 1.6;
    color: #fff;
}

#2. JAVASCRIPT : ์Šคํฌ๋ฆฝํŠธ ์งœ๊ธฐ

๋จผ์ € getBoundingClientRect()์„ ํ†ตํ•ด ์š”์†Œ(์ปค์„œ)์˜ ๋ชจ๋“  ์ •๋ณด๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜จ ๋’ค ์ด๋ฒคํŠธ ๋ฉ”์„œ๋“œ์ธ mousemove()์™€ GSAP์„ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„์„ฑํ•ด๋ณด์ž!
์˜ค๋Š˜์˜ ํฌ์ธํŠธ๋Š” ๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ „์ฒด ๋„ˆ๋น„์™€ ๊ธธ์ด์˜ ๋ฐ˜์„ ๊ตฌํ•˜๊ณ  ์ปค์„œ ์˜์—ญ์˜ ๋„ˆ๋น„์™€ ๊ธธ์ด์˜ ๋ฐ˜์„ ๊ตฌํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค~!
๊ทธ๋Ÿผ ์•„๋ž˜์˜ ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ์™€ ์ฃผ์„์œผ๋กœ ํ๋ฆ„์„ ํŒŒ์•…ํ•œ ๋’ค ํ•ต์‹ฌ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค.

๐Ÿ’ก ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ
//01. ์„ ํƒ์ž
const cursor = document.querySelector(".mouse__cursor"); //์ปค์„œ
const cursorRect = cursor.getBoundingClientRect();       //์ปค์„œ์œ„์น˜๊ฐ’

//02. ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ผ ๋•Œ ์ด๋ฒคํŠธ ์„ค์ • (์ด๋ฏธ์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ด๋ฒคํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ์ง€ ์˜์—ญ ๋‚ด์—์„œ ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ ๋ฐœ์ƒ)
document.querySelector(".mouse__wrap figure").addEventListener("mousemove", (e) => {
    //03. ์ปค์„œ
    //์ปค์„œ์˜ ์˜์—ญ์„ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒฝ์šฐ ํ˜„์žฌ ์ปค์„œ์˜ ํฌ์ง€์…˜์ด left์™€ top๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๊ฐํ˜•์˜ ์™ผ์ชฝ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜์—ญ์ด ์ƒ๊ธด๋‹ค. 
    //์ฆ‰ ์™ผ์ชฝ๋ชจ์„œ๋ฆฌ ์•„๋ž˜์ชฝ์œผ๋กœ ์˜์—ญ์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋ฆฌ๊ฐ์ด ์ƒ๊ธฐ๊ฒ ๋œ๋‹ค ํŠนํžˆ ์›ํ˜•์œผ๋กœ ์˜์—ญ์„ ์žก์„ ๊ฒฝ์šฐ ์‚ฌ๊ฐํ˜•์ด ๊น์—ฌ์ ธ์„œ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋”์šฑ ๊ฑฐ๋ฆฌ๊ฐ์ด ์ƒ๊ธฐ๊ฒŒ๋œ๋‹ค. 
    //๋•Œ๋ฌธ์— ์‚ฌ๊ฐํ˜•(์ปค์„œ ์˜์—ญ)์„ รท2 ํ•ด์ฃผ์–ด์„œ ์ปค์„œ๋ฅผ ๊ฐ€์šด๋ฐ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ! : e.pageX - cursorRect.width/2 : ์š”์†Œ์˜ x์ถ• - ์š”์†Œ์˜ ์˜์—ญ ๊ฐ€๋กœ ๊ธธ์ด์˜ ๋ฐ˜
    gsap.to(cursor, {
        duration: .5,
        left: e.pageX - cursorRect.width/2,
        top: e.pageY - cursorRect.height/2,
    });

    //04. ๋งˆ์šฐ์Šค ์ขŒํ‘œ ๊ฐ’
    //์š”์†Œ์˜ x์ถ•๊ณผ y์ถ• ์ขŒํ‘œ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•œ๋‹ค.
    let mousePageX = e.pageX;
    let mousePageY = e.pageY;

    //์ „์ฒด๊ฐ€๋กœ
    //innerWidth || outerWidth || screen.Width
    // window.innerWidth //1440 : ๋ธŒ๋ผ์šฐ์ € ๊ธฐ์ค€ ํฌ๊ธฐ (์Šคํฌ๋กค๋ฐ” ๋ฏธํฌํ•จ)
    // window.outerWidth  //1920 : ๋ธŒ๋ผ์šฐ์ € ๊ธฐ์ค€ ํฌ๊ธฐ (์Šคํฌ๋กค๋ฐ” ํฌํ•จ)
    // window.screen.Width  //1920 : ๋””๋ฐ”์ด์Šค ๊ธฐ์ค€(๋ชจ๋‹ˆํ„ฐ ๋“ฑ๋“ฑ์˜ ํ™”๋ฉด ํฌ๊ธฐ๋กœ ๊ณ„์‚ฐ)
    // console.log(window.innerWidth);

    //05. ๋งˆ์šฐ์Šค ์ขŒํ‘œ๊ฐ’ ๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™” : ๋ณ€์ˆ˜์— ์ดˆ๊ธฐํ™” ๋œ ๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.
    //์ „์ฒด๊ธธ์ด/2(์ „์ฒด๊ธธ์ด รท 2) - ๋งˆ์šฐ์Šค ์ขŒํ‘œ๊ฐ’ == 0 : 500*500์ผ ๊ฒฝ์šฐ ์ „์ฒด ๊ธธ์ด์—์„œ ๋ฐ˜์„ ๋นผ์ฃผ๋ฉด ๊ฐ€์šด๋ฐ๋กœ ๋งž์ถฐ์ง€๊ฒŒ ๋œ๋‹ค.
    //์ „์ฒด ์˜์—ญ์„ ๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™” == window.innerWidth/Height/2 -> ๊ทธ ๋’ค ๊ฐ ๋งˆ์šฐ์Šค์˜ ์ขŒํ‘œ๊ฐ’์„ ๋นผ์ฃผ๋ฉด ์ขŒํ‘œ๊ฐ’ ๊ธฐ์ค€๋„ ๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ์ฆ‰ ์ด ์‹์˜ ์ตœ์ข… ๊ฐ’์ด ๋ฐ”๋กœ ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์˜ ์ด๋™ ๊ฑฐ๋ฆฌ ๊ฐ’์ด ๋œ๋‹ค. (์ปค์„œ๊ฐ€ ์ค‘์•™์— ์œ„์น˜ == 0(๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™”) | ์ปค์„œ๊ฐ€ ์™ผ์ชฝ์— ์œ„์น˜ == ์–‘์ˆ˜ | ์ปค์„œ๊ฐ€ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ - ๊ฐ’(์Œ์ˆ˜))
    //ํฌ๊ธฐ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ๋• ์•ž์— ์œˆ๋„์šฐ๋Š” ์ƒ๋žตํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.
    let centerPageX = window.innerWidth/2 - mousePageX;
    let centerPageY = window.innerHeight/2 - mousePageY;

    //06. ์ด๋ฏธ์ง€ ์›€์ง์ด๊ธฐ
    const imgMove = document.querySelector(".mouse__wrap figure img");
    //๊ธฐ์กด js ๋ฐฉ์‹
    // imgMove.style.transform = "translate(" + centerPageX/20 + "px, " + centerPageY/20 + "px)";

    //GSAP
    //์ขŒํ‘œ๋ฅผ 20์œผ๋กœ ๋‚˜๋ˆˆ ์ด์œ  : ์˜ค์ฐจ ๊ฐ’์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์ด๋™ ํ•  ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์ด ์ด๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 20์„ ๋‚˜๋ˆ ์ฃผ์–ด ์ด๋ฏธ์ง€์˜ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์ถ•์†Œ์‹œ์ผœ ์ค€ ๊ฒƒ.
    gsap.to(imgMove, {
        duration: 0.3,
        x: centerPageX/20,
        y: centerPageY/20
    });

    //07. ๋งˆ์šฐ์Šค ์ขŒํ‘œ๊ฐ’ ์ถœ๋ ฅ
    //textContent๋ฅผ ํ†ตํ•ด ์„ ํƒ์ž์—๊ฒŒ ๊ฐ ์ขŒํ‘œ๊ฐ’๋ฅผ ๋Œ€์ž…์‹œํ‚จ๋‹ค.
    document.querySelector(".mousePageX").textContent = mousePageX;
    document.querySelector(".mousePageY").textContent = mousePageY;
    document.querySelector(".centerPageX").textContent = centerPageX;
    document.querySelector(".centerPageY").textContent = centerPageY;
});

โœ๏ธ ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

//01 ์„ ํƒ์ž
const cursor = document.querySelector(".mouse__cursor"); //์ปค์„œ
const cursorRect = cursor.getBoundingClientRect();       //์ปค์„œ์œ„์น˜๊ฐ’

//02 ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ผ ๋•Œ ์ด๋ฒคํŠธ ์„ค์ •
document.querySelector(".mouse__wrap figure").addEventListener("mousemove", (e) => {

    //03 ์ปค์„œ : GSAP
    gsap.to(cursor, {
        duration: .5,
        left: e.pageX - cursorRect.width/2,
        top: e.pageY - cursorRect.height/2,
    });

    //04 ๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ ๊ฐ’
    let mousePageX = e.pageX;
    let mousePageY = e.pageY;


    //05 ๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ๊ฐ’ ๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™” ํ›„ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ธฐ
    //์ „์ฒด๊ธธ์ด/2(์ „์ฒด๊ธธ์ด รท 2) - ๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ๊ฐ’ == 0
    let centerPageX = window.innerWidth/2 - mousePageX;
    let centerPageY = window.innerHeight/2 - mousePageY;

    //06 ์ด๋ฏธ์ง€ ์›€์ง์ด๊ธฐ
    const imgMove = document.querySelector(".mouse__wrap figure img"); //์ด๋ฏธ์ง€

    //GSAP : 20์„ ๋‚˜๋ˆ ์ฃผ์–ด ์ด๋ฏธ์ง€์˜ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์ถ•์†Œ์‹œ์ผœ ์ค€ ๊ฒƒ.
    gsap.to(imgMove, {
        duration: 0.3,
        x: centerPageX/20,
        y: centerPageY/20
    });

    //07 ๋งˆ์šฐ์Šค ์ขŒํ‘œ๊ฐ’ ์ถœ๋ ฅ
    document.querySelector(".mousePageX").textContent = mousePageX;
    document.querySelector(".mousePageY").textContent = mousePageY;
    document.querySelector(".centerPageX").textContent = centerPageX;
    document.querySelector(".centerPageY").textContent = centerPageY;
});

! JAVASCRIPT TIP !
1. ์ปค์„œ์™€ ์ปค์„œ์˜ ์œ„์น˜, ํฌ๊ธฐ ์ •๋ณด๊ฐ’์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ์„ ํƒ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

2. ์ด๋ฏธ์ง€๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ํ•˜์—ฌ ์ด๋ฒคํŠธ ์„ค์ •์„ ํ•ด์ค๋‹ˆ๋‹ค.

3. ์ฒซ๋ฒˆ์งธ๋กœ GSAP์„ ํ†ตํ•ด ์ปค์„œ์˜ ์›€์ง์ž„์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ์ปค์„œ์˜ ์œ„์น˜๋ฅผ ์ปค์„œ ์˜์—ญ(CSS์†์„ฑ์œผ๋กœ ์ •ํ•ด์ค€ ๊ฐ’)์˜ ๊ฐ€์šด๋ฐ๋กœ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค. : ๋„ˆ๋น„์™€ ๊ธธ์ด์˜ รท 2๋ฅผ ํ•ด์ฃผ๋ฉด ์ค‘์•™์œผ๋กœ ๋งž์ถฐ์ง„๋‹ค.

4. ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋งˆ์šฐ์Šค ์ปค์„œ์˜ ์ขŒํ‘œ๊ฐ’์„ ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค. -> ์ด ๋ณ€์ˆ˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์›€์ง์ด๊ธฐ ์œ„ํ•ด ๋งˆ์šฐ์Šค ์ปค์„œ์˜ ์ขŒํ‘œ๊ฐ’์„ ๊ฐ€์šด๋ฐ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋Š” ์‹์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค~!

5. ๋จผ์ € ๋ธŒ๋ผ์šฐ์ €์˜ ์ „์ฒด ๋„ˆ๋น„์™€ ๊ธธ์ด์˜ ๋ฐ˜์„ ๊ตฌํ•œ๋’ค ๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ๊ฐ’์„ ๋นผ์ฃผ์–ด์„œ ๊ฐ€์šด๋ฐ ์ขŒํ‘œ๊ฐ’ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

6. ์ด๋ฏธ์ง€๋ฅผ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„๋ก ์„ ํƒ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ค€ ๋’ค GSAP์„ ์ด์šฉํ•˜์—ฌ X / Y ์ถ• ๊ฐ’์— ์œ„์˜ ๋ณ€์ˆ˜ รท 20์„ ํ•ด์ฃผ์–ด ์ด๋ฏธ์ง€์˜ ์ด๋™ ์ขŒํ‘œ๋ฅผ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.

7. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งˆ์šฐ์Šค ์ธํฌ์— ๋งˆ์šฐ์Šค์˜ ๊ฐ ์ขŒํ‘œ๊ฐ’์ด ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋„๋ก ์„ ํƒ์ž์™€ textContent๋ฅผ ํ†ตํ•ด ์ขŒํ‘œ์†์„ฑ ๊ฐ’์„ ์ถœ๋ ฅ์‹œํ‚ต๋‹ˆ๋‹ค.


#3. ๊ฒฐ๊ณผ ๋ณด๊ธฐ ๐ŸŽ‰

728x90

๋Œ“๊ธ€


Lucky Charms Rainbow
js
html
css