이미지 맵-마우스 오버시 및 마우스가 멈출 때만 도구 설명을 표시하는 방법

Marcin MaG

나는 자바 스크립트 초보자이고 이미지 맵에 대한 도구 설명을 div로 올바르게 표시하는 데 문제가 있습니다.

도구 설명은 커서가 요소 (태그 내에 정의 됨) 위에있을 때와 마우스가 그 위에있을 때만 나타나기를 원합니다.

추가 된 addEventListener 메서드로 인해 onmouseout 이벤트가 실행 된 후에도, 즉 커서가 주어진 요소를 떠날 때 툴팁이 표시되는 이유를 모르겠습니다.

https://jsfiddle.net/1b5mf06j/2/

function myFuncHide(el) {

 var tooltip = document.getElementById('myTooltip');
 tooltip.style.display = 'none';

}

function myFunc (el) {
var tooltip = document.getElementById('myTooltip');
var timeout;
document.addEventListener('mousemove', moving);

function moving() {

  if (timeout) clearTimeout(timeout);
  timeout = setTimeout(mouseStop, 450);}
  
function mouseStop() {
var tooltip = document.getElementById('myTooltip');
tooltip.style.display = 'block';}
 
}
#myTooltip {
  padding: 15px;
  background: rgba(0,0,0,.5);
  color: white;
  position: absolute;
  display: none;
}
<img src="http://tutorialspoint.com//images/usemap.gif" class="locations-map-full" alt="" usemap="#map">
<map name="map" id="locations-map">
 
<area shape="circle" coords="73,168,32" class="tooltip" onmouseover="myFunc(this)" onmouseout="myFuncHide(this)"/>
<area shape="poly" coords="74,0,113,29,98,72,52,72,38,27" class="tooltip" onmouseover="myFunc(this)" onmouseout="myFuncHide(this)"/>
<area shape="rect" coords="22,83,126,125" class="tooltip" onmouseover="myFunc(this)" onmouseout="myFuncHide(this)"/>
</map>
                    
               
<div id="myTooltip"> <p><img src="http://getbootstrap.com/apple-touch-icon.png" width="150px" height="150px" style="border: 1px solid #9b9999;"></p> </div>

침착

귀하의 mousemove청취자는에 document관계없이 마우스 (사실, 추가 청취자가이 지역을 입력으로 쌓여지고 계속)가는 곳의 효과 객체와 숙박.

다음은 mouseout이벤트에 정리를 추가하는 코드 재 배열입니다 . 리스너를 제거하고 시간 초과 변수를 지 웁니다.

또한 일반적인 코드 정리 작업을 수행했습니다. 더 나은 함수 이름. 일부 중복을 제거했습니다 (DRY 기억-반복하지 마십시오). 들여 쓰기. :)

var timeout;
var tooltipEl = document.getElementById('myTooltip');

function mouseMoving() {
  if (timeout) clearTimeout(timeout);
  
  timeout = setTimeout(function() {
     tooltipEl.style.display = 'block';
  }, 450);
}

function ingress () {
  document.addEventListener('mousemove', mouseMoving);
}

function egress() {
  // cleanup
  if (timeout) clearTimeout(timeout)
  document.removeEventListener("mousemove", mouseMoving)
  
  tooltipEl.style.display = 'none';
}

https://jsfiddle.net/alucheni/xmf5tjeh/25/ 에서 작동하는 버전을 볼 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

마우스 아웃시 또는 마우스 오버가 멈출 때 이미지 전환을 중지하는 방법

팝업이 표시되지 않을 때만 마우스 오버시 전단지 도구 설명 표시

마우스 오버시 및 마우스가 움직이지 않을 때 배경 GIF를 중지하고 JavaScript에서 움직일 때 및 마우스 오버시 GIF를 다시 시작하는 방법은 무엇입니까?

마우스 오버시 이미지를 표시하는 링크 구성 요소를 만드는 방법

