197 of 264 menu

Hàm getComputedStyle

Hàm getComputedStyle cho phép lấy giá trị của bất kỳ thuộc tính CSS nào của phần tử, ngay cả từ tệp CSS.

Cú pháp

let đối_tượng = getComputedStyle(phần_tử);

Chi tiết

Cách thức hoạt động của nó (chú ý: không như chúng ta đợi): tham số hàm nhận một phần tử, và trả về một đối tượng, chứa trong đó tất cả các thuộc tính CSS của phần tử đã truyền. Hãy đặt đối tượng này vào biến style. Tên gọi là tùy ý, đây chỉ là một biến - chúng ta nghĩ ra sao thì sẽ gọi như vậy:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // trong style chứa các thuộc tính CSS

Hãy xuất ra, ví dụ, chiều rộng. Việc này được thực hiện như sau - style.width:

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

Để xuất ra, ví dụ, padding trái - chúng ta làm như sau - style.paddingLeft:

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

Trong ví dụ tiếp theo, chúng ta sẽ xuất tất cả các thuộc tính CSS mà chúng ta quan tâm cho phần tử của mình:

<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); // sẽ xuất ra '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // sẽ xuất ra '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // sẽ xuất ra 'solid'

Sự không chính xác của getComputedStyle

Đôi khi hàm getComputedStyle hoạt động không hoàn toàn chính xác với chiều rộng và chiều cao. Điều này liên quan đến việc padding và đường viền mở rộng khối. Trong ví dụ tiếp theo, khối được đặt chiều rộng 200px, cũng như đường viền và border. Chiều rộng thực tế của khối là 300px, nhưng getComputedStyle vẫn sẽ xuất ra 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); // sẽ xuất ra '200px' console.log('height: ' + style.height); // sẽ xuất ra '200px'

Tức là: hóa ra là getComputedStyle bỏ qua việc mở rộng khối và hiển thị kích thước của nó như thể không có sự mở rộng đó. Nhưng đó chưa phải là tất cả: sự có mặt hoặc vắng mặt của thanh cuộn cũng có ý nghĩa - một số trình duyệt trừ đi chiều rộng của thanh cuộn từ chiều rộng được tính toán qua getComputedStyle, còn một số thì không trừ đi. Nói chung ở đây tất cả đều không đa trình duyệt và tốt hơn hết là không sử dụng getComputedStyle để xác định chiều rộng và chiều cao, mà sử dụng các chỉ số mà chúng ta sẽ học ngay bên dưới.

Giá trị đã tính toán

Còn một sắc thái nữa: nếu chiều rộng được đặt ở % - thì sau khi getComputedStyle hoạt động, chúng ta sẽ thấy nó ở đơn vị px. Tức là về bản chất chúng ta nhận được không phải là chiều rộng đã đặt, mà là chiều rộng đã được tính toán. Hãy xem ví dụ tiếp theo:

<div id="elem">text</div> #elem { width: 30%; /* chiều rộng được đặt bằng % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // sẽ xuất ra chiều rộng bằng px

Xem thêm

  • thuộc tính cssText,
    thiết lập hàng loạt các kiểu CSS
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối