|
|
@ -95,42 +95,49 @@ const hide = () => { |
|
|
|
}; |
|
|
|
|
|
|
|
// 获取元素的绝对位置坐标(像对于浏览器视区左上角) |
|
|
|
const getElementViewPosition = (element) => { |
|
|
|
//计算x坐标 |
|
|
|
let actualLeft = element.offsetLeft; |
|
|
|
let xcurrent = element.offsetParent; |
|
|
|
while (xcurrent !== null) { |
|
|
|
actualLeft += xcurrent.offsetLeft + xcurrent.clientLeft; |
|
|
|
xcurrent = xcurrent.offsetParent; |
|
|
|
} |
|
|
|
let elementScrollLeft = document.documentElement.scrollLeft; |
|
|
|
if (document.compatMode == 'BackCompat') { |
|
|
|
elementScrollLeft = document.body.scrollLeft; |
|
|
|
} |
|
|
|
const left = actualLeft - elementScrollLeft; |
|
|
|
// const getElementViewPosition = (element) => { |
|
|
|
// //计算x坐标 |
|
|
|
// let actualLeft = element.offsetLeft; |
|
|
|
// let xcurrent = element.offsetParent; |
|
|
|
// while (xcurrent !== null) { |
|
|
|
// actualLeft += xcurrent.offsetLeft + xcurrent.clientLeft; |
|
|
|
// xcurrent = xcurrent.offsetParent; |
|
|
|
// } |
|
|
|
// let elementScrollLeft = document.documentElement.scrollLeft; |
|
|
|
// if (document.compatMode == 'BackCompat') { |
|
|
|
// elementScrollLeft = document.body.scrollLeft; |
|
|
|
// } |
|
|
|
// const left = actualLeft - elementScrollLeft; |
|
|
|
|
|
|
|
//计算y坐标 |
|
|
|
let actualTop = element.offsetTop; |
|
|
|
let ycurrent = element.offsetParent; |
|
|
|
while (ycurrent !== null) { |
|
|
|
actualTop += ycurrent.offsetTop + ycurrent.clientTop; |
|
|
|
ycurrent = ycurrent.offsetParent; |
|
|
|
} |
|
|
|
let elementScrollTop = document.documentElement.scrollTop; |
|
|
|
if (document.compatMode == 'BackCompat') { |
|
|
|
elementScrollTop = document.body.scrollTop; |
|
|
|
} |
|
|
|
var right = actualTop - elementScrollTop; |
|
|
|
//返回结果 |
|
|
|
return { x: left, y: right }; |
|
|
|
}; |
|
|
|
const getContentHeight = () => { |
|
|
|
// //计算y坐标 |
|
|
|
// let actualTop = element.offsetTop; |
|
|
|
// let ycurrent = element.offsetParent; |
|
|
|
// while (ycurrent !== null) { |
|
|
|
// actualTop += ycurrent.offsetTop + ycurrent.clientTop; |
|
|
|
// ycurrent = ycurrent.offsetParent; |
|
|
|
// } |
|
|
|
// let elementScrollTop = document.documentElement.scrollTop; |
|
|
|
// if (document.compatMode == 'BackCompat') { |
|
|
|
// elementScrollTop = document.body.scrollTop; |
|
|
|
// } |
|
|
|
// var right = actualTop - elementScrollTop; |
|
|
|
// //返回结果 |
|
|
|
// return { x: left, y: right }; |
|
|
|
// }; |
|
|
|
|
|
|
|
// const getContentHeight = () => { |
|
|
|
// if (dialogContentDivRef?.value) { |
|
|
|
// console.info('dialogContentDivRef.value', dialogContentDivRef.value.offsetHeight); |
|
|
|
// return { |
|
|
|
// height: dialogContentDivRef.value.offsetHeight, |
|
|
|
// y: getElementViewPosition(dialogContentDivRef.value).y, |
|
|
|
// }; |
|
|
|
// } |
|
|
|
// return null; |
|
|
|
// }; |
|
|
|
const getContent = () => { |
|
|
|
if (dialogContentDivRef?.value) { |
|
|
|
console.info('dialogContentDivRef.value', dialogContentDivRef.value.getBoundingClientRect().height); |
|
|
|
return { |
|
|
|
height: dialogContentDivRef.value.offsetHeight, |
|
|
|
y: getElementViewPosition(dialogContentDivRef.value).y, |
|
|
|
}; |
|
|
|
return dialogContentDivRef.value; |
|
|
|
} |
|
|
|
return null; |
|
|
|
}; |
|
|
@ -138,6 +145,6 @@ const getContentHeight = () => { |
|
|
|
defineExpose({ |
|
|
|
show, |
|
|
|
hide, |
|
|
|
getContentHeight, |
|
|
|
getContent, |
|
|
|
}); |
|
|
|
</script> |
|
|
|