HTML 元素的 title 屬性樣式(字體、顏色、背景、邊框等)完全由瀏覽器內部渲染引擎控制,無法通過 CSS 或 JavaScript 直接修改。 這是由 HTML 標準決定的:title 僅用於提供輔助提示信息,而非展示組件。
title 屬性的設計初衷是提供無障礙訪問輔助(如屏幕閱讀器)和簡單的鼠標懸停提示。color 屬性:改變 color 值會改變顏色,是因為 color 本身就是樣式屬性;而 title 只是數據容器。<a id="baidu_link" href="https://www.baidu.com" title="百度">百度</a>
<script>
function setTitle() {
document.getElementById("baidu_link").title = "跳轉到百度";
}
</script>
若需美觀、可交互、支持 HTML 內容的提示框,請放棄原生 title,改用 JavaScript 實現:
data-tip 屬性 + ::before/::after 偽元素,配合 :hover 顯示。mouseenter/mouseleave 事件,動態創建/銷毀定位的 <div> 元素,支持豐富內容、箭頭指向、動畫效果。<style>
.custom-tooltip {
position: absolute; background: #333; color: #fff; padding: 5px 10px;
border-radius: 4px; font-size: 12px; pointer-events: none; z-index: 9999;
opacity: 0; transition: opacity 0.2s; white-space: nowrap;
}
.custom-tooltip::after {
content: ''; position: absolute; top: 100%; left: 50%; margin-left: -5px;
border-width: 5px; border-style: solid; border-color: #333 transparent transparent transparent;
}
</style>
<a href="#" class="has-tip" data-tip="這是自定義提示內容<br>支持 HTML">鼠標懸停我</a>
<script>
document.querySelectorAll('.has-tip').forEach(el => {
let tip = document.createElement('div');
tip.className = 'custom-tooltip';
tip.innerHTML = el.dataset.tip;
document.body.appendChild(tip);
el.addEventListener('mouseenter', () => {
const rect = el.getBoundingClientRect();
tip.style.left = rect.left + window.scrollX + rect.width/2 - tip.offsetWidth/2 + 'px';
tip.style.top = rect.top + window.scrollY - tip.offsetHeight - 8 + 'px';
tip.style.opacity = 1;
});
el.addEventListener('mouseleave', () => tip.style.opacity = 0);
});
</script>