html 在列表中点击一个超链接在下方显示一个组件或者div,显示位置是悬浮在点击位置
时间: 2024-03-22 10:40:28 浏览: 64
鼠标悬浮显示.html
好的,您可以参考下面的 HTML 和 CSS 代码实现:
```html
<!DOCTYPE html>
<html>
<head>
<title>超链接悬浮显示组件</title>
<style type="text/css">
.container {
position: relative;
width: 500px;
height: 500px;
margin: auto;
}
.popup {
position: absolute;
background-color: #fff;
border: 1px solid #ddd;
padding: 10px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
display: none;
}
.list-item {
margin: 10px;
padding: 10px;
border: 1px solid #ddd;
cursor: pointer;
}
</style>
</head>
<body>
<div class="container">
<div class="list-item" data-popup-target="popup-1">超链接 1</div>
<div class="list-item" data-popup-target="popup-2">超链接 2</div>
<div class="list-item" data-popup-target="popup-3">超链接 3</div>
<div class="list-item" data-popup-target="popup-4">超链接 4</div>
<div class="popup" id="popup-1">组件 1</div>
<div class="popup" id="popup-2">组件 2</div>
<div class="popup" id="popup-3">组件 3</div>
<div class="popup" id="popup-4">组件 4</div>
</div>
<script type="text/javascript">
const listItems = document.querySelectorAll('.list-item');
const popups = document.querySelectorAll('.popup');
let activePopup = null;
listItems.forEach(item => {
item.addEventListener('click', () => {
// 隐藏当前的弹出框
if (activePopup) {
activePopup.style.display = 'none';
}
// 显示对应的弹出框
const popupId = item.getAttribute('data-popup-target');
const popup = document.getElementById(popupId);
popup.style.display = 'block';
// 记录当前的弹出框
activePopup = popup;
});
item.addEventListener('mousemove', event => {
// 移动弹出框的位置
const popupId = item.getAttribute('data-popup-target');
const popup = document.getElementById(popupId);
popup.style.top = event.pageY + 'px';
popup.style.left = event.pageX + 'px';
});
});
</script>
</body>
</html>
```
以上代码中,我们使用了一个包含了多个列表项和弹出框的容器 `container`。每个列表项都有一个 `data-popup-target` 属性,用于指定对应的弹出框的 ID。弹出框使用了 `popup` 类作为样式,并设置了 `display: none;` 使其一开始不可见。
在 JavaScript 中,我们首先使用 `querySelectorAll` 方法获取所有的列表项 `listItems` 和弹出框 `popups`。然后使用一个变量 `activePopup` 记录当前激活的弹出框,初始化为 `null`。
对于每个列表项,我们添加两个事件监听器。一个是 `click` 事件,用于显示对应的弹出框。另一个是 `mousemove` 事件,用于在鼠标移动时跟随鼠标移动弹出框。
在 `click` 事件中,我们首先隐藏当前的弹出框(如果有的话),然后显示对应的弹出框。在 `mousemove` 事件中,我们获取对应的弹出框,并设置其 `top` 和 `left` 属性使其跟随鼠标移动。
需要注意的是,弹出框的定位是相对于包含它的容器 `container` 的。如果需要将容器放在页面的某个位置,可以使用 `position: absolute;` 和 `left`、`top` 属性来实现。
阅读全文