/** 除法 */
export const division = (num1, num2) => {
let t1 = 0
let t2 = 0
try {
t1 = num1.toString().split('.')[1].length
} catch (e) {
/* empty */
}
try {
t2 = num2.toString().split('.')[1].length
} catch (e) {
/* empty */
}
const n1 = Number(num1.toString().replace('.', ''))
const n2 = Number(num2.toString().replace('.', ''))
return (n1 / n2) * Math.pow(10, t2 - t1)
}
export const getBoundingClientRect = element => {
if (!element || !element.getBoundingClientRect) {
return 0
}
return element.getBoundingClientRect()
}
/**
* 获取当前元素的left、top偏移
* left:元素最左侧距离文档左侧的距离
* top:元素最顶端距离文档顶端的距离
* right:元素最右侧距离文档右侧的距离
* bottom:元素最底端距离文档底端的距离
* rightIncludeBody:元素最左侧距离文档右侧的距离
* bottomIncludeBody:元素最底端距离文档最底部的距离
*/
export const getViewportOffset = element => {
const doc = document.documentElement
const docScrollLeft = doc.scrollLeft
const docScrollTop = doc.scrollTop
const docClientLeft = doc.clientLeft
const docClientTop = doc.clientTop
const pageXOffset = window.pageXOffset
const pageYOffset = window.pageYOffset
const box = getBoundingClientRect(element)
const { left: retLeft, top: rectTop, width: rectWidth, height: rectHeight } = box
const scrollLeft = (pageXOffset || docScrollLeft) - (docClientLeft || 0)
const scrollTop = (pageYOffset || docScrollTop) - (docClientTop || 0)
const offsetLeft = retLeft + pageXOffset
const offsetTop = rectTop + pageYOffset
const left = offsetLeft - scrollLeft
const top = offsetTop - scrollTop
const clientWidth = window.document.documentElement.clientWidth
const clientHeight = window.document.documentElement.clientHeight
return {
left: left,
top: top,
right: clientWidth - rectWidth - left,
bottom: clientHeight - rectHeight - top,
rightIncludeBody: clientWidth - left,
bottomIncludeBody: clientHeight - top,
}
}