Apakah ada cara yang berfungsi untuk semua browser?
Apakah ada cara yang berfungsi untuk semua browser?
Jawaban:
jawaban asli
Iya.
window.screen.availHeight
window.screen.availWidth
perbarui 2017-11-10
Dari Tsunami di komentar:
Untuk mendapatkan resolusi asli yaitu perangkat seluler, Anda harus mengalikannya dengan rasio piksel perangkat:
window.screen.width * window.devicePixelRatio
danwindow.screen.height * window.devicePixelRatio
. Ini juga akan berfungsi pada desktop, yang akan memiliki rasio 1.
Dan dari Ben dalam jawaban lain:
Dalam vanilla JavaScript, ini akan memberi Anda lebar / tinggi yang TERSEDIA:
window.screen.availHeight window.screen.availWidth
Untuk lebar / tinggi absolut, gunakan:
window.screen.height window.screen.width
$(window).width()
sebagai gantinya, lihat jawaban
window.devicePixelRatio
. Lihat komentar saya pada jawaban Alessandros.
var width = screen.width;
var height = screen.height;
window.screen
. Seharusnya tambahkan saja ke jawaban yang ada.
screen.availHeight
hanya memberikan ketinggian yang tersedia di jendela browser sementara screen.height
memberikan ketinggian layar yang tepat.
window.screen.width * window.devicePixelRatio
dan window.screen.height * window.devicePixelRatio
. Ini juga akan berfungsi pada desktop, yang akan memiliki rasio 1.
Dalam vanilla JavaScript, ini akan memberi Anda lebar / tinggi yang TERSEDIA :
window.screen.availHeight
window.screen.availWidth
Untuk lebar / tinggi absolut, gunakan:
window.screen.height
window.screen.width
Kedua hal di atas dapat ditulis tanpa awalan jendela.
Suka jQuery? Ini berfungsi di semua browser, tetapi setiap browser memberikan nilai yang berbeda.
$(window).width()
$(window).height()
Apakah yang Anda maksud resolusi layar (misalnya 72 titik per inci) atau dimensi piksel (jendela browser saat ini 1000 x 800 piksel)?
Resolusi layar memungkinkan Anda untuk mengetahui seberapa tebal garis 10 piksel dalam inci. Dimensi piksel memberi tahu Anda berapa persen dari tinggi layar yang tersedia akan diambil oleh garis horizontal lebar 10 piksel.
Tidak ada cara untuk mengetahui resolusi tampilan hanya dari Javascript karena komputer itu sendiri biasanya tidak tahu dimensi layar yang sebenarnya, hanya jumlah piksel. 72 dpi adalah tebakan biasa ....
Perhatikan bahwa ada banyak kebingungan tentang resolusi layar, seringkali orang menggunakan istilah ini daripada resolusi piksel, tetapi keduanya sangat berbeda. Lihat Wikipedia
Tentu saja, Anda juga dapat mengukur resolusi dalam titik per cm. Ada juga subjek yang tidak jelas dari titik-titik non-kuadrat. Tapi saya ngelantur.
Menggunakan jQuery dapat Anda lakukan:
$(window).width()
$(window).height()
Anda juga bisa mendapatkan WINDOW lebar dan tinggi, menghindari bilah alat browser dan ... (bukan hanya ukuran layar).
Untuk melakukan ini, gunakan:
window.innerWidth
dan window.innerHeight
properti. Lihat di w3schools .
Dalam kebanyakan kasus itu akan menjadi cara terbaik, misalnya, untuk menampilkan dialog modal mengambang terpusat sempurna. Ini memungkinkan Anda untuk menghitung posisi di jendela, terlepas dari orientasi resolusi atau ukuran jendela mana yang menggunakan browser.
Mencoba mendapatkan ini di perangkat seluler memerlukan beberapa langkah lagi. screen.availWidth
tetap sama terlepas dari orientasi perangkat.
Inilah solusi saya untuk seluler:
function getOrientation(){
return Math.abs(window.orientation) - 90 == 0 ? "landscape" : "portrait";
};
function getMobileWidth(){
return getOrientation() == "landscape" ? screen.availHeight : screen.availWidth;
};
function getMobileHeight(){
return getOrientation() == "landscape" ? screen.availWidth : screen.availHeight;
};
window.orientation
mengembalikan undefined ... (Firefox 49) screen.orientation.angle
mengembalikan sudut, tetapi sudah di 0 untuk mode lansekap.
Jika Anda ingin mendeteksi resolusi layar, Anda mungkin ingin checkout res plugin . Ini memungkinkan Anda untuk melakukan hal berikut:
var res = require('res')
res.dppx() // 1
res.dpi() // 96
res.dpcm() // 37.79527559055118
Berikut adalah beberapa takeaways resolusi hebat dari Ryan Van Etten, penulis plugin:
Berikut kode sumber untuk res, mulai hari ini:
!function(root, name, make) {
if (typeof module != 'undefined' && module.exports) module.exports = make()
else root[name] = make()
}(this, 'res', function() {
var one = {dpi: 96, dpcm: 96 / 2.54}
function ie() {
return Math.sqrt(screen.deviceXDPI * screen.deviceYDPI) / one.dpi
}
function dppx() {
// devicePixelRatio: Webkit (Chrome/Android/Safari), Opera (Presto 2.8+), FF 18+
return typeof window == 'undefined' ? 0 : +window.devicePixelRatio || ie() || 0
}
function dpcm() {
return dppx() * one.dpcm
}
function dpi() {
return dppx() * one.dpi
}
return {'dppx': dppx, 'dpi': dpi, 'dpcm': dpcm}
});