197 of 264 menu

Função getComputedStyle

A função getComputedStyle permite obter o valor de qualquer propriedade CSS de um elemento, mesmo do arquivo CSS.

Sintaxe

let objeto = getComputedStyle(elemento);

Detalhes

Como funciona (atenção: não é como esperamos): a função recebe como parâmetro o elemento, e retorna um objeto, que contém em si todas as propriedades CSS do elemento passado. Vamos colocar este objeto em uma variável style. O nome é arbitrário, é apenas uma variável - como criarmos, assim iremos acessar:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // em style estão as propriedades CSS

Vamos exibir, por exemplo, a largura. Isto é feito assim - style.width:

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

Para exibir, por exemplo, o padding esquerdo - fazemos assim - style.paddingLeft:

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

No próximo exemplo vamos exibir todas as propriedades CSS que nos interessam para o nosso elemento:

<div id="elem">texto</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); // exibirá '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // exibirá '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // exibirá 'solid'

Imprecisão do getComputedStyle

Às vezes a função getComputedStyle funciona não muito corretamente com largura e altura. Isto está relacionado ao fato de que padding e a borda expandem o bloco. No próximo exemplo, ao bloco foi definida uma largura de 200px, assim como borda e border. A largura real do bloco é 300px, mas getComputedStyle vai exibir de qualquer forma 200px:

<div id="elem">texto</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); // exibirá '200px' console.log('height: ' + style.height); // exibirá '200px'

Ou seja: acontece que getComputedStyle ignora a expansão do bloco e mostra seus tamanhos como se essa expansão não existisse. Mas isso ainda não é tudo: também importa a presença ou ausência da barra de rolagem - alguns navegadores subtraem a largura da barra de rolagem da largura calculada via getComputedStyle, e alguns não subtraem. Enfim, aqui geralmente tudo não é cross-browser e é melhor não usar getComputedStyle para determinar largura e altura, e sim usar as métricas que estudaremos um pouco abaixo.

Valores computados

Há mais uma nuance: se a largura for definida em % - então após o trabalho de getComputedStyle veremos ela em px. Ou seja, essencialmente não obtemos a largura definida, mas a computada. Veja no próximo exemplo:

<div id="elem">texto</div> #elem { width: 30%; /* largura definida em % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // exibirá a largura em px

Veja também

  • a propriedade cssText,
    que define estilos CSS em massa
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar