getBoundingClientRect() 用于获取元素相对于浏览器饰扣的位置,这个API早已经是W3C标准兼容性不用担心,不过在IE下有些许的区别
{ top: '元素顶部相对于视口顶部的距离', bottom: '元素底部相对于视口底部的距离', left: '元素左边相对于视口左边的距离', right: '元素右边相对于视口左边的距离', height: '元素高度', '元素宽度' } // IE兼容性写法 function getClientReat(client) { const { top, bottom, left, right, height, width } = client.getBoundingClientRect() return { top, bottom, left, right, height: height || right - left, width || bottom - top
} }
兼容性参见 https://caniuse.com/#search=getBoundingClientRect
MDN: https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect