Spec-Zone.ru › Web APIs

CSS: статический метод registerProperty()

Базовая версия 2024
Новое

С июля 2024 года данная функция работает на последних версиях устройств и браузеров. Возможны проблемы совместимости со старыми устройствами и браузерами.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Статический метод CSS.registerProperty() регистрирует пользовательские свойства, позволяя проверять тип свойства, устанавливать значения по умолчанию и определять наследование свойств.

Регистрация пользовательского свойства позволяет указать браузеру, как оно должно работать: какие типы допустимы, наследуется ли оно и каково его значение по умолчанию.

Синтаксис

CSS.registerProperty(propertyDefinition)

Параметры

propertyDefinition

Объект, содержащий следующие свойства:

name

Строка, представляющая имя определяемого свойства.

syntax Необязательно

Строка, представляющая ожидаемый синтаксис определяемого свойства. По умолчанию "*".

inherits

Булево значение, определяющее, должно ли определённое свойство наследоваться (true) или нет (false). По умолчанию false.

initialValue Необязательно

Строка, представляющая начальное значение определённого свойства.

Возвращаемое значение

undefined.

Исключения

InvalidModificationError DOMException

Указанное name уже зарегистрировано.

SyntaxError DOMException

Указанное name не является допустимым именем пользовательского свойства (начинается с двух тире, например, --foo).

TypeError

Не были предоставлены необходимые члены словаря name и/или inherits.

Примеры

Следующий пример регистрирует пользовательское свойство, --my-color, используя registerProperty(), как цвет, задаёт значение по умолчанию и не наследует это значение:

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

В этом примере пользовательское свойство --my-color зарегистрировано с синтаксисом <color>. Теперь его можно использовать для анимации градиента при наведении или фокусе. Обратите внимание, что с зарегистрированным свойством анимация работает, но не работает с незарегистрированным!

.registered {
  --my-color: #c0ffee;
  background-image: linear-gradient(to right, #fff, 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, #fff, var(--unregistered));
  transition: --unregistered 1s ease-in-out;
}

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

Можно добавить эти стили к кнопкам:

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

Спецификации

Спецификация
CSS Properties and Values API Level 1
# the-registerproperty-function

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
registerProperty_static 78 79 128 65 16.4 78 128 56 16.4 12.0 78

См. также

  • Использование API свойств и значений CSS
  • CSS
  • CSS.supports()
  • CSS.escape()
  • Производящие функции CSS
  • CSS @property

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CSS/registerProperty_static

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API