Cân nhắc HTML sau (JSFiddle link):Tại sao getBoundingClientRect chỉ hoạt động cục bộ?
<div id="a" class="box">cat</div>
<div id="b" class="box rotate">cat</div>
<div id="c" class="box"><div class="rotate">cat</div></div>
và CSS:
.box { font-size:500%; }
.rotate { transform: rotate(-90deg); }
đo chiều rộng và chiều cao của nguyên tố id=a
sử dụng .getBoundingClientRect()
$(a)[0].getBoundingClientRect().width
$(a)[0].getBoundingClientRect().height
cho kích thước của (320,91)
. Đo cùng một thứ trên phần tử id=b
cho các kích thước được chuyển đổi (91,320)
. Tuyệt vời.
Tuy nhiên, khi tôi cố gắng đo yếu tố id=c
chỉ đơn giản là tổ chức vòng quay bên trong div bên trong, tôi nhận được kích thước ban đầu (320,91)
! Các hộp giới hạn cho b
và c
có giống nhau hay không?
Nếu không, làm thế nào tôi có thể nhận được hộp giới hạn c
để báo cáo chính xác?
Nếu có liên quan, tôi đang sử dụng Chromium, Phiên bản 37.0.2062.120 Ubuntu 12.04 (281580) (64-bit).
'$ (a) [0] .getBoundingClientRect()' là một cách thực sự xoay vòng để viết 'a.getBoundingClientRect()'. Nếu bạn định dựa vào các hình cầu tự động, bạn cũng có thể sử dụng chúng. :-) –
@ T.J.Crowder Cảm ơn bạn đã tip! Đây là nỗ lực của tôi tại một ví dụ làm việc tối thiểu từ một dự án lớn hơn mà tôi đang làm việc. Tôi rất thành thạo trong thiết kế web và tôi thường dựa vào JQuery để nâng những thứ mà tôi đang học có thể được thực hiện với độ chi tiết ít hơn. – Hooked
@Hooked: Trong trường hợp này, phiên bản jQuery sẽ là '$ (" # a ") [0] .getBoundingClientRect();' Tôi không thể tự mình dựa vào những hình cầu tự động đó. :-) –