ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ“์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์ด๋ž€?

๊ฑฐํ’ˆ์ด ๊ณ„์†ํ•ด์„œ ์ปค์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‚ด๋ถ€์— ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์™ธ๋ถ€๋Ÿฌ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ํ˜„์ƒ์ด๋‹ค.

 

์˜ˆ์‹œ๋กœ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

๋ชจ๋‹ฌ์ฐฝ ์„ธํŒ…

[index.html]

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

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<!-- css ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ -->
	<link rel="stylesheet" href="styles.css">
	<title>Document</title>
</head>

<body>
	<div>๋ณธ๋ฌธ</div>
	<button class="modal-btn">๋ชจ๋‹ฌ์—ด๊ธฐ</button>
	<div class="modal">
		<div class="modal-content">
			<input class="์•„์ด๋””" type="text" placeholder="์•„์ด๋””" />
			<input class="๋น„๋ฐ€๋ฒˆํ˜ธ" type="password" placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ" />
			<button class="login">๋กœ๊ทธ์ธํ•˜๊ธฐ</button>
			<button class="close-btn">๋‹ซ๊ธฐ</button>
		</div>
	</div>
	<!-- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ -->
	<script src="script.js"></script>
</body>

</html>

 

[styles.css]

.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: gray;
  opacity: 0.8;
  /* ์ถ”๊ฐ€ */
  display: none;
  padding-top: 100px;
}

.modal-content {
  width: 200px;
  height: 200px;
  background-color: white;
  padding: 20px;
  margin: auto;
}

/* ์ถ”๊ฐ€ */
.show {
  display: block;
}

 

 

[script.js]

function ๋ชจ๋‹ฌ์ฐฝ์—ด๋‹ซ() {
  document.querySelector(".modal").classList.toggle("show");
}

document.querySelector(".modal-btn").addEventListener("click", ๋ชจ๋‹ฌ์ฐฝ์—ด๋‹ซ);

document.querySelector(".close-btn").addEventListener("click", ๋ชจ๋‹ฌ์ฐฝ์—ด๋‹ซ);

 

 

๋ชจ๋‹ฌ์ฐฝ ์™ธ๋ถ€์˜ ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ฐฝ์ด ๋‹ซํžˆ๋„๋ก ๊ตฌํ˜„

1. ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ ํƒœ๊ทธ ๊ฐ€์ ธ์˜ค๊ธฐ

document.querySelector(".modal");

 

2. ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ ํด๋ฆญ ์ด๋ฒคํŠธ ๋“ฑ๋กํ•˜๊ธฐ

document.querySelector(".modal").addEventListener("click", function ํ•จ์ˆ˜๋ช…() {})

 

3. ํด๋ฆญ ์ด๋ฒคํŠธ ์‹œ ๋ชจ๋‹ฌ์ฐฝ ๋‹ซํžˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ

document.querySelector(".modal").addEventListener("click", function ํ•จ์ˆ˜๋ช…() {
	document.querySelector(".modal").classList.remove("show");
})

 

 

 

<div> // ์–˜๋ฅผ ํด๋ฆญํ•˜๊ฒŒ ๋จ
	<div> // ์–˜๋ฅผ ํด๋ฆญํ•˜๋ฉด
		ํ•˜ํ•ณ
	</div>
<div>

 

=> ๋ชจ๋‹ฌ์ฐฝ ๋‚ด๋ถ€๋ฅผ ํด๋ฆญํ•ด๋„ ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์„ ํด๋ฆญํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ธ์‹ํ•จ

 

 

 

๐Ÿ“ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์„ ๋ง‰์•„์•ผ ํ•œ๋‹ค!

 

event ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ(์ด๋ฒคํŠธ ๋“ฑ๋ก ์‹œ ์ž๋™์œผ๋กœ ์ƒ๊ธด๋‹ค.)

document.querySelector(".modal").addEventListener("click", function ํ•จ์ˆ˜๋ช…(event) {
	// ์—ฌ๊ธฐ์„œ ์ด๋ฒคํŠธ ํ™œ์šฉ ๊ฐ€๋Šฅ
	event.target; // ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๋ฅธ ํƒœ๊ทธ
	event.currentTarget; // ์ด๋ฒคํŠธ๊ฐ€ ๋“ฑ๋ก๋œ ํƒœ๊ทธ ex) document.querySelector(".modal")
	event.preventDefault(); // ๊ธฐ๋ณธ ๋™์ž‘ ๋ง‰์Œ ex) form ์ œ์ถœ ์‹œ ์ƒˆ๋กœ๊ณ ์นจ ๋ง‰์Œ
	event.stopPropagation(); // ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์„ ๋ง‰์•„์คŒ
});

 

 

๋ฌธ์ œ

event.target์„ ์‚ฌ์šฉํ•ด์„œ ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ์„ ํด๋ฆญํ•  ๋•Œ๋งŒ ๋ชจ๋‹ฌ์ฐฝ ๋‹ซํžˆ๊ฒŒ ํ•˜๊ธฐ.

document.querySelector(".modal").addEventListener("click", (event) => {
	// ํด๋ฆญํ•œ ๋†ˆ์ด ๋ชจ๋‹ฌ ๋ฐฐ๊ฒฝ์ผ ๋•Œ => ๋‹ซํžˆ๊ฒŒ ํ•œ๋‹ค.
  if (ํด๋ฆญํ•œ ๋†ˆ === ๋ชจ๋‹ฌ ๋ฐฐ๊ฒฝ ํƒœ๊ทธ) {
		๋ชจ๋‹ฌ์ฐฝ ์•ˆ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ
  }
});

 

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

์ •๋‹ต 

document.querySelector(".modal").addEventListener("click", (event) => {
  if (event.target === document.querySelector(".modal")) {
    document.querySelector(".modal").classList.remove("show");
  }
});
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