ì¢íê³
í½ì ì ìì¹ë¥¼ ê·¸ëí½ ë§¥ë½ìì ì§ì í ë(ë§ì¹ ëìí ìì ì¢íê³ë¥¼ ì§ì íë ê²ì²ë¼), ê·¸ ìì¹ë ë§¥ë½ì ê³ ì ë ì ì 기ì¤ì¼ë¡ ì ìë©ëë¤. ì´ ê³ ì ë ì ì ìì ì´ë¼ê³ í©ëë¤. ìì¹ë ë§¥ë½ì ê° ì°¨ìì ë°ë¼ ìì ìì ë¨ì´ì§ í½ì ìë¡ ì§ì ë©ëë¤.
ì´ ìë´ìë CSS ê°ì²´ 모ë¸ìì ì¬ì©íë íì¤ ì¢íê³ë¤ì ì¤ëª í©ëë¤. ì´ë¬í íì¤ ì¢íê³ë ì¼ë°ì ì¼ë¡ ìì ì´ ìì¹íë ê³³ììë§ ì°¨ì´ê° ììµëë¤.
ì°¨ì
ì¹ ê¸°ì ìì ì¬ì©íë ì¢íê³ììë ê´ë¡ì ë°ë¼ ìí ì¤íì ì x-ì¢íë¼ê³ í©ëë¤. ì¬ê¸°ì ìì ê°ì ìì ì ì¼ìª½ì ìë ìì¹ë¥¼ ëíë´ê³ ìì ê°ì ìì ì ì¤ë¥¸ìª½ì ìë ìì¹ë¥¼ ëíë ëë¤. y-ì¢íë ìì§ ì¤íì ì ì§ì íë©°, ìì ê°ì ìì ì ìì ìë ìì¹ë¥¼, ìì ê°ì ìì ì ìëì ìë ìì¹ë¥¼ ëíë ëë¤.
ì¹ìì 기본 ìì ì 주ì´ì§ 컨í ì¤í¸ì ì¼ìª½ ìë¨ ëª¨ì리ì ìì¹íë©°(ìì y-ì¢í ê°ì ìì ìëì ìì¹), ì´ë ëë¶ë¶ì ìíì 모ë¸ê³¼ ë¬ë¦¬ ìì ì´ ì¼ìª½ íë¨ ëª¨ì리ì ìê³ ìì y-ì¢í ê°ì´ ìì ìì ìë¤ë ì ì ì ìíì¸ì.
3ì°¨ìì ì¬ì©íì¬ ê°ì²´ë¥¼ ììì ë¤ë¡ ë°°ì¹í ëë zì¶ì ì¬ì©í©ëë¤. zì¶ì ìì²ìë¡ë¶í° íë©´ì íë©´ê¹ì§ ì´ì´ì§ëë¤. CSS z-index ìì±ì ì´ ì¶ìì ë°°ì¹ë ììì ìì¹ì ìí¥ì ë¯¸ì³ ë ìë¡ë¶í° ë©ì´ì§ê±°ë ê°ê¹ìì§ë í¨ê³¼ë¥¼ ì ê³µí©ëë¤.
ì°¸ê³ :
ì¤ì ë¡ CSS ìì±ì¸ transform ë±ì ì¬ì©íì¬ ì´ë¬í ì¢íê³ì ì ìì ë°©í¥ì ë³ê²½íë ê²ì´ ê°ë¥í©ëë¤. ê·¸ë¬ë ì§ê¸ì íì¤ ì¢íê³ì ëí´ìë§ ì´ì¼ê¸°íê² ìµëë¤.
íì¤ CSSOM ì¢íê³
CSS ê°ì²´ 모ë¸ìì ì¬ì©ëë ë¤ ê°ì§ íì¤ ì¢íê³ê° ììµëë¤. 주ì ìì¤í ì ìê°ííë ë° ëìì´ ëëë¡ ë¤ì ë¤ì´ì´ê·¸ë¨ììë ë·°í¬í¸ ë°ì¼ë¡ ì¤í¬ë¡¤ë ë´ì©ì´ í¬í¨ë ë¸ë¼ì°ì ì°½ì´ ìë 모ëí°ë¥¼ ë³´ì¬ì¤ëë¤. ë·°í¬í¸ ë°ì¼ë¡ ì¤í¬ë¡¤ë íì´ì§ ì½í ì¸ ë "íì´ì§" ì¢íì ìì ì´ ì´ëì ìëì§ë¥¼ ëíë´ê¸° ìí´, ë¸ë¼ì°ì ì°½ ìì ë°í¬ëª íê² íìë©ëë¤. "í´ë¼ì´ì¸í¸", "íì´ì§" ë° "ë·°í¬í¸" ì¢íê³ì ìì ì ê°ì¡° íìë©ëë¤.
ì¤íì
"ì¤íì " 모ë¸ì ì¬ì©íì¬ ì§ì ë ì¢íë ê²ì¬ ì¤ì¸ ìì ëë ì´ë²¤í¸ê° ë°ìí ììì ì¼ìª½ ìë¨ ëª¨ì리를 ì¬ì©í©ëë¤.
ì를 ë¤ì´, ë§ì°ì¤ ì´ë²¤í¸ê° ë°ìíë©´ ì´ë²¤í¸ì offsetXì offsetYì ì§ì ë ë§ì°ì¤ ìì¹ë ì´ë²¤í¸ê° ì ë¬ë ë
¸ëì ì¼ìª½ ìë¨ ëª¨ì리를 기ì¤ì¼ë¡ ìëì ì¼ë¡ 주ì´ì§ëë¤. ìì ì padding-left ë° padding-topì ìí´ ì§ì ë 거리ë§í¼ ì쪽ì¼ë¡ ë¤ì´ê°ëë¤.
ë·°í¬í¸
"ë·°í¬í¸"(ëë "í´ë¼ì´ì¸í¸") ì¢íê³ë ì´ë²¤í¸ê° ë°ìí ë·°í¬í¸ ëë íì ë§¥ë½ì ì¼ìª½ ìë¨ì ìì ì¼ë¡ ì¬ì©í©ëë¤. ì´ë 문ìê° íìëë ì ì²´ 보기 ììì ëë¤.
ì를 ë¤ì´ ë°ì¤í¬í± ì»´í¨í°ììë MouseEvent.clientX ë° MouseEvent.clientY ìì±ì´ ì´ë²¤í¸ê° ë°ìí ìê°ì ë§ì°ì¤ 커ì ìì¹ë¥¼ ì°½ì ì¼ìª½ ìë¨ ëª¨ì리를 기ì¤ì¼ë¡ ëíë
ëë¤.
ì¤íì¼ë¬ì¤ë í¬ì¸í°ë¥¼ ì¬ì©í ë í°ì¹ ì´ë²¤í¸ìììTouch.clientXì Touch.clientY ì¢íë ëì¼í ìì ì 기ì¤ì¼ë¡ í©ëë¤.
ì°½ì ì¼ìª½ ì 모ì리ë 문ìì ë´ì©ì´ë ìíë ì¤í¬ë¡¤ì ê´ê³ìì´ íì (0, 0)ì ëë¤. ì¦, 문ì를 ì¤í¬ë¡¤íë©´ 문ì ë´ í¹ì ìì¹ì ë·°í¬í¸ ì¢íê° ë³ê²½ë©ëë¤.
íì´ì§
"íì´ì§" ì¢íê³ë ë ëë§ë ì ì²´ Documentì ì¼ìª½ ìë¨ ëª¨ì리를 기ì¤ì¼ë¡ í½ì
ì ìì¹ë¥¼ ì ê³µí©ëë¤. ì¦, 문ì ë´ì ìì ìì ìë ì ì ë ì´ììì´ ë³ê²½ëì´ ììê° ì´ëíì§ ìë í ì¬ì©ìê° ë¬¸ììì ìí ëë ìì§ì¼ë¡ ì¤í¬ë¡¤í íìë ëì¼í ì¢í를 ê°ì§ëë¤.
ë§ì°ì¤ ì´ë²¤í¸ì pageX ë° pageY ìì±ì ì´ë²¤í¸ê° ìì±ë ìì ìì 문ìì ì¼ìª½ ìë¨ ëª¨ì리를 기ì¤ì¼ë¡ ë§ì°ì¤ì ìì¹ë¥¼ ì ê³µí©ëë¤. í°ì¹ ì´ë²¤í¸ì Touch.pageX ë° Touch.pageY ì¢íë ëì¼í ìì ì 기ì¤ì¼ë¡ í©ëë¤.
íë©´
ë§ì§ë§ì¼ë¡ "íë©´" 모ë¸ììë ìì ì´ ì¬ì©ìì íë©´ ê³µê°ì ì¼ìª½ ìë¨ ëª¨ì리ì ëë¤. ì´ ì¢íê³ìì ê° ì ì íëì ë ¼ë¦¬ì í½ì ì ëíë´ë¯ë¡ ê° ì¶ì ë°ë¼ ê°ì´ ì ì ë¨ìë¡ ì¦ê°íê±°ë ê°ìí©ëë¤. ì를 ë¤ì´, í¬í¨ë ì°½ì´ ì´ëíê±°ë ì¬ì©ìì íë©´ 구ì±ì´ ë³ê²½ë ë (ëì¤íë ì´ í´ìë를 ë³ê²½íê±°ë 모ëí°ë¥¼ ì¶ê°íê±°ë ì ê±°í ë) 문ì ë´ ì£¼ì´ì§ ì ì ìì¹ê° ë³ê²½ë ì ììµëë¤.
MouseEvent.screenX ë° MouseEvent.screenY ìì±ì íë©´ ìì ì 기ì¤ì¼ë¡ ë§ì°ì¤ ì´ë²¤í¸ ìì¹ì ì¢í를 ì ê³µí©ëë¤. í°ì¹ ì´ë²¤í¸ì Touch.screenX ë° Touch.screenY ì¢íë ëì¼í ìì ì 기ì¤ì¼ë¡ í©ëë¤.
ìì
ìììì ë§ì°ì¤ ì¢í를 기ë¡íë ì를 ì´í´ë³´ê² ìµëë¤. ë§ì°ì¤ê° ì쪽 ììì ë¤ì´ê°ê±°ë, ë´ë¶ë¥¼ ëìë¤ëê±°ë, ì쪽 ìììì ëê° ëë§ë¤ ì¬ì© ê°ë¥í ë¤ ê°ì§ ìì¤í ê°ê°ìì íì¬ ë§ì°ì¤ ì¢í를 기ë¡íì¬ ì´ë²¤í¸ë¥¼ ì²ë¦¬í©ëë¤.
JavaScript
JavaScriptììë mouseenter, mousemove, mouseleave ê° ì´ë²¤í¸ ì íì ëí´ addEventListener() 를 í¸ì¶í´ ë´ë¶ ììì ì´ë²¤í¸ ì²ë¦¬ê¸°ë¥¼ ì¤ì í©ëë¤.
ê° ì´ë²¤í¸ì ëí´, ê° ìì¤í
ì ì¢í를 <p> ììì ë´ë¶ í
ì¤í¸ë¡ ì¤ì íë setCoords() í¨ì를 í¸ì¶í©ëë¤.
const log = document.querySelector(".log");
const inner = document.querySelector(".inner");
function setCoords(e) {
log.innerText = `
Offset X/Y: ${e.offsetX}, ${e.offsetY}
Viewport X/Y: ${e.clientX}, ${e.clientY}
Page X/Y: ${e.pageX}, ${e.pageY}
Screen X/Y: ${e.screenX}, ${e.screenY}`;
}
inner.addEventListener("mousemove", setCoords);
inner.addEventListener("mouseenter", setCoords);
inner.addEventListener("mouseleave", setCoords);
HTML
HTMLìë ë§ì°ì¤ ì´ë²¤í¸ì ë°ì´í°ë¥¼ íìíë "log" í´ëì¤ë¥¼ ê°ì§ <p>ê° í¬í¨ëì´ ìì¼ë©°, ì´ë ë§ì°ì¤ ì´ë²¤í¸ìì ë°ì´í°ë¥¼ íìí©ëë¤.
<div class="outer">
<div class="inner">
<p class="log">ì´ ì¹ì
ì ë§ì°ì¤ë¥¼ ì¬ë ¤ ì¢í를 íì¸íì¸ì</p>
</div>
</div>
CSS
í¬í¨íë ììì ëí "outer" í´ëì¤ë ë´ì©ì´ ì¤í¬ë¡¤ë ë ë§ì°ì¤ ì¢íì í¨ê³¼ë¥¼ ë³¼ ì ìëë¡ ìëì ì¼ë¡ ë§¤ì° ëìµëë¤. "inner" ë¨ë½ì ë§ì°ì¤ ì´ë²¤í¸ê° ì¶ì ëê³ ê¸°ë¡ëë ê³³ì
ëë¤.
.outer {
width: 1000px;
}
.inner {
font-family: monospace;
position: relative;
width: 500px;
height: 150px;
top: 25px;
left: 100px;
background-color: darkblue;
color: white;
cursor: crosshair;
user-select: none;
}
.log {
position: relative;
width: 100%;
text-align: center;
}
ê²°ê³¼
ì¬ê¸°ì ì¤ì 결과를 ë³¼ ì ììµëë¤. íëì ìì ìíì¼ë¡ ë§ì°ì¤ë¥¼ ì´ëíë©´ì ë¤ìí ì¢íê³ìì ë§ì°ì¤ì X ë° Y ì¢í ê°ì´ ë³ê²½ëë ê²ì íì¸íì¸ì.
í¨ê» 보기
-
CSS ë³í ì¬ì©í기 : ì¢íê³ë¥¼ ë³ê²½íë ë°©ë²
-
ë§ì°ì¤ ì´ë²¤í¸ì ì¢í -
í°ì¹ ì´ë²¤í¸ì ì¢í: