Bagaimana cara mendapatkan tinggi dan lebar viewport browser tanpa scrollbar menggunakan jQuery?
Inilah yang telah saya coba sejauh ini:
var viewportWidth = $("body").innerWidth();
var viewportHeight = $("body").innerHeight();
Solusi ini tidak memperhitungkan scrollbar browser.
Jawaban:
Info lebih lanjut
Namun, menggunakan jQuery tidak penting untuk mendapatkan nilai-nilai itu. Menggunakan
untuk mendapatkan ukuran tidak termasuk scrollbar, atau
untuk mendapatkan seluruh area pandang, termasuk bilah gulir.
sumber
Jangan gunakan jQuery, cukup gunakan javascript untuk hasil yang benar:
Ini termasuk lebar / tinggi scrollbar:
Ini tidak termasuk lebar / tinggi scrollbar:
sumber
Berikut adalah JS umum yang seharusnya berfungsi di sebagian besar browser (FF, Cr, IE6 +):
sumber
Anda menggunakan panggilan metode yang salah. Area pandang adalah "jendela" yang terbuka di dokumen: seberapa banyak yang dapat Anda lihat dan di mana.
Menggunakan
$(window).height()
tidak akan memberi Anda ukuran area pandang, ini akan memberi Anda ukuran seluruh jendela, yang biasanya merupakan ukuran seluruh dokumen meskipun dokumen bisa lebih besar.Untuk mendapatkan ukuran viewport yang sebenarnya, gunakan
window.innerHeight
danwindow.innerWidth
.https://gist.github.com/bohman/1351439
Jangan gunakan metode jQuery, misalnya
$(window).innerHeight()
, karena metode ini memberikan angka yang salah. Mereka memberi Anda tinggi jendela, bukaninnerHeight
.sumber
window.innerWidth
mengembalikan lebar viewport + lebar scrollbar. apa yang dapat saya lakukan dalam situasi ini?Deskripsi
Berikut ini adalah ukuran viewport browser.
Sampel
Informasi Lebih Lanjut
sumber
Seperti yang disarankan Kyle, Anda dapat mengukur ukuran area pandang browser klien tanpa memperhitungkan ukuran bilah gulir dengan cara ini.
Contoh (Dimensi area pandang TANPA bilah gulir)
Atau jika Anda ingin menemukan dimensi area pandang klien sambil mempertimbangkan ukuran bilah gulir, contoh di bawah ini paling cocok untuk Anda.
Pertama jangan lupa untuk mengatur body tag Anda menjadi 100% lebar dan tinggi hanya untuk memastikan pengukurannya akurat.
Sampel (Dimensi area pandang DENGAN bilah gulir)
sumber
Skrip
$(window).height()
berfungsi dengan baik (menunjukkan tinggi viewport dan bukan dokumen dengan tinggi scrolling), TETAPI Anda perlu meletakkan tag doctype dengan benar di dokumen Anda, misalnya doctypes ini:Untuk html5:
<!doctype html>
untuk html4 transisi:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Mungkin doctype default yang diasumsikan oleh beberapa browser adalah seperti itu, yang
$(window).height()
mengambil tinggi dokumen dan bukan tinggi browser. Dengan spesifikasi doctype, ini diselesaikan dengan memuaskan, dan saya cukup yakin Anda akan menghindari "mengubah scroll-overflow menjadi tersembunyi dan kemudian kembali", yang, maaf, trik yang agak kotor, terutama jika Anda tidak ' t mendokumentasikannya pada kode untuk penggunaan programmer di masa depan.Selain itu, jika Anda membuat skrip, Anda dapat menciptakan tes untuk membantu pemrogram di perpustakaan Anda, izinkan saya menemukan beberapa:
sumber
sumber
Menggunakan jQuery ...
$ (document) .height () & $ (window) .height () akan mengembalikan nilai yang sama ... kuncinya adalah mengatur ulang padding dan margin body sehingga Anda tidak mendapatkan scrolling.
Semoga ini membantu.
sumber
Saya ingin tampilan situs saya yang berbeda untuk layar lebar dan layar kecil. Saya telah membuat 2 file CSS. Di Java saya memilih mana dari 2 file CSS yang digunakan tergantung pada lebar layar. Saya menggunakan fungsi PHP
echo
dengan diecho
-fungsi beberapa javascript.kode saya di
<header>
bagian file PHP saya:sumber