๋ง์ฐ์ค ์ดํํธ 01
์ด๋ฒ ์๊ฐ์๋ ๊ทธ ๋์ ๋ฐฐ์ ๋ JavaScript๋ฅผ ์ด์ฉํ์ฌ ๋ง์ฐ์ค ์ดํํธ๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
HTML ์์ค ๋ณด๊ธฐ
header, main(๋ช ์ธ & mouseInfo(๋ง์ฐ์ค ์ปค์ ์ขํ๊ฐ ํ์)), footer(๋ชจ๋ฌ ๋ฐ์ค) ํฌ๊ฒ 3๊ฐ์ง๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. footer์ ๋ชจ๋ฌ ๋ฐ์ค ๋ด์ฉ์ ๋๋ฌด ๊ธธ์ด์ง๋ฏ๋ก ์๋ตํ๋ค. ๋ชจ๋ฌ ๋ฐ์ค๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ด์ ์ ์ ๋ก๋ํ ์ฌ๋ผ์ด๋ ์ดํํธ ๊ฒ์๋ฌผ์ ์ฐธ์กฐํ ๊ฒ.
<body class="img04"> <!-- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋ฏธ์ง / CSS๋ก ์ด๋ฏธ์ง ์ถ๋ ฅ์ํด -->
<header id="header">
<h1>JAVASCRIPT MOUSE EFFECT 01</h1>
<p>๋ง์ฐ์ค ์ดํํธ - ๋ง์ฐ์ค ๋ฐ๋ผ๋ค๋๊ธฐ</p>
<ul>
<li class="active"><a href="mouseEffect01.html">01</a></li>
<li><a href="mouseEffect02.html">02</a></li>
<li><a href="mouseEffect03.html">03</a></li>
<li><a href="mouseEffect04.html">04</a></li>
<li><a href="mouseEffect05.html">05</a></li>
<li><a href="mouseEffect06.html">06</a></li>
<li><a href="mouseEffect07.html">07</a></li>
</ul>
</header>
<!-- //header -->
<main id="main">
<section id="mouseType">
<div class="mouse__cursor"></div>
<div class="mouse__wrap">
<p><span class="style1">The future</span> depends on <span class="style2">what we do</span> in the <span class="style3">present</span>.</p>
<p><span class="style4">๋ฏธ๋</span>๋ <span class="style5">ํ์ฌ</span> ์ฐ๋ฆฌ๊ฐ <span class="style6">๋ฌด์์ ํ๋๊ฐ</span>์ ๋ฌ๋ ค ์๋ค.</p>
</div>
</section>
<div class="mouse__info">
<ul>
<li>clientX : <span class="clientX">0</span>px</li>
<li>clientY : <span class="clientY">0</span>px</li>
<li>offsetX : <span class="offsetX">0</span>px</li>
<li>offsetY : <span class="offsetY">0</span>px</li>
<li>pageX : <span class="pageX">0</span>px</li>
<li>pageY : <span class="pageY">0</span>px</li>
<li>screenX : <span class="screenX">0</span>px</li>
<li>screenY : <span class="screenY">0</span>px</li>
</ul>
</div>
</main>
<!-- //main -->
<footer>
<!-- ๋ชจ๋ฌ ๋ฐ์ค ๋ด์ฉ ๋ค์ด๊ฐ ๊ณณ. ๊ธธ์ด์ง๋ฏ๋ก ์๋ต. -->
</footer>
<!-- //footer -->
</body>
JavaScript ์์ค ๋ณด๊ธฐ : ๋ง์ฐ์ค ์ปค์ ๋ง๋ค๊ณ ์ ์ฉํ๊ธฐ
๋จผ์ ๋ง์ฐ์ค ์์ง์ด๋ ๊ฐ์ ๊ฐ์ ธ์ HTML ์์ ํ๊ธฐ์ํจ ๋ค์, CSS๋ก ๋ง๋ ๋ง์ฐ์ค ์ปค์๋ฅผ ์๋ก ์์ฑํ const ์์์ ์ ์ฅ์์ผ ์ ์ฉํ๋ค.
// ๋ง์ฐ์ค ์์ง์ด๋ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ - ๋ง์ฐ์ค ์ปค์ ์ขํ๊ฐ์ ํ์์ํด
// mouseInfo๋ก๋ถํฐ ๋จ์ด์ง ๊ฐ == ์ขํ๊ฐ
window.addEventListener("mousemove", (event) => {
document.querySelector(".clientX").innerText = event.clientX;
document.querySelector(".clientY").innerText = event.clientY;
document.querySelector(".offsetX").innerText = event.offsetX;
document.querySelector(".offsetY").innerText = event.offsetY;
document.querySelector(".pageX").innerText = event.pageX;
document.querySelector(".pageY").innerText = event.pageY;
document.querySelector(".screenX").innerText = event.screenX;
document.querySelector(".screenY").innerText = event.screenY;
});
// css๋ก ๋ง๋ ๋ง์ฐ์ค์ปค์ ์ ์ฉ์ํค๊ธฐ
const cursor = document.querySelector(".mouse__cursor");
window.addEventListener("mousemove", (e) => {
cursor.style.left = e.clientX - 25 + "px";
cursor.style.top = e.clientY -25 + "px";
});
JavaScript ์์ค ๋ณด๊ธฐ : ๋ง๋ ๋ง์ฐ์ค ์ปค์์ CSS ์ ํ๊ธฐ
๋ง์ฐ์ค ์ปค์๋ฅผ ์ฌ๋ฆฌ๋ ๊ณณ๋ง๋ค(= hoverํ๋ ๊ณณ๋ง๋ค) ์ปค์ ๋ชจ์์ ๋ค๋ฅด๊ฒ CSS์์ ์ค์ ํด์ค ๋ค์,
๊ทธ๊ฑธ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ ์ฉ์์ผ์ฃผ๋๋ก ํ๋ค. forEach๋ฌธ๊ณผ getAtrribute()๋ฅผ ์ธ ๊ฒ์ ๊ถ์ฅ.
ํ๋จ์ CSS ์์ค ๋ณด๊ธฐ ๋ฒํผ์ ๋๋ฌ ๋ง์ฐ์ค ์ปค์์ ์
ํ์ง CSS ์์ฑ์ ํ์ธํ ์ ์๋ค.
// ์ ์ฉํ ๋ง์ฐ์ค์ปค์์ CSS ์
ํ๊ธฐ (์๋)
// document.querySelector(".style1").addEventListener("mouseover", () => {
// cursor.classList.add("style1");
// });
// document.querySelector(".style1").addEventListener("mouseout", () => {
// cursor.classList.remove("style1");
// });
// document.querySelector(".style2").addEventListener("mouseover", () => {
// cursor.classList.add("style2");
// });
// document.querySelector(".style2").addEventListener("mouseout", () => {
// cursor.classList.remove("style2");
// });
// document.querySelector(".style3").addEventListener("mouseover", () => {
// cursor.classList.add("style3");
// });
// document.querySelector(".style3").addEventListener("mouseout", () => {
// cursor.classList.remove("style3");
// });
// document.querySelector(".style4").addEventListener("mouseover", () => {
// cursor.classList.add("style4");
// });
// document.querySelector(".style4").addEventListener("mouseout", () => {
// cursor.classList.remove("style4");
// });
// document.querySelector(".style5").addEventListener("mouseover", () => {
// cursor.classList.add("style5");
// });
// document.querySelector(".style5").addEventListener("mouseout", () => {
// cursor.classList.remove("style5");
// });
// document.querySelector(".style6").addEventListener("mouseover", () => {
// cursor.classList.add("style6");
// });
// document.querySelector(".style6").addEventListener("mouseout", () => {
// cursor.classList.remove("style6");
// });
// for๋ฌธ
// for(let i=1; i <= 6; i++) {
// document.querySelector(".style" + i).addEventListener("mouseover", () => {
// cursor.classList.add("style" + i);
// });
// document.querySelector(".style" + i).addEventListener("mouseout", () => {
// cursor.classList.remove("style" + i);
// });
// };
// forEach
// document.querySelectorAll(".mouse__wrap span").forEach((span, num) => {
// span.addEventListener("mouseover", () => {
// cursor.classList.add("style" + (num+1));
// });
// span.addEventListener("mouseout", () => {
// cursor.classList.remove("style" + (num+1));
// });
// });
// getAtrribute() : 'style'์ด ๋ด๊น ํด๋์ค๊ฐ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ ๋ ์ ํํ ๋ฐฉ๋ฒ
document.querySelectorAll(".mouse__wrap span").forEach((span) => {
let attr = span.getAttribute("class");
span.addEventListener("mouseover", () => {
cursor.classList.add(attr);
});
span.addEventListener("mouseout", () => {
cursor.classList.remove(attr);
});
});
๊ฒฐ๊ณผ
'Effect > Mouse Effect' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Mouse Efffect] ๋ง์ฐ์ค ์ดํํธ 06 (2) | 2022.09.29 |
---|---|
[Mouse Effect] ๋ง์ฐ์ค ์ดํํธ 05 - ๊ธฐ์ธ๊ธฐ ํจ๊ณผ / ๊ธ์จ ๋ฐ์ ํจ๊ณผ (3) | 2022.09.28 |
[Mouse Effect] ๋ง์ฐ์ค ์ดํํธ 04 - ์ด๋ฏธ์ง ํจ๊ณผ (5) | 2022.09.22 |
[Mouse Effect] ๋ง์ฐ์ค ์ดํํธ 03 - ์กฐ๋ช ํจ๊ณผ (4) | 2022.09.22 |
[Mouse Effect] ๋ง์ฐ์ค ์ดํํธ 02 - GSAP (2) | 2022.09.18 |
๋๊ธ