括号内是测试浏览器版本,0表示测出的数据只有0(小弟不才不知道何时能非0),实际上在某些复杂布局里会有更意外的情况,暂时无力研究
offsetParent:
- position为fixed元素是没有offsetParent,但firefox统一返回body。
- position为absolute, relative的元素的offsetParent总是body。
- position为static的元素的offsetParent则是先找最近的非static定位父元素,没有再找td,th,table元素,再没有找body,body为最顶层的offsetParent。
- IE7-是触发了hasLayout的最近的父元素作为offsetParent
- span strong i a b em 这几个行内元素 scrollWidth/scrollHeight、scrollLeft/scrollTop、clientLeft/clientTop、clientWidth/clientHeight都是0 (scrollWidth/scrollHeight在FF 和 IE 能显示正确数值) 但给他们加上 display:block;的时候,就能显示正常的值了。另外img、input、textearea和select是正常的。他们都是行内元素。 其他行内元素未测。
发现贴整个测试代码格式很难控制,于是想想还是贴到github吧,然后把链接贴上就行:https://github.com/yangkui/studyFrontEndStepByStep/blob/master/testOffset.html
我知道这里还有好多复杂情况没有搞定,欢迎各位同学指正或补充