直接在標簽上添加 title 屬性,瀏覽器自動處理顯示/隱藏、定位。
<p title="給段落文字提示">文字內容</p>
<a href="#" title="給鏈接文字提示">鏈接文字</a>
<img src="image.gif" alt="給圖片提示" title="圖片標題">
核心邏輯:預定義隱藏的提示容器,監聽目標元素的鼠標事件,動態計算位置並顯示/隱藏。
<div id="tooltip"></div>,CSS 設置 position:absolute; display:none; z-index:9999;。onmouseover(或 mouseenter)和 onmouseout(或 mouseleave)。mouseover 時,將提示內容注入容器,根據觸發元素 getBoundingClientRect() 計算坐標,設置容器 left/top,最後 display:block。mouseout 時 display:none。<style>
#tooltip { position:absolute; background:#333; color:#fff; padding:8px 12px; border-radius:4px; font-size:13px; display:none; pointer-events:none; box-shadow:0 2px 6px rgba(0,0,0,0.2); }
#tooltip::after { content:''; position:absolute; top:100%; left:50%; margin-left:-6px; border:6px solid transparent; border-top-color:#333; }
</style>
<div id="tooltip"></div>
<script>
const tooltip = document.getElementById('tooltip');
document.querySelectorAll('[data-tip]').forEach(el => {
el.addEventListener('mouseenter', e => {
tooltip.innerHTML = el.dataset.tip;
const rect = el.getBoundingClientRect();
tooltip.style.left = rect.left + window.scrollX + rect.width/2 - tooltip.offsetWidth/2 + 'px';
tooltip.style.top = rect.top + window.scrollY - tooltip.offsetHeight - 8 + 'px';
tooltip.style.display = 'block';
});
el.addEventListener('mouseleave', () => tooltip.style.display = 'none');
});
</script>
<!-- 使用示例 -->
<button data-tip="點擊提交表單<br><b>快捷鍵: Ctrl+Enter</b>">提交</button>
title。