197 of 264 menu

Функция getComputedStyle

Функцията getComputedStyle позволява да получите стойността на всяко CSS свойство на елемент, дори от CSS файл.

Синтаксис

let обект = getComputedStyle(елемент);

Подробности

Как работи (внимание: не така, както очакваме): параметърът на функцията приема елемент, а връща обект, който съдържа в себе си всички CSS свойства на подадения елемент. Нека поставим този обект в променлива style. Името е произволно, това е просто променлива - както си измислим, така и ще се обръщаме:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // в style лежат CSS свойствата

Нека изведем, например, ширината. Това се прави така - style.width:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log(style.width);

За да изведем, например, левия padding - правим така - style.paddingLeft:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log(style.paddingLeft);

В следващия пример ще изведем всички интересуващи ни CSS свойства за нашия елемент:

<div id="elem">текст</div> #elem { width: 200px; height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('paddingLeft: ' + style.paddingLeft); // ще изведе '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // ще изведе '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // ще изведе 'solid'

Неточност на getComputedStyle

Понякога функцията getComputedStyle работи не съвсем коректно с ширина и височина. Това е свързано с факта, че padding и границата разширяват блока. В следващия пример на блока е зададена ширина 200px, както и граница и border. Реалната ширина на блока е 300px, но getComputedStyle все пак ще изведе 200px:

<div id="elem">текст</div> #elem { width: 200px; height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // ще изведе '200px' console.log('height: ' + style.height); // ще изведе '200px'

Тоест: получава се, че getComputedStyle игнорира разширяването на блока и показва неговите размери така, сякаш това разширяване не е имало. Но това не е всичко: има значение и наличието или отсъствието на лента за превъртане - някои браузъри приспадат ширината на лентата за превъртане от ширината, изчислена чрез getComputedStyle, а някои не приспадат. В общи линии тук като цяло всичко не е кръстосбраузърно и е по-добре getComputedStyle да не се използва за определяне на ширина и височина, а да се ползват метриките, които ще изучим малко по-надолу.

Изчислени стойности

Има още един нюанс: ако ширината е зададена в % - то след работата на getComputedStyle ще видим я в px. Тоест по същество ние получаваме не зададената ширина, а изчислената. Вижте в следващия пример:

<div id="elem">текст</div> #elem { width: 30%; /* ширината е зададена в % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // ще изведе ширината в px

Вижте също

  • свойството cssText,
    което масово задава CSS стилове
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне