[英]popup text on mouse hover over svg element not removing when U put mouse out
当我将 hover 移到 svg 元素上时,div 会弹出,但当我移开鼠标时,文本仍在框中。
我试图将 mouseout 更改为 mouseremove 但没有任何改变
const svgElement = document.querySelector('.svaly'); svgElement.addEventListener('mouseover', function() { const popup = document.createElement('div'); popup.classList.add('popup'); popup.innerHTML = 'This is a pop-up comment'; document.body.appendChild(popup); }); svgElement.addEventListener('mouseout', function() { const popup = document.querySelector('.popup'); document.body.removeChild(popup); });
.popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: white; color: black; border: 1px solid black; padding: 20px; width: 200px; }
<svg class="svaly" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <circle cx="50" cy="50" r="50" /> </svg> <div class="popup"></div>
您正在嵌套弹出窗口。
此外,svg 不是圆形而是方形,因此您需要查看圆形元素
注意:您需要更多代码以允许弹出窗口在将鼠标悬停在其上时保留
const svgElement = document.getElementById('circle'); svgElement.addEventListener('mouseover', function() { const popup = document.createElement('div'); popup.classList.add('popup'); popup.innerHTML = 'This is a pop-up comment'; document.body.appendChild(popup); }); svgElement.addEventListener('mouseout', function() { const popup = document.querySelector('.popup'); popup.remove() });
.popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: white; color: black; border: 1px solid black; padding: 20px; width: 200px; }
<svg class="svaly" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <circle id="circle" cx="50" cy="50" r="50" /> </svg>
这是一个更简单的版本
注意指针事件:无; - 如果你需要点击弹出窗口,那将不起作用
const svgElement = document.getElementById('circle'); const popup = document.getElementById('popup'); svgElement.addEventListener('mouseenter', () => popup.hidden = false); svgElement.addEventListener('mouseleave', () => popup.hidden = true);
#popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: white; color: black; border: 1px solid black; padding: 20px; width: 200px; pointer-events: none; }
<svg class="svaly" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <circle id="circle" cx="50" cy="50" r="50" /> </svg> <div id="popup" hidden>This is a pop-up comment</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.