使用toolTip,鼠标悬停在一个div上,其他的div出现提示框是怎么回事
时间: 2024-02-24 17:57:00 浏览: 28
如果在悬停在一个div上时,其他的div也出现了提示框,通常是因为这些div共享了同一个tooltip元素。
在使用tooltip时,通常是将tooltip元素添加到需要悬停的元素的子元素中,并使用CSS将其隐藏。然后,当鼠标悬停在该元素上时,使用Javascript或CSS将tooltip元素显示出来。
如果多个div共享同一个tooltip元素,那么当鼠标悬停在一个div上时,其他的div也会受到影响,同时显示出相同的tooltip。
为了解决这个问题,可以为每个div都创建一个独立的tooltip元素。可以使用Javascript动态创建这些元素,并为每个元素设置不同的ID或class。然后,在鼠标悬停在一个div上时,只显示与该div相关的tooltip元素。
下面是一个使用Javascript创建多个独立tooltip元素的示例代码:
HTML:
```
<div class="tooltip" data-tooltip="Tooltip 1">Hover me 1</div>
<div class="tooltip" data-tooltip="Tooltip 2">Hover me 2</div>
<div class="tooltip" data-tooltip="Tooltip 3">Hover me 3</div>
```
Javascript:
```
const tooltips = document.querySelectorAll('.tooltip');
tooltips.forEach((tooltip) => {
const tooltipText = tooltip.getAttribute('data-tooltip');
const tooltipElement = document.createElement('div');
tooltipElement.classList.add('tooltip-element');
tooltipElement.textContent = tooltipText;
document.body.appendChild(tooltipElement);
tooltip.addEventListener('mouseover', () => {
const tooltipPosition = tooltip.getBoundingClientRect();
tooltipElement.style.top = tooltipPosition.bottom + 'px';
tooltipElement.style.left = tooltipPosition.left + 'px';
tooltipElement.classList.add('visible');
});
tooltip.addEventListener('mouseout', () => {
tooltipElement.classList.remove('visible');
});
});
```
在这个示例中,我们首先获取了所有具有`.tooltip`类的元素,并通过`getAttribute`方法获取了它们的`data-tooltip`属性,用于创建tooltip元素的文本内容。
然后,我们使用`document.createElement`方法动态创建了一个div元素,并为其添加了`.tooltip-element`类,该类用于控制tooltip元素的样式。我们还将tooltip元素添加到了`document.body`中,以便在页面任何位置都可以显示。
接下来,我们使用`addEventListener`方法为每个`.tooltip`元素添加了`mouseover`和`mouseout`事件监听器。当鼠标悬停在某个元素上时,我们可以使用`getBoundingClientRect`方法获取该元素的位置信息,并使用该信息将tooltip元素定位到该元素的下方。
最后,我们为tooltip元素添加了`.visible`类,用于显示该元素,并在鼠标移出时移除该类,以便隐藏tooltip元素。