Saya telah mencari-cari dan tidak dapat menemukan ini. Saya mencoba untuk mendapatkan lebar div, tetapi jika memiliki koma desimal itu membulatkan angka.
Contoh:
#container{
background: blue;
width: 543.5px;
height: 20px;
margin: 0;
padding: 0;
}
Jika saya melakukannya, $('#container').width();
itu akan menghasilkan 543, bukan 543,5. Bagaimana cara mendapatkannya agar tidak membulatkan angka dan mengembalikan 543,5 penuh (atau angka berapapun itu).
javascript
jquery
css
MoDFoX
sumber
sumber
Jawaban:
Gunakan native
Element.getBoundingClientRect
daripada gaya elemen. Itu diperkenalkan di IE4 dan didukung oleh semua browser:Catatan: Untuk IE8 dan yang lebih lama, lihat catatan "Kompatibilitas Browser" di dokumen MDN.
Tampilkan cuplikan kode
sumber
width
danheight
tidak didukung di semua versi IE, jadi dalam beberapa kasus properti dan perlu dihitung sebelum dapat digunakan: stackoverflow.com/questions/11907514/…getBoundingClientRect()
menghitung dimensi setelah menerapkan transformasi CSS .display: none
).Jawaban Ross Allen adalah titik awal yang baik, tetapi menggunakan getBoundingClientRect (). Width juga akan menyertakan padding dan lebar batas yang bukan merupakan fungsi lebar jquery :
Jika maksud Anda adalah mendapatkan
width
nilai dengan presisi, Anda harus menghapus padding dan border seperti ini:sumber
.replace("px", "")
seperti yangparseInt
harus menghapusnya untuk Anda.parseFloat()
mungkin?innerWidth()
menjadi bagian dari masalah awal, saya khawatir penghitungan lebar batas di sini juga bekerja pada nilai yang dibulatkan.Hanya ingin menambahkan pengalaman saya di sini, meskipun pertanyaannya sudah lama: Konsensus di atas tampaknya adalah bahwa pembulatan jQuery secara efektif sama baiknya dengan perhitungan yang tidak dibulatkan - tetapi tampaknya itu tidak terjadi pada sesuatu yang telah saya lakukan .
Elemen saya memiliki lebar yang dapat berubah-ubah, secara umum, tetapi konten yang berubah secara dinamis melalui AJAX. Sebelum mengganti konten, saya mengunci sementara dimensi elemen sehingga tata letak saya tidak terpental selama transisi. Saya telah menemukan bahwa menggunakan jQuery seperti ini:
menyebabkan beberapa kelucuan, seperti ada perbedaan sub-piksel antara lebar sebenarnya dan lebar yang dihitung. (Secara khusus, saya akan melihat sebuah kata melompat dari satu baris teks ke baris lain, yang menunjukkan bahwa lebarnya telah diubah, tidak hanya dikunci.) Dari pertanyaan lain - Mendapatkan lebar floating-point aktual dari suatu elemen - Saya menemukan keluar yang
window.getComputedStyle(element).width
akan mengembalikan kalkulasi tidak bulat. Jadi saya mengubah kode di atas menjadi sepertiDan dengan kode ITU - tidak ada pantulan lucu! Pengalaman itu sepertinya menunjukkan bahwa nilai yang tidak di-ground benar - benar penting bagi browser, bukan? (Dalam kasus saya, Chrome Versi 26.0.1410.65.)
sumber
Anda dapat menggunakannya
getComputedStyle
untuk itu:sumber
Gunakan berikut ini untuk mendapatkan lebar yang akurat:
sumber
style.width