老師這段代碼還是有點小BUG啊,為什么在IE中當(dāng)鼠標(biāo)懸浮到小圖片所在范圍邊框時,放大鏡就會出了小圖片的范圍跑到外面去了,這是為什么啊? 課程下載的源代碼也是這樣。

哎呦喂裸奔
2014-09-13
3 回答
舉報
0/150
提交
取消
2017-07-17
最終找到了解決方法:
問題的原因:由于demo的盒子比img要大兩個像素的邊框,smallbox的盒子比demo的盒子又大兩個像素的邊框,所以會出現(xiàn)超出邊框的情況。
解決方法:將在計算中用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);
```
2017-07-17
然后就發(fā)現(xiàn)我回答錯了?。。。?!把border去掉之后還是有BUG!
2017-07-17
原因是smallbox長度多了兩像素是floatbox的邊框長度,但是我不知道怎么修改才能解決這個BUG