Cách lấy chiều cao và chiều rộng tài liệu mà không cần sử dụng jquery


Câu trả lời:


119
var height = document.body.clientHeight;
var width = document.body.clientWidth;

Kiểm tra: bài viết này để giải thích tốt hơn.


9
Đây không phải là trình duyệt chéo. Bạn nên kiểm tra điều này trước khi đăng nó.

12
@Iwazaru Cảm ơn bạn đã chỉ ra điều đó. Có vẻ như câu trả lời của 4 tuổi này không phải là chống đạn :)
Damb


Nếu một trang web có đường viền, nó sẽ loại bỏ chiều rộng đó với giải pháp này chứ không phải giải pháp jQuery. Có vẻ như là một đường viền trên cơ thể nhưng đáng để biết. window.innerWidthgiải quyết vấn đề này
BritishSam

Điều này trả về chiều cao của cửa sổ trình duyệt (nếu bạn điều chỉnh chiều cao của trình duyệt, nó sẽ thay đổi), không phải chiều cao của nội dung / trang web.
Radmation

56

Ngay cả ví dụ cuối cùng được đưa ra trên http://www.howtocreate.co.uk/tutorials/javascript/browserwindow cũng không hoạt động ở chế độ Quirks. Dễ tìm hơn tôi nghĩ, đây dường như là giải pháp (được trích xuất từ ​​mã jquery mới nhất):

Math.max(
    document.documentElement["clientWidth"],
    document.body["scrollWidth"],
    document.documentElement["scrollWidth"],
    document.body["offsetWidth"],
    document.documentElement["offsetWidth"]
);

chỉ cần thay thế Width cho "Height" để có được Chiều cao.


1
Đây phải là câu trả lời chính xác. clientWidth không phải lúc nào cũng có giá trị phù hợp.
Wildhammer

vấn đề với clientWidth là nó chỉ có thể xem được. scrollWidth bao gồm những thứ bị rò rỉ ra khỏi màn hình. ít nhất, điều này đúng với các thử nghiệm Chrome của tôi vào năm 2019.
StayCool

@StayCool có vẻ như jQuery gần đây nhất vẫn đang sử dụng phương pháp này để tính toán chiều cao / chiều rộng của tài liệu và nó cho kết quả tương tự như $(document).width(). Có thể bạn đang theo đuổi một cái gì đó tương tự $(window).width()trong JS thuần túy sẽ chỉ có document.documentElement["clientWidth"]trên các trình duyệt hiện đại.
Dan

38

Đây là một giải pháp trình duyệt chéo:

var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

Đây là một điều an toàn và chính xác để làm
Nan Zhou

1
điều này sẽ trả về chiều cao và chiều rộng của cửa sổ, không phải chiều cao và chiều rộng của tài liệu
Michael

25

Bạn nên sử dụng getBoundingClientRectvì nó thường hoạt động trên nhiều trình duyệt và cung cấp cho bạn độ chính xác của pixel phụ trên hình chữ nhật giới hạn.

elem.getBoundingClientRect()

1
dành cho những người thắc mắc về hỗ trợ: caniuse.com/#feat=getboundsclientrect
Mike Gleason jr Couturier

điều này trả về chiều cao là 0 khi tôi sử dụng nó trên document.body
Michael

Có thể là do cơ thể của bạn có chiều cao bằng 0. Nếu bạn không thay đổi kiểu hiển thị của nó thì đó là trường hợp mặc định. Kiểm tra nó trong trình kiểm tra DOM.
Erik Aigner

11

Nhận kích thước tài liệu mà không cần jQuery

document.documentElement.clientWidth
document.documentElement.clientHeight

Và sử dụng cái này nếu bạn cần Kích thước màn hình

screen.width
screen.height

8

Bạn cũng có thể thử:

document.body.offsetHeight
document.body.offsetWidth

1
Hãy cẩn thận khi sử dụng chúng trong những việc như sự kiện thay đổi kích thước cửa sổ. họ phải tính toán chiều cao và chiều rộng, mất một lúc.
Miles

8

Điều này sẽ hoạt động cho tất cả các trình duyệt / thiết bị:

function getActualWidth()
{
    var actualWidth = window.innerWidth ||
                      document.documentElement.clientWidth ||
                      document.body.clientWidth ||
                      document.body.offsetWidth;

    return actualWidth;
}

window.innerWidth là công cụ duy nhất cũng chính xác khi các công cụ dành cho nhà phát triển đang mở trên Chrome
Alex


1

Làm thế nào để tìm ra chiều rộng và chiều cao của tài liệu rất dễ dàng?

trong HTML
<span id="hidden_placer" style="position:absolute;right:0;bottom:0;visibility:hidden;"></span>

trong javascript

     var c=document.querySelector('#hidden_placer');

     var r=c.getBoundingClientRect();
     r.right=document width
     r.bottom=document height`

Bạn có thể cập nhật điều này vào mọi sự kiện thay đổi kích thước cửa sổ, nếu cần.


0

windowlà toàn bộ cửa sổ ứng dụng của trình duyệt. documentlà trang web được hiển thị thực sự được tải.

window.innerWidthwindow.innerHeightsẽ tính đến các thanh cuộn có thể không phải là thứ bạn muốn.

document.documentElementlà trang web đầy đủ không có thanh cuộn trên cùng. document.documentElement.clientWidthtrả về kích thước chiều rộng tài liệu mà không có thanh cuộn y. document.documentElement.clientHeighttrả về kích thước chiều cao tài liệu mà không có thanh cuộn x.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.