Nhận chiều cao div với JavaScript đơn giản


312

Có ý tưởng nào về cách lấy chiều cao của div mà không cần sử dụng jQuery không?

Tôi đã tìm kiếm Stack Overflow cho câu hỏi này và dường như mọi câu trả lời đều trỏ đến jQuery .height().

Tôi đã thử một cái gì đó như thế myDiv.style.height, nhưng nó không trả lại được gì, ngay cả khi div của tôi có nó widthheightđược đặt trong CSS.



Câu trả lời:


587
var clientHeight = document.getElementById('myDiv').clientHeight;

hoặc là

var offsetHeight = document.getElementById('myDiv').offsetHeight;

clientHeight bao gồm đệm.

offsetHeight bao gồm đệm, scrollBar và viền.


2
offsetheight không wokr trên eg10 bên dưới quirksmode.org/mobile/tableViewport_desktop.html
sợ hãi

3
Bạn cũng có thể sử dụng scrollHeightbao gồm chiều cao của tài liệu được chứa, phần đệm dọc và viền dọc.
Saeid Zebardast

5
clientHeightcũng bao gồm phần đệm, vì vậy nó không tương đương với$.height()
Eevee

2
các đường viền và lề cũng ở đó chiếm không gian. :) và câu trả lời của bạn ngụ ý clientHeightkhông bao gồm đệm. và câu hỏi đề cập đến cả hai $.height().style.height, không bao gồm cả phần đệm, cho thấy người hỏi cũng không muốn nó.
Eevee

3
Lưu ý: OP không yêu cầu câu trả lời loại trừ phần đệm . Không có giải pháp đa nền tảng riêng cho những gì tôi biết.
Dan


22

Một tùy chọn khác là sử dụng hàm getBoundingClientRect. Xin lưu ý rằng getBoundingClientRect sẽ trả về một chỉnh lưu trống nếu màn hình của phần tử là 'none'.

Thí dụ:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}

2
Tôi nghĩ rằng đây là giải pháp tốt hơn
Intervalia

11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeight và clientWidth là những gì bạn đang tìm kiếm.

offsetHeight và offsetWidth cũng trả về chiều cao và chiều rộng nhưng nó bao gồm đường viền và thanh cuộn. Tùy thuộc vào tình huống, bạn có thể sử dụng cái này hay cái khác.

Hi vọng điêu nay co ich.


2

Các câu trả lời khác không làm việc cho tôi. Đây là những gì tôi tìm thấy ở w3schools , giả sử divcó một heightvà / hoặc widthbộ.

Tất cả bạn cần là heightwidthđể loại trừ đệm.

    var height = document.getElementById('myDiv').style.height;
    var width = document.getElementById('myDiv').style.width;

Bạn downvoters: Câu trả lời này đã giúp ít nhất 5 người, đánh giá bằng các upvote tôi đã nhận được. Nếu bạn không thích nó, hãy cho tôi biết lý do tại sao tôi có thể sửa nó. Đó là thú cưng lớn nhất của tôi với downvote; bạn hiếm khi nói với tôi tại sao bạn downvote nó.


23
Điều này sẽ không hoạt động trừ khi div có một bộ heightvà / hoặcwidth
hopkins-matt

1
Tôi nghĩ rằng đó là giả định và ngụ ý. Bạn có muốn cảnh báo đó được đề cập trong câu trả lời của tôi?
cran

2
Tốt hơn là. Cá nhân tôi sẽ không coi các phương pháp khác là không chính xác. Tôi muốn mạo hiểm nói rằng tôi có một mục đích sử dụng offsetHeightclientHeightthường xuyên hơn style.height.
hopkins-matt

1
Họ không làm việc cho tôi. Đó là lý do tại sao tôi đăng câu trả lời này.
vươn

1
Tôi không thể thấy w3schools nói các phương pháp khác không chính xác như thế nào.
aknuds1


1

Ngoài el.clientHeightel.offsetHeight, khi bạn cần chiều cao của nội dung bên trong phần tử (bất kể chiều cao được đặt trên chính phần tử đó), bạn có thể sử dụng el.scrollHeight. thêm thông tin

Điều này có thể hữu ích nếu bạn muốn đặt chiều cao phần tử hoặc chiều cao tối đa thành chiều cao chính xác của nội dung động bên trong của nó. Ví dụ:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'

Đối với bất kỳ ai thắc mắc, điều này rất hữu ích để thực hiện chuyển đổi CSS cho các danh sách thả xuống có nội dung chiều cao động
cronoklee


1

Đây là một thay thế nữa:

var classElements = document.getElementsByClassName("className");

function setClassHeight (classElements, desiredHeightValue) 
    {
        var arrayElements = Object.entries(classElements);
        for(var i = 0; i< arrayElements.length; i++) {
            arrayElements[i][1].style.height = desiredHeightValue;
        }

    }

1

Một lựa chọn sẽ là

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
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.