为什么第一个图片所属div的offsetLeft值为10?

ruirui_1996 ruirui_1996 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


要做一个鼠标滑到对应的图片,显示一个大图并随鼠标移动的效果
HTML代码:
<div id="box" class="box">
<img src="img/1.jpg" bigImg="img/11.jpg" class="img"/>
<img src="img/2.jpg" bigImg="img/22.jpg" class="img"/>
<img src="img/3.jpg" bigImg="img/33.jpg" class="img"/>
<img src="img/4.jpg" bigImg="img/44.jpg" class="img"/>
<div id="mark">
<img src="img/11.jpg" id="bigImg"/>
</div>
</div>


CSS代码:

body, div, ing {
margin: 0;
padding: 0;
}

img {
display: block;
border: none;
}

.box {
width: 450px;
margin: 20px auto;
position: relative;
}

.box img {
width: 100px;
border: 1px solid #777777;
float: left;
margin-left: 10px;
}

#mark {
position: absolute;
top: 0px;
left: 0;
width: 384px;
height: 216px;
border: 1px solid #5bc0de;
z-index: 10;
display: none;
}

#mark img {
border: none;
float: none;
margin-left: 0px;
width: 100%;
height: 100%;
}

JS代码:
var box = document.getElementById("box");
var imgs = document.getElementsByClassName("img");
var mark = document.getElementById("mark");
var bigImg = document.getElementById("bigImg");
for (var i = 0; i < imgs.length; i++) {
imgs[i].onmouseenter = function (e) {
e = e || window.event;
mark.style.display = "inline-block";
bigImg.src = this.getAttribute("bigImg");
mark.style.left = e.clientX - this.offsetLeft + 5 + "px";
mark.style.top = e.clientY - this.offsetTop + 5 + "px";
};
imgs[i].onmousemove = function (e) {
e = e || window.event;
if (mark) {
mark.style.left = e.clientX - this.offsetLeft + 5 + "px";
mark.style.top = e.clientY - this.offsetTop + 5 + "px";
}

};
imgs[i].onmouseleave = function (e) {
e = e || window.event;
if (mark) {
mark.style.display = "none";
}

};
}


完成的效果就是偏差非常大,后来发现是 this.offsetLeft的问题, 第一个this.offsetLeft为10,并不是到边缘的数值,求解答,谢谢。
...全文
评论 4
收藏 已收藏
分享
返回顶部
ruirui_1996
JavaScript 87,983 成员 224,680 内容