197 of 264 menu

La Funzione getComputedStyle

La funzione getComputedStyle permette di ottenere il valore di qualsiasi proprietà CSS di un elemento, anche dal file CSS.

Sintassi

let oggetto = getComputedStyle(elemento);

Dettagli

Come funziona (attenzione: non come ci aspettiamo): come parametro la funzione accetta un elemento, e restituisce un oggetto, che contiene tutte le proprietà CSS dell'elemento passato. Mettiamo questo oggetto in una variabile style. Il nome è arbitrario, è semplicemente una variabile - come la chiamiamo, così ci riferiremo ad essa:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // in style ci sono le proprietà CSS

Visualizziamo, ad esempio, la larghezza. Si fa così - style.width:

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

Per visualizzare, ad esempio, il padding sinistro - facciamo così - style.paddingLeft:

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

Nel prossimo esempio visualizzeremo tutte le proprietà CSS che ci interessano per il nostro elemento:

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

Imprecisione di getComputedStyle

A volte la funzione getComputedStyle funziona non del tutto correttamente con larghezza e altezza. Ciò è dovuto al fatto che padding e bordo espandono il blocco. Nel prossimo esempio al blocco è stata assegnata una larghezza di 200px, così come un bordo e border. La larghezza reale del blocco è 300px, ma getComputedStyle visualizzerà comunque 200px:

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

Ovvero: risulta che getComputedStyle ignora l'espansione del blocco e mostra le sue dimensioni come se questa espansione non ci fosse. Ma non è tutto: ha importanza anche la presenza o assenza della barra di scorrimento - alcuni browser sottraggono la larghezza della barra di scorrimento dalla larghezza calcolata tramite getComputedStyle, mentre altri non la sottraggono. In breve, qui in generale tutto non è cross-browser ed è meglio non usare getComputedStyle per determinare larghezza e altezza, ma usare le metriche, che studieremo un po' più avanti.

Valori Calcolati

C'è un'altra sfumatura: se la larghezza è impostata in % - dopo il lavoro di getComputedStyle la vedremo in px. Ovvero in sostanza non otteniamo la larghezza impostata, ma quella calcolata. Guardate il prossimo esempio:

<div id="elem">text</div> #elem { width: 30%; /* larghezza impostata in % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // visualizzerà la larghezza in px

Vedi Anche

  • la proprietà cssText,
    che imposta massivamente gli stili CSS
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta