html 跟随鼠标光标移动的div
时间: 2023-10-21 18:59:36 浏览: 488
要实现跟随鼠标光标移动的 div,可以使用 CSS 和 JavaScript 来完成。
首先,我们需要将 div 的位置设置为绝对定位,并且将其 z-index 属性设置为更高的值,以确保它始终处于页面上方。
然后,我们可以使用 JavaScript 的 mousemove 事件来获取鼠标的坐标,并将 div 的位置设置为鼠标的坐标。
具体实现代码如下:
HTML 代码:
```html
<div id="followDiv">跟随鼠标光标移动的 div</div>
```
CSS 代码:
```css
#followDiv {
position: absolute;
z-index: 9999;
}
```
JavaScript 代码:
```javascript
var followDiv = document.getElementById('followDiv');
window.addEventListener('mousemove', function(e) {
var x = e.clientX;
var y = e.clientY;
followDiv.style.left = x + 'px';
followDiv.style.top = y + 'px';
});
```
这样就可以实现一个跟随鼠标光标移动的 div 了。
相关问题
让一个物品跟随鼠标移动 html
### HTML 实现页面元素跟随鼠标移动
为了创建一个能够响应鼠标的动态效果,可以利用JavaScript监听`mousemove`事件并实时更新目标元素的位置。下面是一个简单的例子来展示如何让某个特定的HTML元素随着用户的鼠标位置而变化。
#### 创建基础结构
首先定义好基本的HTML文档框架以及准备要被拖拽的对象:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Mouse Follow Element</title>
<style>
.follower {
position: absolute;
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div class="follower"></div>
<script src="script.js"></script>
</body>
</html>
```
这段代码设置了一个红色方块作为追踪对象[^1]。
#### 添加交互逻辑
接下来,在外部文件 `script.js` 中编写必要的脚本来处理鼠标的动作,并相应调整`.follower`类所代表元素的位置:
```javascript
document.addEventListener('DOMContentLoaded', function () {
const follower = document.querySelector('.follower');
document.body.onmousemove = (event) => {
let mouseX = event.clientX - follower.offsetWidth / 2;
let mouseY = event.clientY - follower.offsetHeight / 2;
follower.style.transform = `translate(${mouseX}px, ${mouseY}px)`;
};
});
```
此段脚本通过监听整个页面上的`onmousemove`事件获取当前光标坐标,再减去半个元素尺寸以使中心点对齐,最后应用CSS变换属性完成平滑过渡[^2]。
初始状态页面显示3幅小图,当光标移动到小图上时,显示该图的大图和标题。当光标在小图所在的范围内移动时,大图和标题也跟着光标移动。当光标移出小图时,大图和标题不再显示。
这个功能可以通过HTML、CSS和JavaScript实现。以下是一种实现方式:
HTML部分:
```html
<div class="image-container">
<div class="image">
<img src="small-image-1.jpg" alt="Small Image 1">
<div class="title">Small Image 1 Title</div>
</div>
<div class="image">
<img src="small-image-2.jpg" alt="Small Image 2">
<div class="title">Small Image 2 Title</div>
</div>
<div class="image">
<img src="small-image-3.jpg" alt="Small Image 3">
<div class="title">Small Image 3 Title</div>
</div>
</div>
<div class="big-image-container">
<img class="big-image" src="">
<div class="big-image-title"></div>
</div>
```
CSS部分:
```css
.image-container {
display: flex;
justify-content: space-between;
}
.image {
position: relative;
}
.title {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: rgba(0, 0, 0, 0.5);
color: white;
text-align: center;
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s ease-in-out;
}
.image:hover .title {
visibility: visible;
opacity: 1;
}
.big-image-container {
position: fixed;
top: 0;
left: 0;
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s ease-in-out;
}
.big-image {
max-height: 90vh;
max-width: 90vw;
display: block;
margin: auto;
}
.big-image-title {
text-align: center;
font-size: 1.5em;
font-weight: bold;
margin-top: 1em;
}
```
JavaScript部分:
```javascript
const smallImages = document.querySelectorAll('.image');
const bigImageContainer = document.querySelector('.big-image-container');
const bigImage = document.querySelector('.big-image');
const bigImageTitle = document.querySelector('.big-image-title');
let currentImage = null;
smallImages.forEach((smallImage) => {
smallImage.addEventListener('mouseenter', () => {
const smallImageRect = smallImage.getBoundingClientRect();
bigImageContainer.style.top = `${smallImageRect.top}px`;
bigImageContainer.style.left = `${smallImageRect.right + 10}px`;
bigImage.setAttribute('src', smallImage.querySelector('img').getAttribute('src'));
bigImageTitle.textContent = smallImage.querySelector('.title').textContent;
bigImageContainer.style.visibility = 'visible';
bigImageContainer.style.opacity = 1;
currentImage = smallImage;
});
});
document.addEventListener('mousemove', (event) => {
if (currentImage) {
const currentImageRect = currentImage.getBoundingClientRect();
if (event.clientX < currentImageRect.left || event.clientX > currentImageRect.right || event.clientY < currentImageRect.top || event.clientY > currentImageRect.bottom) {
bigImageContainer.style.visibility = 'hidden';
bigImageContainer.style.opacity = 0;
currentImage = null;
} else {
bigImageContainer.style.top = `${event.clientY}px`;
bigImageContainer.style.left = `${event.clientX + 10}px`;
}
}
});
```
这段代码的作用是,当鼠标移动到小图上时,获取小图的位置和标题,显示大图和标题,并将当前小图保存到变量中。当鼠标在小图范围内移动时,大图和标题跟随鼠标移动。当鼠标移出小图时,隐藏大图和标题,并清空当前小图变量。
阅读全文
相关推荐















