[JavaScript] ๋ง์ฐ์ค ๋ฐ ํ ์ด๋ฒคํธ (onMouseEnter, onMouseLeave, onWheel)
ํ์ฌ ์๋น์ค๋ฅผ ๊ตฌํ ํ๋ฉด์ ํ์ฌ ์์ฒด ์ปดํฌ๋ํธ ํดํ ์คํ๋๋ฌธ์,
๋ง์ฐ์ค๊ฐ ํ ์คํธ ์์ ์กด์ฌ ํ์ง ์์์๋ ํ ์ด๋ฒคํธ ๋ฐ์์ ํดํ์ด ๊ณ์ ๋ ์๋ ํ์์ด ๋ฐ์ํ์๋ค.
๊ทธ๋์ tooltip์ด ๋ ์ผ ํ๋ ํ ์คํธ์ onMouseEnter, onMouseLeave, onWheel ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ค์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
onMouseEnter ์ด๋ฒคํธ
onMouseEnter ์ด๋ฒคํธ๋ ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ํน์ ์์์ ์ฒ์์ผ๋ก ๋ค์ด๊ฐ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ.
์ด ์ด๋ฒคํธ๋ ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ ์๋ก ์ด๋์ํฌ ๋ ํธ๋ฆฌ๊ฑฐ ๋๋ค.
onMouseEnter๋ ํด๋น ์์์ ์์ ์์์๋ ์ด๋ฒคํธ๋ฅผ ์ ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ์์์ ์์ ์์๊ฐ ๋ชจ๋ ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ ์ ์ฉํ๋ค.
onMouseLeave ์ด๋ฒคํธ
onMouseLeave ์ด๋ฒคํธ๋ ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ํน์ ์์๋ฅผ ๋ฒ์ด๋ฌ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ.
์ด ์ด๋ฒคํธ๋ ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์์ ๋ฐ์ผ๋ก ์ด๋์ํฌ ๋ ํธ๋ฆฌ๊ฑฐ ๋๋ค.
onMouseLeave ์ญ์ ๋ถ๋ชจ ์์์์ ๋ฐ์ํ ์ด๋ฒคํธ๊ฐ ์์ ์์๋ก ์ ํ๋์ง ์๋๋ค.
onWheel ์ด๋ฒคํธ
onWheel ์ด๋ฒคํธ๋ ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค ํ ์ ๊ตด๋ ธ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ.
์ด ์ด๋ฒคํธ๋ ์คํฌ๋กค์ ํ ๋ ํธ๋ฆฌ๊ฑฐ ๋๋ค.
onWheel ์ด๋ฒคํธ๋ ์์ง ๋ฐ ์ํ ํ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ ๊ฐ์งํ ์ ์๋ค.
์ ์ฉ ์์
import React, { useState, useEffect, useRef } from 'react';
import styled from 'styled-components';
const TooltipComponent = () => {
const [isTooltipVisible, setIsTooltipVisible] = useState(false);
const [isHovered, setIsHovered] = useState(false);
const [isScrolled, setIsScrolled] = useState(false);
//isHovered์ isScrolled ์ํ ๊ฐ์ง - tooltip ํ์ ์ฌ๋ถ ์ ์ด
useEffect(() => {
if (isHovered && !isScrolled) {
setIsTooltipVisible(true);
} else {
setIsTooltipVisible(false);
}
}, [isHovered, isScrolled]);
// ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ์์ญ์ ๋ค์ด์์ ๋
const handleMouseEnter = () => {
setIsHovered(true);
setIsScrolled(false);
};
// ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ์์ญ์ ๋ฒ์ด๋ฌ์ ๋
const handleMouseLeave = () => {
setIsHovered(false);
};
// ๋ง์ฐ์ค ํ ์ ๊ตด๋ ธ์ ๋
const handleWheel = () => {
setIsScrolled(true);
};
return (
<TooltipDiv
onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave}
onWheel={handleWheel}
>
Hover over me
<Tooltip visible={isTooltipVisible}>Tooltip Text</Tooltip>
</TooltipDiv>
);
};
export default TooltipComponent;
const TooltipDiv = styled.div`
position: relative;
display: inline-block;
cursor: pointer;
`;
const Tooltip = styled.div`
visibility: ${(props) => (props.visible ? 'visible' : 'hidden')};
background-color: #555;
color: #fff;
text-align: center;
border-radius: 5px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
opacity: 0.9;
`;
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ์ ์ฐฝ ๊ตฌํ - window.open (0) | 2024.05.20 |
---|---|
[JavaScript] javascript ์์๋ ๊ฒ (0) | 2023.01.31 |
[JavaScript] LocalStorage์ SessionStorage (0) | 2023.01.29 |
[JavaScript] async / await 2 (0) | 2023.01.26 |
[JavaScript] async / await 1 (1) | 2023.01.25 |
๋๊ธ