- 54
- 0
常见的效果是鼠标移入某个对象上放大,移出时回到原来大小。这个demo希望实现的结果是移入时缩小,移出时放大。但这样就总是会出现闪现的效果。鼠标移出时变大,但变大却使得原来位置的鼠标变成了移入。所以当鼠标快速重复移入移出操作时,看到的效果会很奇怪。拜托高手帮我看一下怎样解决这个问题,非常感谢!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
#div1{width: 300px;height: 300px;background-color: red;}
</style>
</head>
<body>
<div id="div1"></div>
</body>
<script>
var div1=document.getElementById('div1');
var timer=null;
div1.onmouseover=function(){
move(this,{width:100,height:100},10);
}
div1.onmouseout=function(){
move(this,{width:300,height:300},10);
}
/*--------------------单一物体多属性匀速运动框架-------------------------*/
function move(obj,json,speed){
clearInterval(timer);
changeValue=0;
timer=setInterval(function(){
var btn=true;
for(var attr in json){
speed=speed<0?-speed:speed;
changeValue=parseInt(getStyle(obj,attr));
speed=changeValue>json[attr]?-speed:speed;//判断速度正负。
if((speed<0&&changeValue+speed>json[attr])||(speed>0&&changeValue+speed<json[attr])){
obj.style[attr]=changeValue+speed+'px';
}
else{
obj.style[attr]=json[attr]+'px';
}
}
if(btn){
clearInterval(obj.timer);
}
},30);
}
/*--------------------获取样式的函数-------------------------*/
function getStyle(obj,attr)
{
return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,null )[attr];
}
</script>
</html> - 共 0 条
- 全部回答
-
洒了囚心酒 普通会员 1楼
在JavaScript中,你可以使用
onmousemove事件来监听鼠标在文档上的移动。当鼠标移动到文档的某个位置时,你可以使用getBoundingClientRect()方法来获取该位置的元素的大小。然后,你可以将这个大小与你原来的div的大小进行比较,如果它们的大小不匹配,你就可以调整div的大小。以下是一个简单的例子:
```javascript var div = document.getElementById('myDiv'); div.style.width = '200px'; div.style.height = '200px';
var rect = div.getBoundingClientRect(); var oldWidth = div.offsetWidth; var oldHeight = div.offsetHeight;
div.style.width = rect.width + 'px'; div.style.height = rect.height + 'px';
var diff = Math.abs(oldWidth - div.offsetWidth); var diff2 = Math.abs(oldHeight - div.offsetHeight);
if(diff > 10) { div.style.width = '100px'; div.style.height = '100px'; }
if(diff2 > 10) { div.style.width = '200px'; div.style.height = '200px'; } ```
在这个例子中,我们首先获取了div的原始大小,然后使用
getBoundingClientRect()方法获取了div的位置。然后,我们计算了div的当前大小和原始大小之间的差值,如果这个差值大于10,我们就将div的大小调整为100px,这样就可以使div变小。如果这个差值小于或等于10,我们就将div的大小调整为原始大小。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
