Метод Window: getComputedStyle()
Базовая линия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод Window.getComputedStyle() возвращает объект, содержащий значения всех свойств CSS элемента после применения активных таблиц стилей и разрешения любых базовых вычислений, которые могут содержаться в этих значениях.
Индивидуальные значения свойств CSS доступны через API, предоставляемые объектом, или по индексу с именами свойств CSS.
Синтаксис
getComputedStyle(element) getComputedStyle(element, pseudoElt)
Параметры
element-
Элемент, для которого необходимо получить вычисленный стиль.
pseudoEltНеобязательно-
Строка, определяющая псевдоэлемент для соответствия. Опускается (или
null) для реальных элементов.
Возвращаемое значение
Динамический CSSStyleDeclaration объект, который автоматически обновляется при изменении стилей элемента.
Исключения
TypeError-
Если переданный объект не является
Element, илиpseudoEltне является допустимым селектором псевдоэлемента или является::part()или::slotted().Примечание: Допустимый селектор псевдоэлемента относится к синтаксической корректности, например,
::unsupportedсчитается допустимым, даже если сам псевдоэлемент не поддерживается. Кроме того, последний стандарт W3 явным образом поддерживает только::beforeи::after, в то время как проект CSS WG не ограничивает это значение. Совместимость с браузерами может отличаться.
Примеры
В этом примере мы задаём стили элементу <p>, затем получаем эти стили с помощью getComputedStyle(), и выводим их в текстовое содержимое <p>.
HTML
<p>Hello</p>
CSS
p {
width: 400px;
margin: 0 auto;
padding: 20px;
font: 2rem/2 sans-serif;
text-align: center;
background: purple;
color: white;
}
JavaScript
const para = document.querySelector("p");
const compStyles = window.getComputedStyle(para);
para.textContent =
`My computed font-size is ${compStyles.getPropertyValue("font-size")},\n` +
`and my computed line-height is ${compStyles.getPropertyValue(
"line-height",
)}.`;
Результат
Описание
Возвращаемый объект имеет тот же тип CSSStyleDeclaration, что и объект, возвращаемый свойством style элемента. Однако эти два объекта предназначены для разных целей:
- Объект из
getComputedStyleявляется только для чтения и должен использоваться для проверки стилей элемента, включая те, что установлены элементом<style>или внешним стилем. - Объект
element.styleдолжен использоваться для установки стилей этого элемента или для проверки стилей, добавленных непосредственно в него средствами JavaScript или глобальным атрибутомstyle.
Первый аргумент должен быть Element. Объекты, не являющиеся элементами, например, узел Text, вызовут ошибку.
defaultView
Во многих примерах кода getComputedStyle используется из объекта document.defaultView. Почти во всех случаях это излишне, так как getComputedStyle также существует в объекте window. Вероятно, шаблон defaultView был результатом сочетания того, что люди не хотели писать спецификацию тестирования для window и создание API, пригодного для использования в Java.
Использование с псевдоэлементами
getComputedStyle может извлекать информацию о стиле из псевдоэлементов (таких как ::after, ::before, ::marker, ::line-marker — см. спецификацию псевдоэлементов).
<style>
h3::after {
content: " rocks!";
}
</style>
<h3>Generated content</h3>
<script>
const h3 = document.querySelector("h3");
const result = getComputedStyle(h3, ":after").content;
console.log("the generated content is: ", result); // returns ' rocks!'
</script>
Примечания
- Возвращаемый
CSSStyleDeclarationобъект содержит активные значения для имен свойств CSS в полной форме, а также для сокращённых имен. Например, возвращаемый объект содержит записи дляborder-bottom-widthв дополнение кborder-widthиborderсокращённым именам свойств. Вы можете запросить значения с полными именами, например,font-size, а также с сокращёнными именами, например,font. - Значения свойств CSS могут быть получены с помощью метода
getPropertyValue(propName)или по индексу в объекте, используя обозначение массива или точку, например,obj['z-index']илиobj.zIndex. - Значения, возвращаемые
getComputedStyle, являются разрешёнными значениями. Они обычно совпадают со значениями вычисленных свойств CSS 2.1, но для некоторых старых свойств, таких какwidth,height, илиpadding, они соответствуют значениям, используемым в вычислениях. В CSS 2.0 значения вычисленных свойств определялись как готовые к использованию окончательные значения свойств после каскадирования и наследования, но в CSS 2.1 они были переопределены как значения до макета, а значения используемых свойств — как значения после макета. Для свойств CSS 2.0getComputedStyleвозвращает старое значение вычисленных свойств, теперь называемые используемыми значениями. Пример различия между значениями до и после макета включает разрешение процентов дляwidthилиheight, так как они будут заменены их пиксельными эквивалентами только для используемых значений. - Возвращаемые значения иногда намеренно неточные. Чтобы избежать проблемы безопасности «CSS History Leak», браузеры могут лгать о вычисленных стилях для посещённых ссылок, возвращая значения, как будто пользователь никогда не посещал связанный URL. См. Подключение утечки истории CSS и Изменения, связанные с конфиденциальностью, которые появятся в CSS
:visitedдля примеров реализации этого. - Во время CSS-переходов
getComputedStyleвозвращает исходное значение свойства в Firefox, но конечное значение свойства в WebKit. - В Firefox свойства со значением
autoвозвращают используемое значение, а не значениеauto. Таким образом, если вы применяетеtop:autoиbottom:0к элементу сheight:30pxи содержащим блокомheight:100px, вычисленный стиль Firefox дляtopвернёт70px, так как 100 − 30 = 70. - По соображениям совместимости сериализованные значения цветов выражаются как
rgb()цвета, если значение альфа-канала равно точно1, иrgba()цвета в противном случае. В обоих случаях используется устаревшая синтаксис, с запятыми в качестве разделителей (например,rgb(255, 0, 0)).
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getComputedStyle |
1 | 12 | 1До версии 62 эта функция возвращалаnull при вызове на окне без представления (например, iframe с display: none; установленным). С версии 62 она возвращает объект CSSStyleDeclaration с length 0, содержащий пустые строки (ошибка 1467722; также см. ошибку 1471231 для дальнейших работ). |
7.2 | 3 | 18 | 4До версии 62 эта функция возвращалаnull при вызове на окне без представления (например, iframe с display: none; установленным). С версии 62 она возвращает объект CSSStyleDeclaration с length 0, содержащий пустые строки (ошибка 1467722; также см. ошибку 1471231 для дальнейших работ). |
10.1 | 1 | 1.0 | 4.4 |
pseudo_element_support |
11 | 12 | 3.5 | ≤15 | 5.1 | 18 | 4 | ≤14 | 5 | 1.0 | ≤37 |
См. также
© 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/Window/getComputedStyle