利用pageX、pageY动态的改变div的位置

1.需求是:当鼠标动态的变化时,即鼠标在不同的DOM上触发事件,div的位置也会不断的发生改变。

2.效果图

3.代码如下:

<! DOCTYPE html >
< html lang = "en" >

< head >
< title > js控制div位置动态变化 </ title >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< script src = "js/jquery.js" > < / script >
< style >
.preview {
width : 100px ;
height : 100px ;
border : 1px solid gray ;
margin-left : 20px ;
float : left ;
}
#preview {
width : 300px ;
height : 200px ;
border : 1px solid gray ;
position : absolute ;
}
< / style >
</ head >

< body >
< div class = "container" >
< div class = "preview" ></ div >
< div class = "preview" ></ div >
< div class = "preview" ></ div >
< div class = "preview" ></ div >
</ div >
< script >
//offset() 方法返回或设置匹配元素相对于文档的偏移(位置)。
this . imagePreview = function () {
// 起始偏移量
xOffset = 10 ;
yOffset = 30 ;
$ ( ".preview" ). hover ( function ( e ) {
$ ( "body" ). append ( "<div id='preview'></div>" );
// pageX() 属性是鼠标指针的位置,相对于文档的左边缘
// pageY() 属性是鼠标指针的位置,相对于文档的上边缘。
$ ( "#preview" )
. css ( "top" , ( e . pageY - xOffset) + "px" )
. css ( "left" , ( e . pageX + yOffset) + "px" )
. fadeIn ( "fast" );
},
function () {
$ ( "#preview" ). remove ();
}
);
// 当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件。
$ ( ".preview" ). mousemove ( function ( e ) {
$ ( "#preview" )
. css ( "top" , ( e . pageY - xOffset) + "px" )
. css ( "left" , ( e . pageX + yOffset) + "px" );
});
};
$ ( document ). ready ( function () {
imagePreview ();
});
< / script >
</ body >

</ html >


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过监听鼠标移动事件来实现改变div的移动。具体方式如下: 1. 获取待移动的div元素,并设置其初始位置。 2. 监听鼠标移动事件,获取鼠标相对于文档的坐标,计算出待移动的div元素应该移动到的位置。 3. 使用CSS3的transform属性来改变div元素的位置,实现平滑的移动效果。 下面是一个简单的实现示例: ```html <!DOCTYPE html> <html> <head> <title>Move Div with Mouse</title> <style> #moveDiv { position: absolute; top: 100px; left: 100px; width: 100px; height: 100px; background-color: red; transition: transform 0.2s ease-out; } </style> </head> <body> <div id="moveDiv"></div> <script> var moveDiv = document.getElementById('moveDiv'); var startX, startY, offsetX, offsetY; moveDiv.addEventListener('mousedown', function(event) { startX = event.pageX; startY = event.pageY; offsetX = moveDiv.offsetLeft; offsetY = moveDiv.offsetTop; document.addEventListener('mousemove', moveHandler); }); document.addEventListener('mouseup', function(event) { document.removeEventListener('mousemove', moveHandler); }); function moveHandler(event) { var moveX = event.pageX - startX; var moveY = event.pageY - startY; moveDiv.style.transform = 'translate(' + (offsetX + moveX) + 'px, ' + (offsetY + moveY) + 'px)'; } </script> </body> </html> ``` 这个示例中,我们监听了moveDiv元素的mousedown事件,并在事件处理函数中记录了鼠标点击时的坐标和div元素的初始位置。然后,我们在document上监听了mousemove和mouseup事件,分别在mousemove事件处理函数中计算出鼠标相对于初始位置的偏移量,并使用translate()函数来改变div元素的位置。mouseup事件处理函数用于取消mousemove事件的监听。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值