Dapatkan ketinggian div dengan JavaScript biasa


312

Ada ide tentang cara mendapatkan tinggi div tanpa menggunakan jQuery?

Saya sedang mencari Stack Overflow untuk pertanyaan ini dan sepertinya setiap jawaban menunjuk ke jQuery .height().

Saya mencoba sesuatu seperti myDiv.style.height, tetapi tidak mengembalikan apa-apa, bahkan ketika div saya memilikinya widthdan heightdiatur dalam CSS.



Jawaban:


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

atau

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

clientHeight termasuk padding.

offsetHeight termasuk padding, scrollBar, dan border.


2
offsetheight doesnt wokr pada ie10 di bawah quirksmode.org/mobile/tableViewport_desktop.html
fearis

3
Anda juga bisa menggunakan scrollHeightyang mencakup ketinggian dokumen yang terkandung, padding vertikal, dan batas vertikal.
Saeid Zebardast

5
clientHeightjuga termasuk padding, jadi tidak setara dengan$.height()
Eevee

2
perbatasan dan margin juga mengambil ruang. :) dan jawaban Anda menyiratkan clientHeighttidak termasuk padding. dan pertanyaan menyebutkan keduanya $.height()dan .style.height, tidak ada yang termasuk padding, menyarankan penanya tidak menginginkannya juga.
Eevee

3
Catatan: OP tidak meminta jawaban yang mengecualikan padding . Tidak ada solusi lintas-platform asli untuk apa yang saya ketahui.
Dan


22

Opsi lain adalah menggunakan fungsi getBoundingClientRect. Harap dicatat bahwa getBoundingClientRect akan mengembalikan kotak kosong jika tampilan elemen 'tidak ada'.

Contoh:

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

2
Saya pikir ini adalah solusi yang lebih baik
Intervalia

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

clientHeight dan clientWidth adalah apa yang Anda cari.

offsetHeight dan offsetWidth juga mengembalikan tinggi dan lebar tetapi mencakup border dan scrollbar. Bergantung pada situasinya, Anda dapat menggunakan salah satunya.

Semoga ini membantu.


2

Jawaban lain tidak berhasil untuk saya. Inilah yang saya temukan di w3schools , dengan asumsi divmemiliki heightdan / atau widthmengatur.

Yang Anda butuhkan adalah heightdan widthuntuk mengecualikan padding.

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

Anda downvoters: Jawaban ini telah membantu setidaknya 5 orang, menilai dari upvotes yang saya terima. Jika Anda tidak menyukainya, katakan mengapa saya bisa memperbaikinya. Itu adalah hewan peliharaan terbesar saya dengan downvotes; Anda jarang memberi tahu saya mengapa Anda menurunkannya.


23
Ini tidak akan berfungsi kecuali div memiliki satu set heightdan / atauwidth
hopkins-matt

1
Saya pikir itu dianggap dan tersirat. Apakah Anda ingin peringatan yang disebutkan dalam jawaban saya?
derek

2
Ini lebih baik. Saya pribadi tidak akan menganggap metode lain tidak akurat. Saya berani mengatakan bahwa saya memiliki kegunaan untuk offsetHeightdan clientHeightlebih sering daripada style.height.
hopkins-matt

1
Mereka tidak bekerja untuk saya. Itu sebabnya saya memposting jawaban ini.
derek

1
Saya tidak bisa melihat bagaimana w3schools mengatakan metode lain tidak akurat.
aknuds1


1

Selain el.clientHeightdan el.offsetHeight, saat Anda membutuhkan ketinggian konten di dalam elemen (terlepas dari tinggi yang ditetapkan pada elemen itu sendiri), Anda dapat menggunakannya el.scrollHeight. Info lebih lanjut

Ini bisa berguna jika Anda ingin mengatur tinggi elemen atau tinggi maksimum ke ketinggian yang tepat dari konten dinamis internal. Sebagai contoh:

var el = document.getElementById('myDiv')

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

Bagi siapa pun yang bertanya-tanya, ini sangat berguna untuk melakukan transisi CSS untuk dropdown yang memiliki konten dinamis-tinggi
cronoklee


1

Berikut satu alternatif lagi:

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

Satu opsi adalah

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.