Bagaimana Anda menemukan lebar saat ini <div>dalam cara yang kompatibel lintas-browser tanpa menggunakan perpustakaan seperti jQuery?
Bagaimana Anda menemukan lebar saat ini <div>dalam cara yang kompatibel lintas-browser tanpa menggunakan perpustakaan seperti jQuery?
Jawaban:
document.getElementById("mydiv").offsetWidth
cientWidth, meskipun aku tidak tahu bedanya.
offsetWidthtermasuk lebar perbatasan, clientWidthtidak.
display: noneatau bukan bagian dari dokumen, itu akan selalu memiliki tinggi nol offset.
Anda dapat menggunakan clientWidthatau offsetWidth referensi jaringan pengembang Mozilla
Itu akan seperti:
document.getElementById("yourDiv").clientWidth; // returns number, like 728
atau dengan lebar batas:
document.getElementById("yourDiv").offsetWidth; // 728 + borders width
Semua Jawaban benar, tetapi saya masih ingin memberikan beberapa alternatif lain yang mungkin berhasil.
Jika Anda mencari lebar yang ditetapkan (mengabaikan bantalan, margin, dan sebagainya) yang bisa Anda gunakan.
getComputedStyle(element).width; //returns value in px like "727.7px"
getComputedStyle memungkinkan Anda mengakses semua gaya elemen itu. Misalnya: padding, paddingLeft, margin, border-top-left-radius dan sebagainya.
Anda juga dapat mencari DOM menggunakan ClassName. Sebagai contoh:
document.getElementsByClassName("myDiv")
Ini akan mengembalikan array. Jika ada satu properti tertentu yang Anda minati. Misalnya:
var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;
divWidth sekarang akan sama dengan lebar elemen pertama di array div Anda.
Opsi lain adalah menggunakan fungsi getBoundingClientRect. Harap dicatat bahwa getBoundingClientRect akan mengembalikan kotak kosong jika tampilan elemen 'tidak ada'.
var elem = document.getElementById("myDiv");
if(elem) {
var rect = elem.getBoundingClientRect();
console.log(rect.width);
}
panggil metode di bawah ini di div atau tag tubuh onclick = "show (event);" acara fungsi (acara) {
var x = event.clientX;
var y = event.clientY;
var ele = document.getElementById("tt");
var width = ele.offsetWidth;
var height = ele.offsetHeight;
var half=(width/2);
if(x>half)
{
// alert('right click');
gallery.next();
}
else
{
// alert('left click');
gallery.prev();
}
}
Cara yang benar untuk mendapatkan gaya komputasi adalah menunggu sampai halaman ditampilkan. Itu bisa dilakukan dengan cara berikut. Perhatikan batas waktu untuk mendapatkan autonilai.
function getStyleInfo() {
setTimeout(function() {
const style = window.getComputedStyle(document.getElementById('__root__'));
if (style.height == 'auto') {
getStyleInfo();
}
// IF we got here we can do actual business logic staff
console.log(style.height, style.width);
}, 100);
};
window.onload=function() { getStyleInfo(); };
Jika Anda menggunakan hanya
window.onload=function() {
var computedStyle = window.getComputedStyle(document.getElementById('__root__'));
}
Anda bisa mendapatkan autonilai untuk lebar dan tinggi karena browser tidak membuat sampai beban penuh dilakukan.