CSS: registerProperty() 靜態方法

Baseline 2024
新推出

自 ⁨2024 年 7 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在較舊的裝置或瀏覽器上使用。

CSS.registerProperty() 靜態方法用於註冊自定義屬性,從而實現屬性型別檢查、設定預設值以及控制屬性是否繼承其值。

註冊自定義屬性可以讓您告訴瀏覽器該自定義屬性應如何表現;允許哪些型別,自定義屬性是否繼承其值,以及自定義屬性的預設值是什麼。

語法

js
CSS.registerProperty(propertyDefinition)

引數

propertyDefinition

包含以下屬性的物件:

name

一個字串,表示正在定義的屬性的名稱。

syntax 可選

一個字串,表示定義的屬性的預期語法。預設為 "*"

inherits

一個布林值,定義定義的屬性是否應繼承(true)或不繼承(false)。預設為 false

initialValue 可選

一個字串,表示定義的屬性的初始值。

返回值

undefined.

異常

InvalidModificationError DOMException

給定的 name 已被註冊。

SyntaxError DOMException

給定的 name 不是有效的自定義屬性名稱(以兩個破折號開頭,例如 --foo)。

TypeError

未提供必需的 name 和/或 inherits 字典成員。

示例

以下示例將使用 registerProperty() 註冊一個自定義屬性 --my-color,將其型別設定為顏色,設定預設值,並使其不繼承其值。

js
window.CSS.registerProperty({
  name: "--my-color",
  syntax: "<color>",
  inherits: false,
  initialValue: "#c0ffee",
});

在此示例中,自定義屬性 --my-color 已使用 <color> 語法註冊。我們現在可以使用該屬性來在懸停或聚焦時為漸變設定動畫。請注意,使用註冊的屬性時,動畫可以正常工作,但使用未註冊的屬性時則不行!

css
.registered {
  --my-color: #c0ffee;
  background-image: linear-gradient(to right, white, var(--my-color));
  transition: --my-color 1s ease-in-out;
}

.registered:hover,
.registered:focus {
  --my-color: #b4d455;
}

.unregistered {
  --unregistered: #c0ffee;
  background-image: linear-gradient(to right, white, var(--unregistered));
  transition: --unregistered 1s ease-in-out;
}

.unregistered:hover,
.unregistered:focus {
  --unregistered: #b4d455;
}
button {
  font-size: 3vw;
}

我們可以將這些樣式新增到一些按鈕上

html
<button class="registered">Background Registered</button>
<button class="unregistered">Background Not Registered</button>

規範

規範
CSS 屬性和值 API Level 1
# the-registerproperty-function

瀏覽器相容性

另見