197 of 264 menu

Funkcija getComputedStyle

Funkcija getComputedStyle leidžia gauti bet kurios elemento CSS savybės reikšmę, net iš CSS failo.

Sintaksė

let objektas = getComputedStyle(elementas);

Detalės

Kaip tai veikia (dėmesio: ne taip, kaip mes tikimės): parametru funkcija priima elementą, o grąžina objektą, kuriame yra visos perduoto elemento CSS savybės. Padėkime šį objektą į kintamąjį style. Pavadinimas savavališkas, tai tik kintamasis - kaip sugalvosime, taip ir kreipsimės:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // style yra CSS savybės

Išveskime, pavyzdžiui, plotį. Tai daroma taip - style.width:

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

Norint išvesti, pavyzdžiui, kairįjį padding - darome taip - style.paddingLeft:

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

Šiame pavyzdyje išvesime visas mums įdomias CSS savybes mūsų elementui:

<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); // išves '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // išves '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // išves 'solid'

GetComputedStyle netikslumas

Kartais funkcija getComputedStyle veikia ne visai korektiškai su plotiu ir aukščiu. Tai susiję su tuo, kad padding ir sienelė išplečia bloką. Šiame pavyzdyje blokui nustatytas plotis 200px, taip pat sienelė ir border. Tikrasis bloko plotis 300px, bet getComputedStyle vis tiek išves 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); // išves '200px' console.log('height: ' + style.height); // išves '200px'

Tai yra: pasirodo, kad getComputedStyle ignoruoja bloko išplėtimą ir rodo jo matmenis taip, tarsi šio išplėtimo nebūtų. Bet tai dar ne viskas: taip pat turi reikšmės slinkties juostos buvimas ar nebuvimas - kai kurios naršyklės atima slinkties juostos plotį nuo pločio, apskaičiuoto per getComputedStyle, o kai kurios neatima. Apskritai čia visai ne kryžminė naršyklė ir geriau getComputedStyle pločio ir aukščio nustatymui nenaudoti, o naudotis metrikomis, kurias išnagrinėsime šiek tiek vėliau.

Apskaičiuotos reikšmės

Yra dar vienas niuansas: jei plotis nustatytas % - tai po getComputedStyle veikimo pamatysime jį px. Tai iš esmės mes gauname ne nustatytą plotį, o apskaičiuotą. Pažiūrėkite šiame pavyzdyje:

<div id="elem">text</div> #elem { width: 30%; /* plotis nustatytas % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // išves plotį px

Taip pat žiūrėkite

  • savybė cssText,
    kuri masiniu būdu nustato CSS stilius
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti