diff --git a/src/config/i18n.js b/src/config/i18n.js
index 1d8c4f8..b74dfbe 100644
--- a/src/config/i18n.js
+++ b/src/config/i18n.js
@@ -710,12 +710,20 @@ export const I18N = {
en: `Open Translate Popup/Translate Selected Shortcut`,
},
tranbtn_offset_x: {
- zh: `翻译按钮偏移X(0-100)`,
- en: `Translate Button Offset X (0-100)`,
+ zh: `翻译按钮偏移X(±200)`,
+ en: `Translate Button Offset X (±200)`,
},
tranbtn_offset_y: {
- zh: `翻译按钮偏移Y(0-100)`,
- en: `Translate Button Offset Y (0-100)`,
+ zh: `翻译按钮偏移Y(±200)`,
+ en: `Translate Button Offset Y (±200)`,
+ },
+ tranbox_offset_x: {
+ zh: `翻译框偏移X(±200)`,
+ en: `Translate Box Offset X (±200)`,
+ },
+ tranbox_offset_y: {
+ zh: `翻译框偏移Y(±200)`,
+ en: `Translate Box Offset Y (±200)`,
},
translated_text: {
zh: `译文`,
diff --git a/src/config/index.js b/src/config/index.js
index 405a77b..3339936 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -430,6 +430,8 @@ export const DEFAULT_TRANBOX_SETTING = {
tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT,
btnOffsetX: 10,
btnOffsetY: 10,
+ boxOffsetX: 0,
+ boxOffsetY: 10,
hideTranBtn: false, // 是否隐藏翻译按钮
hideClickAway: false, // 是否点击外部关闭弹窗
simpleStyle: false, // 是否简洁界面
diff --git a/src/views/Options/Tranbox.js b/src/views/Options/Tranbox.js
index f627b40..f173d1d 100644
--- a/src/views/Options/Tranbox.js
+++ b/src/views/Options/Tranbox.js
@@ -27,10 +27,10 @@ export default function Tranbox() {
let { name, value } = e.target;
switch (name) {
case "btnOffsetX":
- value = limitNumber(value, 0, 100);
- break;
case "btnOffsetY":
- value = limitNumber(value, 0, 100);
+ case "boxOffsetX":
+ case "boxOffsetY":
+ value = limitNumber(value, -200, 200);
break;
default:
}
@@ -55,6 +55,8 @@ export default function Tranbox() {
tranboxShortcut,
btnOffsetX,
btnOffsetY,
+ boxOffsetX = 0,
+ boxOffsetY = 10,
hideTranBtn = false,
hideClickAway = false,
simpleStyle = false,
@@ -159,6 +161,24 @@ export default function Tranbox() {
onChange={handleChange}
/>
+
+
+
+
{
if (isMobile) {
@@ -114,9 +120,11 @@ export default function Slection({
const rect = selection?.getRangeAt(0)?.getBoundingClientRect();
if (rect && followSelection) {
+ const x = (rect.left + rect.right) / 2 + boxOffsetX;
+ const y = rect.bottom + boxOffsetY;
setBoxPosition({
- x: limitNumber(rect.right, 0, window.innerWidth - 300),
- y: limitNumber(rect.bottom, 0, window.innerHeight - 200),
+ x: limitNumber(x, 0, window.innerWidth - 300),
+ y: limitNumber(y, 0, window.innerHeight - 200),
});
}
@@ -139,7 +147,14 @@ export default function Slection({
handleMouseup
);
};
- }, [hideTranBtn, triggerMode, followSelection, handleTrigger]);
+ }, [
+ hideTranBtn,
+ triggerMode,
+ followSelection,
+ boxOffsetX,
+ boxOffsetY,
+ handleTrigger,
+ ]);
useEffect(() => {
if (isExt) {
@@ -225,7 +240,8 @@ export default function Slection({
{showBtn && (
{
e.stopPropagation();