2021. 10. 22. 17:06ใHTML + CSS + JS
1. DOM ์์์ ํจ์ ์ง์ ์ฐ๊ฒฐํ๊ธฐ
2. ํจ์ ์ด๋ฆ์ ์ฌ์ฉํด ์ฐ๊ฒฐํ๊ธฐ
3. DOM์ event ๊ฐ์ฒด ์์๋ณด๊ธฐ
DOM์๋ ์ด๋ฒคํธ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ event ๊ฐ์ฒด๊ฐ ์๋ค.
์ด ๊ฐ์ฒด์๋ ์น ๋ฌธ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์์๊ฐ ๋ฌด์์ธ์ง, ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
event ๊ฐ์ฒด ํ๋กํผํฐ์ ๋ฉ์๋
1๏ธโฃ ํ๋กํผํฐ
altKey : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ alt ํค๋ฅผ ๋๋ ๋ ์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
button : ๋ง์ฐ์ค์์ ๋๋ฅธ ๋ฒํผ์ ํค ๊ฐ์ ๋ฐํํ๋ค.
charCode : keypress ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์ด๋ค ํค๋ฅผ ๋๋ ๋์ง ์ ๋์ฝ๋ ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
clientX : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
clientY : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
ctrlKey : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ Ctrl ๋ฅผ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
pageX : ํ์ฌ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
pageY : ํ์ฌ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
screenX : ํ์ฌ ํ๋ฉด ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
screenY : ํ์ฌ ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํํ๋ค.
shiftKey : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ shift ํค๋ฅผ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐํํ๋ค.
target : ์ด๋ฒคํธ๊ฐ ์ต์ด๋ก ๋ฐ์ํ ๋์์ ๋ฐํํ๋ค.
timeStamp : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๊ฐ์ ๋ฐํํ๋ค.
type : ๋ฐ์ํ ์ด๋ฒคํธ ์ด๋ฆ์ ๋ฐํํ๋ค.
which : ํค๋ณด๋์ ๊ด๋ จ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํค์ ์ ๋์ฝ๋ ๊ฐ์ ๋ฐํํ๋ค.
2๏ธโฃ ๋ฉ์๋
preventDefault() : ์ด๋ฒคํธ๋ฅผ ์ทจ์ํ ์ ์๋ ๊ฒฝ์ฐ์ ์ทจ์ํ๋ค.
4. this ์์ฝ์ด
event ๊ฐ์ฒด์๋ ์ด๋ฒคํธ ์ ๋ณด๋ง ๋ค์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ์์ this ์์ฝ์ด๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
5. addEventListener() ๋ฉ์๋
addEventListener() ๋ฉ์๋์ event ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์์์ ์ฌ๋ฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํด ์คํํ ์ ์๋ค.
์์.addEventListener(์ด๋ฒคํธ, ํจ์, ์บก์ณ ์ฌ๋ถ);
1๏ธโฃ ์ด๋ฒคํธ : ์ด๋ฒคํธ ์ ํ์ ์ง์ ํ๋ค.
2๏ธโฃ ํจ์ : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์คํํ ๋ช ๋ น์ด๋ ํจ์๋ฅผ ์ง์ ํ๋ค. event ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
3๏ธโฃ ์บก์ฒ์ฌ๋ถ : ์ด๋ฒคํธ๋ฅผ ์บก์ฒํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ true์ด๋ค.
true๋ ์บก์ฒ๋ง, false๋ ๋ฒ๋ธ๋ง์ด๋ค. ์บก์ฒ๋ง์ dom ์์ ๋ถ๋ชจ๋ ธ๋์์ ์์ ๋ ธ๋๋ก ์ ๋ฌ๋๋ ๊ฒ์ด๊ณ , ๋ฒ๋ธ๋ง์ dom ์ ์์ ๋ ธ๋์์ ๋ถ๋ชจ ๋ ธ๋๋ก ์ ๋ฌ๋๋ ๊ฒ์ด๋ค.
6. CSS ์์ฑ์ ์ ๊ทผํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ ์์ฑ๊ฐ์ ๊ฐ์ ธ์์ ๊ทธ ๊ฐ์ ์ํ๋๋๋ก ์์ ํ ์๋ ์๋ค.
document.์์๋ช .style.์์ฑ๋ช
* ์ฐ์ต๋ฌธ์
6๊ฐ์ ๋์ด๋ ์ด๋ฏธ์ง ์ค ํ๋๋ฅผ ํด๋ฆญํ๋ฉด ํฌ๊ฒ ๋ณด์๋ค๊ฐ ํ๋ฒ ๋ ํด๋ฆญํ๋ฉด ์ฌ๋ผ์ง๋๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>๋ผ์ดํธ๋ฐ์ค</title>
<link rel="stylesheet" href="css/lightbox.css">
</head>
<body>
<div class="row">
<ul>
<li><img src="images/tree-1-thumb.jpg" data-src="images/tree-1.jpg" class="pic"></li>
<li><img src="images/tree-2-thumb.jpg" data-src="images/tree-2.jpg" class="pic"></li>
<li><img src="images/tree-3-thumb.jpg" data-src="images/tree-3.jpg" class="pic"></li>
<li><img src="images/tree-4-thumb.jpg" data-src="images/tree-4.jpg" class="pic"></li>
<li><img src="images/tree-5-thumb.jpg" data-src="images/tree-5.jpg" class="pic"></li>
<li><img src="images/tree-6-thumb.jpg" data-src="images/tree-6.jpg" class="pic"></li>
</ul>
</div>
<div id="lightbox">
<img src="images/tree-1.jpg" alt="" id="lightboxImage">
</div>
<script>
var pics = document.getElementsByClassName("pic");
var lightbox = document.getElementById("lightbox");
var lightboxImage = document.getElementById("lightboxImage");
for(i = 0; i< pics.length; i++) {
pics[i].addEventListener("click", showLightbox);
}
function showLightbox() {
var bigLocation = this.getAttribute("data-src");
lightboxImage.setAttribute("src", bigLocation);
lightbox.style.display = "block";
}
lightbox.onclick = function() {
lightbox.style.display = "none";
}
</script>
</body>
</html>