課程
/前端開發
/JavaScript
/用JS實現放大鏡特效
老師這段代碼還是有點小BUG啊,為什么在IE中當鼠標懸浮到小圖片所在范圍邊框時,放大鏡就會出了小圖片的范圍跑到外面去了,這是為什么?。?nbsp; 課程下載的源代碼也是這樣。
2014-09-13
源自:用JS實現放大鏡特效 4-1
正在回答
最終找到了解決方法:
問題的原因:由于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);
ErogenousMonstar
然后就發現我回答錯了?。。。?!把border去掉之后還是有BUG!
原因是smallbox長度多了兩像素是floatbox的邊框長度,但是我不知道怎么修改才能解決這個BUG
舉報
讓圖片看起來更美觀,同時課程中詳細介紹了JavaScript相關的知識點
2 回答放大鏡效果通過scroll來實現可以嗎?
1 回答js和jquery的關系是什么,前端的知識好亂
1 回答mark層有什么作用呢 為什么用?
1 回答公式講的復雜了吧
1 回答有問題 遮罩層 閃動
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-07-17
最終找到了解決方法:
問題的原因:由于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);
```
2017-07-17
然后就發現我回答錯了?。。。?!把border去掉之后還是有BUG!
2017-07-17
原因是smallbox長度多了兩像素是floatbox的邊框長度,但是我不知道怎么修改才能解決這個BUG