help tips 标准化
This commit is contained in:
@@ -4,60 +4,6 @@ window.addEventListener('load', ()=>{
|
||||
editLesson(window.material.material_id, window.chapter.chapter_name, window.lesson.lesson_name);
|
||||
});
|
||||
|
||||
// 在页面里复用一个全局 tooltip 节点
|
||||
let __globalTooltip;
|
||||
function ensureTooltip() {
|
||||
if (!__globalTooltip) {
|
||||
__globalTooltip = document.createElement('div');
|
||||
__globalTooltip.className = 'tooltip-portal';
|
||||
document.body.appendChild(__globalTooltip);
|
||||
}
|
||||
return __globalTooltip;
|
||||
}
|
||||
|
||||
// 绑定到任意图标:移入→显示;移动→跟随;移出→隐藏
|
||||
function attachImmediateTooltip(anchorEl, text) {
|
||||
const tip = ensureTooltip();
|
||||
let shown = false;
|
||||
|
||||
function show(e) {
|
||||
tip.textContent = text;
|
||||
tip.style.display = 'block';
|
||||
tip.style.opacity = '1';
|
||||
position(e);
|
||||
shown = true;
|
||||
}
|
||||
function position(e) {
|
||||
// 以鼠标位置为准(也可用 anchorEl.getBoundingClientRect())
|
||||
const padding = 8;
|
||||
const tipRect = tip.getBoundingClientRect();
|
||||
let x = e.clientX + 12;
|
||||
let y = e.clientY - tipRect.height - 12;
|
||||
|
||||
// 简易防出界
|
||||
const vw = window.innerWidth, vh = window.innerHeight;
|
||||
if (x + tipRect.width + padding > vw) x = vw - tipRect.width - padding;
|
||||
if (y < padding) y = e.clientY + 16; // 放到下面
|
||||
|
||||
tip.style.left = `${x}px`;
|
||||
tip.style.top = `${y}px`;
|
||||
}
|
||||
function hide() {
|
||||
tip.style.opacity = '0';
|
||||
// 用小延迟避免闪烁
|
||||
setTimeout(() => { if (!shown) return; tip.style.display = 'none'; }, 100);
|
||||
shown = false;
|
||||
}
|
||||
|
||||
anchorEl.addEventListener('mouseenter', show);
|
||||
anchorEl.addEventListener('mousemove', position);
|
||||
anchorEl.addEventListener('mouseleave', hide);
|
||||
}
|
||||
|
||||
// 你的 renderOutline 里调用:
|
||||
// if (outline.theme) addThemeWithHelp(tree, outline.theme);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -196,6 +142,7 @@ function parseHeadings(mdText) {
|
||||
help.className = 'help-icon';
|
||||
help.textContent = ' ?';
|
||||
li.appendChild(help);
|
||||
|
||||
// 新增:铅笔编辑按钮
|
||||
const editBtn = createEditButton(() => {
|
||||
openTitleEditor({
|
||||
|
||||
Reference in New Issue
Block a user