Tüm tarayıcılar için uygun bir yol var mı?
Tüm tarayıcılar için uygun bir yol var mı?
Yanıtlar:
orijinal cevap
Evet.
window.screen.availHeight
window.screen.availWidth
2017-11-10 güncellemesi
Gönderen Tsunamiler yorumlarda:
Bir mobil cihazın doğal çözünürlüğünü almak için cihaz piksel oranı ile çarpmanız gerekir:
window.screen.width * window.devicePixelRatio
vewindow.screen.height * window.devicePixelRatio
. Bu, 1 oranına sahip masaüstlerinde de çalışacaktır.
Ve başka bir cevapta Ben'den :
Vanilya JavaScript'te, bu size MEVCUT genişlik / yükseklik verecektir:
window.screen.availHeight window.screen.availWidth
Mutlak genişlik / yükseklik için şunları kullanın:
window.screen.height window.screen.width
$(window).width()
bunun yerine jQuery's kullanırım, chaim.dev'in cevabına bakın
window.devicePixelRatio
. Alessandros cevabı hakkındaki yorumuma bakın.
var width = screen.width;
var height = screen.height;
window.screen
. Sadece mevcut cevaba eklemeliyiz.
screen.availHeight
verirken tarayıcı penceresindeki kullanılabilir yüksekliği screen.height
verir.
window.screen.width * window.devicePixelRatio
ve window.screen.height * window.devicePixelRatio
. Bu aynı zamanda 1 oranına sahip masaüstü bilgisayarlarda da çalışacaktır.
Vanilya JavaScript'te, bu size MEVCUT genişlik / yükseklik verecektir :
window.screen.availHeight
window.screen.availWidth
Mutlak genişlik / yükseklik için şunları kullanın:
window.screen.height
window.screen.width
Yukarıdakilerin her ikisi de pencere öneki olmadan yazılabilir.
JQuery gibi mi? Bu tüm tarayıcılarda çalışır, ancak her tarayıcı farklı değerler verir.
$(window).width()
$(window).height()
Ayrıca WINDOW genişliğini ve yüksekliğini elde edebilir, tarayıcı araç çubuklarından ve ... (sadece ekran boyutunu değil) kaçınabilirsiniz.
Bunu yapmak için: window.innerWidth
ve window.innerHeight
özelliklerini kullanın
. W3schools'da görün .
Çoğu durumda, örneğin, mükemmel bir şekilde ortalanmış kayan modsal iletişim kutusu görüntülemek en iyi yol olacaktır. Tarayıcıyı hangi çözünürlük yönü veya pencere boyutu kullanıyor olursa olsun, pencere üzerindeki konumları hesaplamanızı sağlar.
Ekran çözünürlüğü mü (örn. İnç başına 72 nokta) veya piksel boyutlarını (tarayıcı penceresi şu anda 1000 x 800 piksel)?
Ekran çözünürlüğü, 10 piksellik bir çizginin inç cinsinden ne kadar kalın olacağını bilmenizi sağlar. Piksel boyutları, mevcut ekran yüksekliğinin yüzde kaçının 10 piksel genişliğinde yatay bir çizgi tarafından alınacağını gösterir.
Ekran çözünürlüğünü sadece Javascript'ten bilmenin bir yolu yoktur, çünkü bilgisayarın kendisi genellikle ekranın gerçek boyutlarını, sadece piksel sayısını bilmez. 72 dpi olağan tahmin olduğunu ....
Ekran çözünürlüğü hakkında çok fazla karışıklık olduğunu unutmayın, genellikle insanlar piksel çözünürlüğü yerine terimi kullanır, ancak ikisi oldukça farklıdır. Wikipedia'ya bakın
Tabii ki, çözünürlüğü cm başına nokta cinsinden de ölçebilirsiniz. Ayrıca kare olmayan noktaların belirsiz konusu var. Ama konuţuyorum.
JQuery kullanarak şunları yapabilirsiniz:
$(window).width()
$(window).height()
Bunu bir mobil cihazdan almaya çalışmak birkaç adım daha gerektirir. screen.availWidth
cihazın yönüne bakılmaksızın aynı kalır.
İşte mobil cihazlar için çözümüm:
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
undefined döndürür ... (Firefox 49) screen.orientation.angle
bir açı döndürür, ancak manzara modu için zaten 0 olur.
Ekran çözünürlüğünü tespit etmek istiyorsanız, eklentinin res'unu kontrol etmek isteyebilirsiniz . Aşağıdakileri yapmanızı sağlar:
var res = require('res')
res.dppx() // 1
res.dpi() // 96
res.dpcm() // 37.79527559055118
Eklentinin yazarı Ryan Van Etten'den bazı harika çözüm önerileri :
Bugün için res kaynak kodu:
!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}
});