记得第一次遇到offsetParent的时候,是使用offset_left来计算到左边边界的距离,那个时候,两个元素计算到的距离差异太大,于是我就打印他们的offsetParent来测试,到看到他们的offsetParent的时候我是想破乳头也想不出为什么会这样,而网上的帖子也只是说了offsetParent的规律,我看了后也还不知道为什么会这样。
后面我知道定位的元素,会有一个相对偏移的父类,于是我就把元素的父类分成文档父类和相对父类(名称自创)这两种。
后面我再遇到关于z-index的问题,于是作此总结:
offsetParent不仅仅是决定元素的的在x轴和y轴的距离(相对参考点),而是决定元素的空间位置,即影响着元素的x,y,z轴的位置。因为z-index也是由父类的z-index决定的,当两个元素在x和y轴的位置发生重叠的时候,如何显示要判断在z轴上的位置,而这个z轴上的位置是先由offsetParent决定的。先比较,offsetParent,如果不分胜负的话在往下比(而offsetParent的z-index的比较也遵循以上原则)。
所以offsetParent是元素的空间相对父类。而其他的样式,比如继承的;事件的传递等。。。。都是和parentNode(ie下parentElement)挂钩的。学艺不精,若有错误,请赐教。