
網站上有些專有名詞,客人不一定懂,例如「SSL 憑證」「網域」「RWD」。一個一個寫括號解釋,文章會很長;不解釋,客人又看不懂。
這時候可以用工具提示(tooltip):滑鼠移到詞上,旁邊跳出一個小框寫說明。這篇用 HTML 的 data 屬性加上 CSS 做,不用寫 JavaScript,電腦、手機、鍵盤都能用。
HTML
HTML
<p>網站要有 <span class="tip" tabindex="0" data-tip="讓網址列出現鎖頭、資料加密傳送的憑證">SSL 憑證</span>,瀏覽器才不會顯示「不安全」。</p>- 說明文字寫在
data-tip屬性裡。data-開頭的屬性可以自己取名字,用來放額外的資料。 tabindex="0"讓這個詞可以用鍵盤的 Tab 鍵移過去,不用滑鼠的人也看得到說明。
CSS
CSS
.tip {
position: relative;
border-bottom: 1px dotted #1e8a8a;
color: #1e8a8a;
cursor: help;
}
/* 說明框 */
.tip::after {
content: attr(data-tip);
position: absolute;
left: 50%;
bottom: calc(100% + 10px);
transform: translateX(-50%);
width: max-content;
max-width: 260px;
padding: 8px 12px;
border-radius: 6px;
background: #223;
color: #fff;
font-size: 14px;
line-height: 1.5;
text-align: left;
white-space: pre-line;
opacity: 0;
visibility: hidden;
transition: opacity .15s;
pointer-events: none;
z-index: 10;
}
/* 說明框下面的小三角形 */
.tip::before {
content: "";
position: absolute;
left: 50%;
bottom: calc(100% - 2px);
transform: translateX(-50%);
border: 6px solid transparent;
border-top-color: #223;
opacity: 0;
visibility: hidden;
transition: opacity .15s;
pointer-events: none;
}
/* 滑鼠滑過、或用鍵盤移到這個詞時顯示 */
.tip:hover::after, .tip:hover::before,
.tip:focus-visible::after, .tip:focus-visible::before {
opacity: 1;
visibility: visible;
}重點說明:
content: attr(data-tip):把 HTML 裡data-tip的文字拿來當說明框的內容。這是整個做法的關鍵。::after是說明框,::before是小三角形:三角形用一個沒有寬高、只有邊框的元素畫出來,只讓上邊框有顏色。width: max-content加上max-width: 260px:字少的時候框跟著縮小,字多的時候最寬 260 像素,再自動換行。white-space: pre-line:data-tip裡有換行,說明框就跟著換行,可以做多行的提示。pointer-events: none:說明框不會擋住滑鼠,滑過去不會一閃一閃。:focus-visible:用鍵盤 Tab 移過來時也會顯示。
多行的提示
在 data-tip 裡直接換行就好:
HTML
<span class="tip" tabindex="0" data-tip="第一行:網站速度
第二行:安全更新
第三行:備份狀態">半年健檢報告</span>如果編輯器會把換行吃掉,可以改寫成 ,效果一樣。
靠左、靠右、往下彈出
說明框預設在詞的正上方、置中。詞如果在畫面最左邊或最右邊,說明框會超出螢幕,在手機上還會讓整個頁面可以左右滑動。加上這幾個 class 解決:
CSS
/* 靠左對齊:放在畫面左邊的詞 */
.tip.tip-left::after { left: 0; transform: none; }
.tip.tip-left::before { left: 12px; transform: none; }
/* 靠右對齊:放在畫面右邊的詞 */
.tip.tip-right::after { left: auto; right: 0; transform: none; }
.tip.tip-right::before { left: auto; right: 12px; transform: none; }
/* 往下彈出:放在頁面最上面的詞 */
.tip.tip-bottom::after { bottom: auto; top: calc(100% + 10px); }
.tip.tip-bottom::before { bottom: auto; top: calc(100% - 2px); border-top-color: transparent; border-bottom-color: #223; }使用時寫成 class="tip tip-right"。
實際測試的結果
在 Chrome 測了電腦和手機:
- 電腦,滑鼠滑過:說明框出現在詞的正上方,小三角形對準詞的中間;滑鼠移開就消失。
- 長的說明:寬度停在 260 像素,自動換成兩行。
- 多行提示:三行分開顯示。
- 鍵盤:按 Tab 移到第一個詞,說明框出現;再按一次 Tab 移到下一個詞,前一個消失、新的出現。
- 電腦,用滑鼠點一下再移開:說明框會消失,不會一直卡在畫面上。
- 手機 390 寬,點一下詞:說明框出現;點頁面其他地方就消失。
- 手機,畫面最右邊的詞:沒加
tip-right時,說明框超出螢幕,整個頁面寬度從 390 變成 465 像素,可以左右滑動;加上tip-right之後,說明框靠右對齊,完整留在螢幕裡。
什麼時候不要用
- 重要的資訊不要只放在提示裡:價格、注意事項、退貨規定,要直接寫在頁面上。提示是補充說明。
- 不要放連結、按鈕:說明框是用 CSS 畫出來的文字,裡面不能點。需要互動的內容,請用可以展開的區塊。
- 一頁不要放太多:每個詞都有虛線,讀起來會很累。
放進 WordPress
- CSS:區塊佈景主題放在「外觀 → 編輯器 → 樣式 → 額外 CSS」;傳統佈景主題放在「外觀 → 自訂 → 額外 CSS」,或子佈景主題的 style.css。
- HTML:在文章裡加一個「自訂 HTML」區塊,或把段落切換成「以 HTML 格式編輯」,把要加提示的詞改成上面的 span。
延伸閱讀
- CSS cursor 滑鼠游標樣式整理:pointer、not-allowed 等常用值與自訂游標寫法
- 點連結出現外框怎麼拿掉?用 :focus-visible 取代 outline: none 的正確寫法
- CSS 動畫入門
讓客人看得懂,網站才有說服力。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站管家年費包含每年 12 次小修改,像這樣的小調整都可以交給我們,台北與全台客戶也歡迎免費諮詢。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。