마우스 오버시 도구 설명을 표시하는 방법은 무엇입니까?

마우스 오버시 도구 설명에 개체의 값을 표시하는 방법은 무엇입니까?

componentResized 메서드를 한 번만 호출하는 방법 (사용자가 마우스 버튼을 멈출 때)?

마우스를 올려 이미지 위에 설명을 표시하는 방법

마커 및 마우스 오버 툴팁을 사용하여 SVG 맵을 만드는 방법

WPF를 사용하여 .NET의 열 위로 마우스를 가져갈 때 설명의 도구 설명을 표시하는 방법은 무엇입니까?

마우스 오버시 간격을 일시 중지하고 마우스가 더 이상 위에 있지 않을 때 다시 시작하는 방법

마우스 오버시 이미지 마스크를 표시하는 방법

Tableau를 출력 한 후 도구 설명 유지 및 마우스 오버

jQuery에서 마우스 오버 및 마우스가 떠날 때 토글 스타일 변경을 얻는 방법

마커 및 팝업을 마우스로 가리킬 때지도 마커에 대한 팝업 표시, 마우스를 가리킬 때 팝업 숨기기

마우스 오버 도구로 최상위 이미지의 이름을 가져오고 고정 된 위치에 도구 설명을 표시합니다.

CSS를 사용하여 마우스 오버시 이미지의 불투명도를 변경하는 방법

<tr>에 마우스 오버 및 마우스 아웃을 '추가하는 방법'?

전체 테이블 행 위에 마우스를 올려 놓을 때 마우스 오버시 버튼을 표시하는 방법은 무엇입니까?

마우스 오버시 이미지 맵 변경 이미지

ComboBoxItem에 대한 도구 설명 표시-마우스를 이동 한 후에 작동하지만 처음 시도 할 때는 작동하지 않습니다.

부트 스트랩 드롭 다운 : 마우스 오버시 트리거하는 방법 (하나가 이미 열려있을 때만)

마우스 오버시 이미지 맵을 회색으로 만들고 나머지 이미지는 회색으로 유지하면서 마우스 오버 된 맵 영역에 색상을 복원하려면 어떻게해야합니까?

C3js에서 막대 차트의 도구 설명에 마우스를 올려 놓을 때 해당 막대에 대한 데이터 만 표시하도록하는 방법은 무엇입니까?

마우스 오버에 관계없이 항상 CanvasJS에 도구 설명 표시

텍스트 오버레이를 표시하고 마우스 오버시 이미지 투명도 적용

버튼 위로 마우스를 가져갈 때 이미지를 표시하는 방법 (상속 없음)

이미지 위로 마우스를 가져 가면 텍스트 및 불투명도 변경 표시

D3.js 도구 설명이 마우스 오버시 (또는 전혀) 표시되지 않음

TOP 리스트

  1. 1

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  2. 2

    MDRotatingPieChart를 회전하면 각도 대신 x / y 위치가 변경됩니다.

  3. 3

    c # 웹 사이트에서 텍스트를 복사하는 방법 (소스 코드 아님)

  4. 4

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  5. 5

    ArrayBufferLike의 typescript 정의의 깊은 의미

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    복사 / 붙여 넣기 비활성화

  8. 8

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    QT Designer를 사용하여 GUI에 이미지 삽입

  11. 11

    java Apache POI Word 기존 테이블 셀 스타일 및 서식이있는 행 삽입

  12. 12

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  13. 13

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  14. 14

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  15. 15

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  16. 16

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  17. 17

    dataSnapShot.getValue () 반환 데이터베이스에 그겁니다 데이터 종료 널 (null)

  18. 18

    ORA-12557 TNS : 프로토콜 어댑터를로드 할 수 없습니다

  19. 19

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  20. 20

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  21. 21

    C # Asp.net 웹 API-JSON / XML 변환기 API 만들기

뜨겁다태그

보관