Skip to content

CSS 偽元素 ::placeholder:輸入欄位的提示文字樣式

CSS 偽元素 placeholder:輸入欄位的提示文字樣式

在相關文字欄位元素或選取器後面使用 ::,再接續 placeholder 即可選取到這個偽元素並進行佔位符的樣式設定。

以下案例便是利用 ::placeholder 將對象選取出來並進行樣式的改變。

可以設定的屬性

只有文字相關的屬性有效:

css
input::placeholder {
  color: #9ca3af;
  font-size: 0.9375rem;
  letter-spacing: 0.02em;
  opacity: 1;   /* 部分瀏覽器預設會降低透明度 */
}

與偽類搭配

:placeholder-shown 可以判斷欄位目前是不是空的,常用來做標籤浮動:

css
.field input:placeholder-shown + label {
  transform: translateY(1.5rem);
  font-size: 1rem;
}

小提醒

提示文字的顏色太淡會直接變成無障礙問題。另外,它 不能取代 欄位說明 <label>:使用者一開始輸入,提示就消失了。

常見問題

可以設定哪些屬性?

只有與文字相關的屬性有效,例如:顏色、字級、字重、字距與透明度。版面相關的屬性在這個偽元素上不會生效。

提示文字的顏色可以很淡嗎?

不建議。它與背景的對比度太低時會很難閱讀,也會在無障礙檢測中被判定為不合格。建議維持在可清楚辨識的程度。

可以用它取代欄位標籤嗎?

不行。使用者開始輸入後提示就消失了,螢幕閱讀器的支援也不一致。欄位名稱請一律用 <label>,提示文字只補充輸入範例。

要怎麼在有輸入時改變樣式?

搭配 :placeholder-shown 偽類,就能區分空白與已輸入兩種狀態,常用來做出標籤浮動的效果。

延伸閱讀