getComputedStyle Funksiyası
getComputedStyle funksiyası
elementin istənilən CSS xassəsinin dəyərini,
hətta CSS faylından almağa imkan verir.
Sintaksis
let obyekt = getComputedStyle(element);
Detallar
Bu necə işləyir (diqqət: gözlədiyimiz kimi
deyil): funksiya parametr kimi elementi qəbul edir,
və ötürülən elementin bütün CSS xassələrini
özündə saxlayan bir obyekt qaytarır.
Gəlin bu obyekti style dəyişəninə qoyaq.
Ad ixtiyaridir, bu
sadəcə bir dəyişəndir - necə adlandırsaq, elə də
istifadə edəcəyik:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem); // style-da CSS xassələri yerləşir
Gəlin, məsələn, eni çıxadaq. Bu belə
edilir - style.width:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log(style.width);
Çıxarmaq üçün, məsələn, sol padding
- belə edirik - style.paddingLeft:
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log(style.paddingLeft);
Aşağıdakı nümunədə biz elementimiz üçün bizi maraqlandıran bütün CSS xassələrini çıxardacağıq:
<div id="elem">mətn</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); // '30px' çıxardacaq
console.log('borderTopWidth: ' + style.borderTopWidth); // '20px' çıxardacaq
console.log('borderTopStyle: ' + style.borderTopStyle); // 'solid' çıxardacaq
getComputedStyle-in Dəqiq Olmaması
Bəzən getComputedStyle funksiyası
en və hündürlüklə tam düzgün işləmir.
Bu onunla əlaqədardır ki, padding və sərhəd
bloku genişləndirir. Aşağıdakı nümunədə bloka
200px en, həmçinin sərhəd və
border təyin edilib. Blokun həqiqi eni 300px,
amma getComputedStyle yenə də
200px çıxardacaq:
<div id="elem">mətn</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); // '200px' çıxardacaq
console.log('height: ' + style.height); // '200px' çıxardacaq
Yəni: belə çıxır ki, getComputedStyle
blokun genişlənməsini məhəl qoymur və onun
ölçülərini elə göstərir ki, sanki bu genişlənmə olmayıb.
Amma bu hələ bitməyib: həmçinin sürüşdürmə cərgəsinin
olması və ya olmamasının da əhəmiyyəti var - bəzi
brauzerlər sürüşdürmə cərgəsinin enini
getComputedStyle vasitəsilə hesablanmış endən çıxır,
bəziləri isə çıxmır. Ümumiyyətlə burada hər şey
tamamilə brauzerlar arası uyğun deyil və getComputedStyle-dan
en və hündürlüyü müəyyən etmək üçün istifadə etmək daha yaxşıdır,
əvəzində aşağıda öyrənəcəyimiz metrikalardan istifadə edin.
Hesablanmış Dəyərlər
Bir daha bir nüans var: əgər en
% ilə təyin edilibsə - onda getComputedStyle işlədikdən sonra biz onu
px ilə görəcəyik. Yəni mahiyyətcə biz
təyin edilmiş eni deyil, hesablanmış olanı alırıq. Aşağıdakı
nümunəyə baxın:
<div id="elem">mətn</div>
#elem {
width: 30%; /* en % ilə verilib */
height: 200px;
padding: 30px;
border: 20px solid #BCBCBC;
overflow: auto;
}
let elem = document.querySelector('#elem');
let style = getComputedStyle(elem);
console.log('width: ' + style.width); // eni px ilə çıxardacaq
Həmçinin Baxın
-
cssTextxassəsi,
ki, kütləvi şəkildə CSS stillərini təyin edir