Tỷ lệ hình ảnh javascript khi cuộn
Có nhiều thuộc tính JavaScript cho phép chúng tôi đọc thông tin về chiều rộng, chiều cao của phần tử và các tính năng hình học khác Show Chúng ta thường cần chúng khi di chuyển hoặc định vị các phần tử trong JavaScript yếu tố mẫuLà một phần tử mẫu để chứng minh các thuộc tính, chúng tôi sẽ sử dụng phần tử được cung cấp bên dưới
Nó có đường viền, phần đệm và cuộn. Bộ đầy đủ các tính năng. Không có lề vì chúng không phải là một phần của chính phần tử và không có thuộc tính đặc biệt nào cho chúng Phần tử trông như thế này Bạn có thể mở tài liệu trong sandbox Nhớ thanh cuộn Hình trên minh họa trường hợp phức tạp nhất khi phần tử có thanh cuộn. Một số trình duyệt (không phải tất cả) dành không gian cho nó bằng cách lấy nó từ nội dung (được gắn nhãn là “chiều rộng nội dung” ở trên) Vì vậy, nếu không có thanh cuộn, chiều rộng nội dung sẽ là 7, nhưng nếu thanh cuộn rộng 8 (chiều rộng có thể khác nhau giữa các thiết bị và trình duyệt) thì chỉ còn lại 9 và chúng tôi nên tính đến điều đó. Đó là lý do tại sao các ví dụ từ chương này giả định rằng có một thanh cuộn. Không có nó, một số tính toán đơn giản hơnKhu vực Thông thường, phần đệm được hiển thị trống trên hình minh họa của chúng tôi, nhưng nếu có nhiều văn bản trong phần tử và nó tràn ra ngoài, thì trình duyệt sẽ hiển thị văn bản "tràn" ở mức 0, đó là điều bình thườnghình họcĐây là bức tranh tổng thể với các thuộc tính hình học Giá trị của các thuộc tính này là các số kỹ thuật, nhưng những số này là "pixel", vì vậy đây là các phép đo pixel Hãy bắt đầu khám phá các thuộc tính bắt đầu từ bên ngoài của phần tử offsetParent, offsetLeft/TopNhững thuộc tính này hiếm khi cần thiết, nhưng chúng vẫn là những thuộc tính hình học “bên ngoài nhất”, vì vậy chúng ta sẽ bắt đầu với chúng 1 là tổ tiên gần nhất mà trình duyệt sử dụng để tính toán tọa độ trong quá trình kết xuấtĐó là tổ tiên gần nhất là một trong những điều sau đây
Thuộc tính 01 cung cấp tọa độ x/y so với góc trên bên trái của 1Trong ví dụ bên dưới, 03 bên trong có 04 là 1 và 01 dịch chuyển từ góc trên bên trái của nó ( 07)
Có một số trường hợp khi 1 là 09
offsetChiều rộng/Chiều caoBây giờ hãy chuyển sang phần tử chính nó Hai thuộc tính này là những thuộc tính đơn giản nhất. Chúng cung cấp chiều rộng/chiều cao “bên ngoài” của phần tử. Hay nói cách khác, kích thước đầy đủ của nó bao gồm cả viền Đối với phần tử mẫu của chúng tôi
Các thuộc tính hình học bằng 0/null đối với các phần tử không được hiển thị Các thuộc tính hình học chỉ được tính cho các phần tử được hiển thị Nếu một phần tử (hoặc bất kỳ tổ tiên nào của nó) có 10 hoặc không có trong tài liệu, thì tất cả các thuộc tính hình học bằng 0 (hoặc 09 cho 1)Ví dụ: 1 là 09 và 44, 45 là 46 khi chúng tôi tạo một phần tử nhưng chưa chèn phần tử đó vào tài liệu hoặc phần tử đó (hoặc tổ tiên của phần tử đó) có 10Chúng ta có thể sử dụng điều này để kiểm tra xem một phần tử có bị ẩn hay không, như thế này 0Xin lưu ý rằng 48 như vậy trả về 49 cho các thành phần trên màn hình nhưng không có kích thướcclientTop/LeftBên trong phần tử chúng ta có các đường viền Để đo lường chúng, có các thuộc tính 10 và 11trong ví dụ của chúng tôi
…Nhưng chính xác hơn – những thuộc tính này không phải là chiều rộng/chiều cao của đường viền, mà là tọa độ tương đối của mặt trong so với mặt ngoài Có gì khác biệt? Nó hiển thị khi tài liệu ở chế độ từ phải sang trái (hệ điều hành bằng ngôn ngữ Ả Rập hoặc tiếng Do Thái). Khi đó, thanh cuộn không ở bên phải mà ở bên trái, sau đó, 11 cũng bao gồm chiều rộng của thanh cuộnTrong trường hợp đó, 11 sẽ không phải là 16, nhưng với chiều rộng của thanh cuộn là 17Đây là ví dụ trong tiếng Do Thái khách hàngChiều rộng/Chiều caoCác thuộc tính này cung cấp kích thước của khu vực bên trong đường viền phần tử Chúng bao gồm chiều rộng nội dung cùng với phần đệm, nhưng không có thanh cuộn Ở hình trên, trước tiên hãy xem xét 18Không có thanh cuộn ngang, vì vậy nó chính xác là tổng của những gì bên trong đường viền. Chiều cao CSS ________ 419 cộng với phần đệm trên và dưới (________ 216) tổng cộng _________ 571 Bây giờ 72 – ở đây chiều rộng nội dung không phải là 7, mà là 74, vì 8 bị thanh cuộn chiếm giữ. Vì vậy, tổng là ________ 574 cộng với phần đệm bên trái và bên phải, tổng số là _________ 577Nếu không có phần đệm thì 78 chính xác là vùng nội dung, bên trong đường viền và thanh cuộn (nếu có)Vì vậy, khi không có phần đệm, chúng tôi có thể sử dụng 79 để lấy kích thước vùng nội dungcuộnChiều rộng/Chiều caoCác thuộc tính này giống như 79, nhưng chúng cũng bao gồm các phần được cuộn ra (ẩn)Trên hình trên
Chúng ta có thể sử dụng các thuộc tính này để mở rộng phần tử theo chiều rộng/chiều cao đầy đủ của nó Như thế này 1Nhấp vào nút để mở rộng phần tử văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản văn bản yếu tố. Phong cách. chiều cao = 84cuộnTrái/cuộnTopThuộc tính 85 là chiều rộng/chiều cao của phần ẩn, cuộn ra của phần tửTrên hình bên dưới, chúng ta có thể thấy 86 và 87 cho một khối có cuộn dọcNói cách khác, 87 là “số lượng được cuộn lên”
Hầu hết các thuộc tính hình học ở đây là chỉ đọc, nhưng có thể thay đổi 85 và trình duyệt sẽ cuộn phần tửNếu bạn nhấp vào phần tử bên dưới, mã 91 sẽ thực thi. Điều đó làm cho nội dung phần tử cuộn xuống 92Nhấp vào Đặt 87 thành 46 hoặc một giá trị lớn, chẳng hạn như 95 sẽ làm cho phần tử cuộn lên trên cùng/dưới cùng tương ứngKhông lấy chiều rộng/chiều cao từ CSSChúng tôi vừa trình bày các thuộc tính hình học của các phần tử DOM, có thể được sử dụng để lấy chiều rộng, chiều cao và tính toán khoảng cách Nhưng như chúng ta đã biết từ chương Kiểu và lớp, chúng ta có thể đọc chiều cao và chiều rộng CSS bằng cách sử dụng 96Vậy tại sao không đọc chiều rộng của một phần tử với 96, như thế này? 4Tại sao chúng ta nên sử dụng các thuộc tính hình học để thay thế?
Và còn một lý do nữa. một thanh cuộn. Đôi khi mã hoạt động tốt mà không có thanh cuộn lại gặp lỗi vì thanh cuộn lấy không gian từ nội dung trong một số trình duyệt. Vì vậy, chiều rộng thực có sẵn cho nội dung nhỏ hơn chiều rộng CSS. Và 79 tính đến điều đó…Nhưng với 06 thì tình hình đã khác. Một số trình duyệt (e. g. Chrome) trả về chiều rộng bên trong thực, trừ đi thanh cuộn và một số trong số chúng (e. g. Firefox) – Chiều rộng CSS (bỏ qua thanh cuộn). Sự khác biệt giữa các trình duyệt như vậy là lý do không sử dụng 96 mà dựa vào các thuộc tính hình họcNếu trình duyệt của bạn dành không gian cho thanh cuộn (hầu hết các trình duyệt dành cho Windows đều có), thì bạn có thể kiểm tra nó bên dưới Phần tử có văn bản có CSS 08Trên Desktop Windows OS, Firefox, Chrome, Edge đều dành chỗ cho thanh cuộn. Nhưng Firefox hiển thị 7, trong khi Chrome và Edge hiển thị ít hơn. Đó là vì Firefox trả về chiều rộng CSS và các trình duyệt khác trả về chiều rộng "thực"Xin lưu ý rằng sự khác biệt được mô tả chỉ là về việc đọc 00 từ JavaScript, về mặt trực quan mọi thứ đều chính xác |