老师这段代码还是有点小BUG啊,为什么在IE中当鼠标悬浮到小图片所在范围边框时,放大镜就会出了小图片的范围跑到外面去了,这是为什么啊? 课程下载的源代码也是这样。
3 回答
最终找到了解决方法:
问题的原因:由于demo的盒子比img要大两个像素的边框,smallbox的盒子比demo的盒子又大两个像素的边框,所以会出现超出边框的情况。
解决方法:将在计算中用smallbox的长宽值替换成smallimg原本的长宽值,即可解决BUG。
```
var ObjSmallbox = $("small-box");
var ObjSmallimg = ObjSmallbox.getElementsByTagName("img")[0];
//获取floatbox的定位值
var left = _event.clientX - ObjDemo.offsetLeft - ObjSmallbox.offsetLeft - ObjFloatBox.offsetWidth / 2;
var top = _event.clientY - ObjDemo.offsetTop - ObjSmallbox.offsetTop - ObjFloatBox.offsetHeight / 2;
if(left < 0) left = 0;
else if(left > (ObjSmallimg.offsetWidth - ObjFloatBox.offsetWidth))
left = ObjSmallimg.offsetWidth - ObjFloatBox.offsetWidth;
if(top < 0) top = 0;
else if(top > (ObjSmallimg.offsetHeight - ObjFloatBox.offsetHeight))
top = ObjSmallimg.offsetHeight - ObjFloatBox.offsetHeight;
ObjFloatBox.style.left = left + 'px';
ObjFloatBox.style.top = top + 'px';
var pecentX = left / (ObjSmallimg.offsetWidth - ObjFloatBox.offsetWidth);
var pecentY = top / (ObjSmallimg.offsetHeight - ObjFloatBox.offsetHeight);
```
举报