以offsetLeft为例进行说明,在不同的浏览器中其值不同,且与父元素的position属性(relative,absolute,fixed)有关。现分以下几种情况说明:(测试所用的浏览器版本为:Chrome68.0.3440.106,opera54.0,Firefox61.0.1和IE11.0)
offsetleft怎么办
在父元素均不设置position属性时,在Chrome,opera和IE浏览器中offsetLeft是元素边框外侧到浏览器窗口内侧的距离且body.offsetLeft=0,
在firefox浏览器中offsetLeft是元素边框外侧到body内侧的距离body.offsetLeft=-边框宽度
当父元素设置position元素时又分为两种情况,
如果父元素时body且body设置了position属性,在Chrome和opera浏览器中offsetLeft是元素边框外侧到body边框外侧的距离,
在IE和fireForx浏览器中offsetLeft是元素边框外侧到body边框内侧的距离
如果父元素不是body元素且设置了position属性时,offsetLeft为元素边框外侧到父元素边框内侧的距离(各浏览器情况一致)。
offsetleft实例
下面通过实例进行说明(Chrome浏览器):
Html结构为
Css样式:将body,container,box,content的margin和padding都设置为10px,container长宽为300px,box长宽为100px,content长宽为50px,都设置宽度为5px的边框。具体查看下方源代码。效果如下图
container.offsetWidth=container的width+padding+边框宽度=300+2×10+2×5=330
console.log(container.offsetWidth)输出结果为
总之,offsetleft给大家简单的介绍了一些,希望大家多看看。