diff --git a/packages/devui-vue/devui/read-tip/src/read-tip-template.tsx b/packages/devui-vue/devui/read-tip/src/read-tip-template.tsx index ab725c8acbe0195eaab1793704ae4c684ebb7134..5da83d288953196d241a52524695252f7de3faf6 100644 --- a/packages/devui-vue/devui/read-tip/src/read-tip-template.tsx +++ b/packages/devui-vue/devui/read-tip/src/read-tip-template.tsx @@ -18,11 +18,25 @@ export default defineComponent({ } const temp = ref(null); + const deviation = (x: number) => { + let deviationConstant = x > 24 ? 0 : -(x / 2) + 2 + if (x <= 10) { + deviationConstant = -10 + } + + return deviationConstant + } onMounted(() => { const domBounding = document.querySelector(query).getBoundingClientRect(); - - const distance = 10; + const { width, height } = domBounding + const distance = 10; let positionTop = 0; + + // 当前元素如果小于24px 会对渲染模板进行偏移 以免小箭头对不准指向的当前元素 + const heightDeviation = deviation(height) + const widthDeviation = deviation(width) + + let positionLeft = 0; const targetDom = document.querySelector('.read-tip-container').getBoundingClientRect(); if (rule.appendToBody) { @@ -32,18 +46,18 @@ export default defineComponent({ switch (rule.position) { case 'top': styles.top = positionTop - targetDom.height - distance + 'px'; - styles.left = positionLeft + 'px'; + styles.left = positionLeft + widthDeviation + 'px'; break; case 'left': - styles.top = positionTop + 'px'; + styles.top = positionTop + heightDeviation + 'px'; styles.left = positionLeft - targetDom.width - distance + 'px'; break; case 'bottom': styles.top = positionTop + domBounding.height + distance + 'px' - styles.left = positionLeft + 'px'; + styles.left = positionLeft + widthDeviation + 'px'; break; case 'right': - styles.top = positionTop + 'px'; + styles.top = positionTop + heightDeviation + 'px'; styles.left = positionLeft + domBounding.width + distance + 'px'; break; } diff --git a/packages/devui-vue/docs/en-US/components/read-tip/index.md b/packages/devui-vue/docs/en-US/components/read-tip/index.md index 47d8b0af0ee3e3606ca5aaf47c509fbf3cef7f1a..a89cfe0e8ffeee2c380b223d1fc5eebd7031e2cf 100644 --- a/packages/devui-vue/docs/en-US/components/read-tip/index.md +++ b/packages/devui-vue/docs/en-US/components/read-tip/index.md @@ -316,9 +316,9 @@ d-read-tip parameters | Parameter | Parameter | Parameter | Parameter | Jump to Demo | Global Config | | -------------------- | ------------------ | ---- | ------------------------------- | ---------------------- | ---------- | -| readTipOptions | ReadTipOptions | -- | Required. Set readtip options. | [Basic Usage](#Basic Usage) | -- | -| readTipOptions.rules | ReadTipRules | -- | Option. Set the content of readtip | [Include Multiple Readtip](#Include Multiple Readtip) | -- | -| contentTemplate | `TemplateRef` | -- | Options. Using template to customize content | [Display Content with Template](#Display Content with Template) | -- | +| readTipOptions | ReadTipOptions | -- | Required. Set readtip options. | [Basic Usage](#basic-usage) | -- | +| readTipOptions.rules | ReadTipRules | -- | Option. Set the content of readtip | [Include Multiple Readtip](#include-multiple-readtip) | -- | +| contentTemplate | `TemplateRef` | -- | Options. Using template to customize content | [Display Content with Template](#display-content-with-template) | -- |