Kazi getComputedStyle
Kazi getComputedStyle inaruhusu
kupata thamani ya sifa yoyote ya CSS ya kipengele,
hata kutoka kwa faili ya CSS.
Sintaksia
let kitu = getComputedStyle(kipengele);
Maelezo zaidi
Inavyofanya kazi (makini: sio kama tulivyo
tarajia): kigezo cha kazi kinakubali kipengele,
na kurudisha kitu, ambacho kina sifa zote
za CSS za kipengele kilichopitishwa.
Wacha tuweke kitu hiki kwenye kutofautisha
style. Jina ni la kiholela, hii
ni kutofautisha tu - jinsi tutakavyoibua, ndivyo
tutakavyojihusisha nayo:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem); // kwenye style kuna sifa za CSS
Wacha tutoe, kwa mfano, upana. Hii inafanywa
hivi - style.width:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log(style.width);
Ili kutoa, kwa mfano, padding wa kushoto
- tunafanya hivi - style.paddingLeft:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log(style.paddingLeft);
Katika mfano ujao tutatoa sifa zote za CSS zinazotuvutia za kipengele chetu:
<div id="elem">maandishi</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); // itatoa '30px'
console.log('borderTopWidth: ' + style.borderTopWidth); // itatoa '20px'
console.log('borderTopStyle: ' + style.borderTopStyle); // itatoa 'solid'
Kutokuwa sahihi kwa getComputedStyle
Wakati mwingine kazi getComputedStyle hufanya kazi
sio sawa kabisa na upana na urefu.
Hii inahusiana na ukweli kwamba padding na mpaka
hupanua kizuizi. Katika mfano ujao kizuizi
kimepewa upana wa 200px, na pia mpaka
na border. Upana halisi wa kizuizi ni 300px,
lakini getComputedStyle bado itatoa
200px:
<div id="elem">maandishi</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); // itatoa '200px'
console.log('height: ' + style.height); // itatoa '200px'
Hiyo ni: inageuka kuwa getComputedStyle
huipuuza upanuzi wa kizuizi na kuonyesha
vipimo vyake
kana kwamba huu upanuzi haukuwapo.
Lakini hiyo si yote: pia ina maana uwepo
au kutokuwepo kwa mstari wa kusokota - baadhi
ya vivinjari hutoa upana wa mstari wa kusokota
kutoka kwa upana, uliohesabiwa kupitia getComputedStyle,
na baadhi haitoi. Kwa ujumla hapa kabisa
sio ya kuvuka kivinjari na ni bora getComputedStyle
kwa ajili ya kuamua upana na urefu isitumike,
na kutumia metrik, ambazo tutazisoma
chini kidogo.
Thamani Zilizohesabiwa
Kuna nuance nyingine: ikiwa upana umepewa kwa
% - basi baada ya kazi ya getComputedStyle tutaona
kwa px. Hiyo ni kimsingi hatupati
upana uliowekwa, bali uliohesabiwa. Angalia
katika mfano ujao:
<div id="elem">maandishi</div>
#elem {
width: 30%; /* upana umepewa kwa % */
height: 200px;
padding: 30px;
border: 20px solid #BCBCBC;
overflow: auto;
}
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log('width: ' + style.width); // itatoa upana kwa px
Angalia pia
-
sifa
cssText,
ambayo huweka mitindo ya CSS kwa wingi