์ต๊ทผ ์ด๋ฒคํธ๋ฅผ ๊ณต๋ถํ๋ฉฐ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ์์ด ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
์ด๋ฒคํธ์ ๊ดํ ๊ธฐ๋ณธ์ ์ธ ์ด๋ก ์ ๋ค์ ๊ธ์์ ํ์ธ ํ ์ ์์ต๋๋ค.
๋ง์ฐ์ค ์ด๋ฒคํธ๋ฅผ ๋ณด๋ฉด mouseenter ์ด๋ฒคํธ์ mouseover ์ด๋ฒคํธ๋ ์ ์ฌํ๊ฒ ๋์ ํฉ๋๋ค.
๋ฐ๋๋๋ ๋์์ธ mouseleave์ mouseout ์ด๋ฒคํธ ์ญ์ ์ ์ฌํ๊ฒ ๋์ ๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ์ด๋ฒคํธ์ ์ฐจ์ด๋ฅผ ๊ฒ์ํด ๋ณด๋ฉด ์์ ์์์์ ์ํฅ์ ์ฃผ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ค๋ช ์ ์๋์ง๋ง, ์ ํํ ๋์์ ์ดํดํ๊ธฐ ์ํด์๋ ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ๊ฐ๋ ์ ์์์ผ ํฉ๋๋ค.
๊ฐ๋จํ๊ฒ ์ ์ํด ๋ณธ๋ค๋ฉด
capturing
์บก์ฒ๋ง์ด๋ ์ด๋ฒคํธ๊ฐ ์์ ์์์์ ํ์ ์์ ๋ฐฉํฅ์ผ๋ก ์ ํ๋๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ์ต์์(๋ธ๋ผ์ฐ์ ์ ์ต์์ ๊ฐ์ฒด๋ window) ๋ถํฐ ํด๋น ์ด๋ฒคํธ ํ๊ฒ ๋ฐฉํฅ์ผ๋ก ์ ํ ๋๋ ๊ฒ์ ๋งํฉ๋๋ค.
bubbling
๋ฒ๋ธ๋ง์ด๋ ์บก์ฒ๋ง ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ด๋ฒคํธ ํ๊ฒ์์ ์์์์๋ก ์ด๋ฒคํธ๊ฐ ์ ํ๋๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
์ด ๋จ๊ณ์์ ์์ ์์์์ ์ด๋ฒคํธ๊ฐ ์บ์น ๋ ์ ์์ต๋๋ค.
capturing ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก ์ ์บก์ฒ๋ง ์ฌ๋ถ๋ฅผ ์ค์ ํด์ค์ผ ํฉ๋๋ค.
bubbling ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์์๋ก ์ด๋ฒคํธ๊ฐ ์ ํ๋๋ ๊ณผ์ ์์ ์คํ ๋ฉ๋๋ค.
์ ์ด๋ก ์ ์ดํดํ๊ณ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ๋์๊ณผ ์ฐจ์ด๋ฅผ ์์๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
mouse ์ด๋ฒคํธ
mouseenter : ๋ง์ฐ์ค ์ปค์๋ฅผ HTML ์์ ์์ผ๋ก ์ด๋ํ์ ๋ ๋ฐ์ (๋ฒ๋ธ๋ง ๋์ง ์๋๋ค)
mouseover : mouseenter ์ ๋์ผํ๊ฒ ๋ง์ฐ์ค ์ปค์ค๋ฅผ HTML ์์ ์์ผ๋ก ์ด๋ํ์ ๋ ๋ฐ์ (๋ฒ๋ธ๋ง ๋๋ค)
mouseleave : ๋ง์ฐ์ค ์ปค์๋ฅผ HTML ์์ ๋ฐ์ผ๋ก ์ด๋ํ์ ๋ ๋ฐ์ (๋ฒ๋ธ๋ง ๋์ง ์๋๋ค)
mouseout : mouseleave ์ ๋์ผํ๊ฒ ๋ง์ฐ์ค ์ปค์๋ฅผ HTML ์์ ๋ฐ์ผ๋ก ์ด๋ํ์ ๋ ๋ฐ์ (๋ฒ๋ธ๋ง ๋๋ค)
์ฆ, ์ ๋ฆฌํ์๋ฉด mouseover ์ mouseleave๋ ๋ฒ๋ธ๋ง ๋จ๊ณ์์ ์บ์น ๋๊ธฐ ๋๋ฌธ์ ํ์ ์์์์ ์ด๋ฒคํธ ๋ฐ์ ์ ์์ ์์์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
๊ฐ๋จํ ์์ ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์ํํด ๋ณด๋ฉด ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
<!DOCTYPE html>
<html>
<style>
.over{
display: flex;
background-color: antiquewhite;
width: 300px;
height: 300px;
align-items: center;
justify-content: center;
}
.out {
background-color: aqua;
width: 150px;
height: 150px;
}
.enter{
display: flex;
align-items: center;
justify-content: center;
background-color: lightcoral;
width: 300px;
height: 300px;
}
.leave {
background-color: firebrick;
width: 150px;
height: 150px;
}
</style>
<body>
<div class="over">
<div class="out"></div>
</div>
<hr/>
<div class="enter">
<div class="leave"></div>
</div>
<script>
const over = document.querySelector('.over');
const out = document.querySelector('.out');
const enter = document.querySelector('.enter');
const leave = document.querySelector('.leave');
over.addEventListener('mouseover',()=>{
console.log('outerDiv ์์ mouseover ๋ฐ์');
});
out.addEventListener('mouseout', ()=>{
console.log('innerDiv ์์ mouseout ๋ฐ์');
});
enter.addEventListener('mouseenter', ()=>{
console.log('outerDiv ์์mouseenter ๋ฐ์');
});
leave.addEventListener('mouseleave', ()=>{
console.log('innerDiv ์์ mouseleave ๋ฐ์');
});
</script>
</body>
</html>
'javascript > ๐ tips' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋งฅ๋ถ ์ด๊ธฐ ์ธํ ๊ธฐ๋ก (0) | 2023.08.15 |
---|---|
scrollIntoVeiw๋ก ์คํฌ๋กค ํญ์ ์๋๋ก ์ ์งํ๊ธฐ(+ ํค๋ณด๋ Enter ์ด๋ฒคํธ) (0) | 2022.06.30 |
๋๊ธ