::placeholder

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

::placeholder CSS 偽元素表示 <input><textarea> 元素中的佔位符文字

試一試

input {
  margin-top: 0.5rem;
}

input::placeholder {
  font-weight: bold;
  opacity: 0.5;
  color: red;
}
<label for="first-name">Your phone number:</label><br />

<input
  id="first-name"
  type="tel"
  name="phone"
  minlength="9"
  maxlength="9"
  placeholder="It must be 9 digits" />

只有適用於 ::first-line 偽元素的 CSS 屬性子集才能在選擇器中使用 ::placeholder 的規則中使用。

注意:在大多數瀏覽器中,佔位符文字的預設外觀是半透明或淺灰色。

語法

css
::placeholder {
  /* ... */
}

無障礙

顏色對比度

對比度

佔位符文字通常採用較淺的顏色處理,以表明它是一種關於何種輸入有效的建議,而不是任何實際輸入。

重要的是要確保佔位符文字顏色與輸入背景之間的對比度足夠高,以便視力低下的人能夠閱讀它,同時還要確保佔位符文字和輸入文字顏色之間有足夠的差異,以避免使用者將佔位符誤認為已輸入資料。

顏色對比度是透過比較佔位符文字和輸入背景顏色值的亮度來確定的。為了滿足當前的Web 內容可訪問性指南 (WCAG),文字內容的比例要求為 4.5:1,對於標題等較大文字則為 3:1。大文字定義為 18.66px 及以上粗體或更大,或 24px 或更大。

可用性

具有足夠顏色對比度的佔位符文字可能會被解釋為已輸入內容。當用戶在 <input> 元素中輸入內容時,佔位符文字也會消失。這兩種情況都可能干擾表單成功完成,尤其是對於有認知障礙的人。

提供佔位符資訊的另一種方法是將其放在輸入框外部,靠近視覺,然後使用 aria-describedby 以程式設計方式將 <input> 與其提示關聯起來。

透過這種實現,即使在輸入欄位中輸入了資訊,提示內容仍然可用,並且當頁面載入時,輸入框看起來沒有預先存在的輸入。大多數螢幕閱讀技術將使用 aria-describedby 在宣佈輸入標籤文字後讀取提示,如果螢幕閱讀器使用者覺得額外的資訊不必要,他們可以將其靜音。

html
<label for="user-email">Your email address</label>
<span id="user-email-hint" class="input-hint">Example: jane@sample.com</span>
<input
  id="user-email"
  aria-describedby="user-email-hint"
  name="email"
  type="email" />

Windows 高對比度模式

Windows 高對比度模式下渲染時,佔位符文字將與使用者輸入的文字內容具有相同的樣式。這將使某些人難以區分哪些內容已輸入,哪些內容是佔位符文字。

標籤

佔位符不能替代 <label> 元素。如果沒有使用 forid 屬性的組合以程式設計方式與輸入關聯的標籤,輔助技術(如螢幕閱讀器)無法解析 <input> 元素。

示例

更改佔位符外觀

此示例展示了您可以對佔位符文字樣式進行的一些調整。

HTML

html
<input placeholder="Type here" />

CSS

css
input::placeholder {
  color: red;
  font-size: 1.2em;
  font-style: italic;
  opacity: 0.5;
}

結果

不透明文字

某些瀏覽器會使佔位符文字不那麼不透明。如果您想要完全不透明的文字,請明確設定 color 屬性值。可以使用 currentColor 值來使其與相應的輸入元素具有相同的顏色。

HTML

html
<input placeholder="Color set by browser" />
<input placeholder="Same color as input" class="explicit-color" />
<input placeholder="Semi-opaque text color" class="opacity-change" />

CSS

css
input {
  font-weight: bold;
  color: green;
}

.explicit-color::placeholder {
  /* use the same color as input element to avoid the browser set default color */
  color: currentColor;
}

.opacity-change::placeholder {
  /* less opaque text */
  color: color-mix(in srgb, currentColor 70%, transparent);
}

結果

注意:請注意,瀏覽器對佔位符文字使用不同的預設顏色。例如,Firefox 使用輸入元素的顏色和 54% 的不透明度,而 Chrome 使用 darkgray 顏色。如果希望在不同瀏覽器中保持一致的佔位符文字顏色,請明確設定 color

規範

規範
CSS 偽元素模組 Level 4
# placeholder-pseudo

瀏覽器相容性

另見