197 of 264 menu

Функción getComputedStyle

La función getComputedStyle permite obtener el valor de cualquier propiedad CSS de un elemento, incluso desde un archivo CSS.

Sintaxis

let objeto = getComputedStyle(elemento);

Detalles

Cómo funciona (atención: no como esperamos): la función toma como parámetro el elemento, y devuelve un objeto que contiene todas las propiedades CSS del elemento pasado. Pongamos este objeto en una variable style. El nombre es arbitrario, es solo una variable - como la ideemos, así la usaremos:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // en style están las propiedades CSS

Mostremos, por ejemplo, el ancho. Se hace así - style.width:

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

Para mostrar, por ejemplo, el padding izquierdo - lo hacemos así - style.paddingLeft:

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

En el siguiente ejemplo mostraremos todas las propiedades CSS que nos interesan para nuestro 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); // mostrará '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // mostrará '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // mostrará 'solid'

Imprecisión de getComputedStyle

A veces la función getComputedStyle funciona no del todo correctamente con el ancho y la altura. Esto se debe a que el padding y el borde expanden el bloque. En el siguiente ejemplo, al bloque se le da un ancho de 200px, así como un borde y border. El ancho real del bloque es de 300px, pero getComputedStyle igual mostrará 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); // mostrará '200px' console.log('height: ' + style.height); // mostrará '200px'

Es decir: resulta que getComputedStyle ignora la expansión del bloque y muestra sus dimensiones como si esa expansión no existiera. Pero eso no es todo: también importa la presencia o ausencia de la barra de desplazamiento - algunos navegadores restan el ancho de la barra de desplazamiento del ancho calculado mediante getComputedStyle, y otros no lo restan. En fin, aquí en general todo no es cross-navegador y es mejor no usar getComputedStyle para determinar el ancho y la altura, y usar las métricas que estudiaremos un poco más abajo.

Valores calculados

Hay otro matiz: si el ancho se establece en % - luego de trabajar getComputedStyle veremos este en px. Es decir, en esencia no obtenemos el ancho establecido, sino el calculado. Mire el siguiente ejemplo:

<div id="elem">texto</div> #elem { width: 30%; /* el ancho se establece en % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // mostrará el ancho en px

Véase también

  • la propiedad cssText,
    que establece masivamente estilos CSS
Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar