iPhone 5 CSS medya sorgusu


132

İPhone 5 daha uzun bir ekrana sahip ve web sitemin mobil görünümünü yakalamıyor. İPhone 5 için yeni duyarlı tasarım sorguları nelerdir ve mevcut iPhone sorgularıyla birleştirebilir miyim?

Mevcut medya sorgum şudur:

@media only screen and (max-device-width: 480px) {}

3
Mevcut medya sorgularınızı görebilir miyiz?
BoltClock

Yanıtlar:


283

Bir başka kullanışlı medya özelliği de device-aspect-ratio.

O Not 9 en boy oranı: iPhone 5 16 bulunmamaktadır . Aslında 40:71.

iPhone <5:
@media screen and (device-aspect-ratio: 2/3) {}

iPhone 5:
@media screen and (device-aspect-ratio: 40/71) {}

iphone 6:
@media screen and (device-aspect-ratio: 375/667) {}

iPhone 6 Plus:
@media screen and (device-aspect-ratio: 16/9) {}

iPad:
@media screen and (device-aspect-ratio: 3/4) {}

Referans:
Medya Sorguları @ W3C
iPhone Modeli Karşılaştırması
En Boy Oranı Hesaplayıcı


2
Bu yaklaşımı beğendim, ancak Stephen Sprawl zsprawl.com/iOS/2012/09/css-media-queries-for tarafından açıklandığı gibi -webkit-min-device-piksel-oranı eklenene kadar bir PhoneGap uygulaması web görünümünde çalışmasını sağlayamadım - iphone-5 . @media ekranı ve (cihaz-en-boy oranı: 40/71) ve (-webkit-min-cihaz-piksel-oranı: 2) {// phonegaps için iphone5}
TaeKwonJoe

and (-webkit-min-device-pixel-ratio: 2)@TaeKwonJoe
Mahendra Liya

1
Bunu iPhone 6'yı içerecek şekilde güncellediğiniz için teşekkür ederiz!
Maverick

Bu, css'de iphone 4 ve iphone 5'i ayırt etmem gerektiğinde oldukça iyi çalışıyor.
euccas

1
İphone 6 için, (cihaz-en-boy oranı: 667/375) gerçek bir fiziksel iphone 6 üzerinde çalışmadı. Yine de iOS simülatöründe çalıştı. 375/667 olarak değiştirdim ve fiziksel cihazda çalıştı.
şimdi ne yapalım

64

Bu bloga kredi verdiğim bir şey var :

@media only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone 5 only */
}

Söz konusu cihazda yüklü belirli iOS sürümüne değil, iPhone 5'e tepki verdiğini unutmayın.

Mevcut sürümünüzle birleştirmek için, onları virgülle sınırlandırabilmeniz gerekir:

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 560px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 2) {
    /* iPhone only */
}

Not: Yukarıdaki kodu test etmedim, ancak daha önce virgülle ayrılmış @mediasorguları test ettim ve gayet iyi çalışıyorlar.

Yukarıdakilerin, Galaxy Nexus gibi benzer oranları paylaşan bazı diğer cihazlara çarpabileceğini unutmayın. Burada, yalnızca bir boyutu 640 piksel (bazı tuhaf ekran piksel anormallikleri nedeniyle 560 piksel) ve 960 piksel (iPhone <5) ile 1136 piksel (iPhone 5) arasında olan cihazları hedefleyen ek bir yöntem verilmiştir.

@media
    only screen and (max-device-width: 1136px) and (min-device-width: 960px) and (max-device-height: 640px) and (min-device-height: 560px),
    only screen and (max-device-height: 1136px) and (min-device-height: 960px) and (max-device-width: 640px) and (min-device-width: 560px) {
    /* iPhone only */
}

1
Hem iphone 4 hem de 5'i yakalamak için bu sorguyu eski sorgumla nasıl birleştirebileceğimi önerebilir misiniz?
Maverick

6
Dikkatli olun, bu sadece iPhone'ları değil diğer telefonları da etkileyecektir. Samsung Galaxy Nexus'a bir örnek.
Mike Sweeney

@MikeSweeney İyi çağrı. Gönderimi diğer cihazları içermemesi gereken yeni bir yöntemle güncelledim.
Eric

@Eric Bu, bir dizi çapraz telefon testinden sonra karar verdiğim şey - karışımın içine yükseklik getirmek zorunda kaldım! Test ettiğim 7-8 farklı telefonda harika çalışıyor gibi görünüyor.
Mike Sweeney

bu satır doğru iPhone 5 and not to iOS 6mu :? "İPhone5 mi, iPhone 6 için değil" mi olmalı?
Sgnl

38

Medya sorgularını kullanan max-device-widthveya max-device-heightmedya sorguları için yukarıda listelenen tüm bu cevaplar çok güçlü bir hatadan muzdariptir: aynı zamanda diğer birçok popüler mobil cihazı da hedefler (muhtemelen istenmeyen ve hiç test edilmemiş veya gelecekte piyasaya çıkacak).

Bu sorgular daha küçük ekrana sahip herhangi bir cihaz için çalışacak ve muhtemelen tasarımınız bozulacaktır.

Cihaza özgü benzer medya sorgularıyla (HTC, Samsung, IPod, Nexus ... için) birleştirildiğinde bu uygulama bir saatli bomba başlatacaktır. Hata ayıklama için bu fikir, CSS'nizi kontrolsüz bir spagetti yapabilir. Olası tüm cihazları asla test edemezsiniz.

Lütfen her zaman IPhone5'i hedefleyen ve başka hiçbir şeyi hedeflemeyen tek medya sorgusunun :

/* iPhone 5 Retina regardless of IOS version */
@media (device-height : 568px) 
   and (device-width : 320px) 
   and (-webkit-min-device-pixel-ratio: 2)
/* and (orientation : todo: you can add orientation or delete this comment)*/ {
                 /*IPhone 5 only CSS here*/
}

Burada maksimum genişliğin değil , tam genişlik ve yüksekliğin işaretlendiğini unutmayın.


Şimdi, çözüm nedir? Olası tüm cihazlarda iyi görünecek bir web sayfası yazmak istiyorsanız, sizin için en iyi uygulama, kaliteyi düşürmektir.

/ * bozulma kalıbı sadece ekran genişliğini kontrol ediyoruz, bu değişecek, dikeyden yataya dönüyor * /

/*css for desktops here*/

@media (max-device-width: 1024px) {
  /*IPad portrait AND netbooks, AND anything with smaller screen*/
  /*make the design flexible if possible */
  /*Structure your code thinking about all devices that go below*/
}
@media (max-device-width: 640px) {
 /*Iphone portrait and smaller*/
}
@media (max-device-width: 540px) {
 /*Smaller and smaller...*/
}
@media (max-device-width: 320px) {
 /*IPhone portrait and smaller. You can probably stop on 320px*/
}

Web sitenizin ziyaretçilerinin% 30'undan fazlası mobil cihazlardan geliyorsa, mobil cihazlara öncelik veren bir yaklaşım sağlayarak bu planı ters çevirin. min-device-widthBu durumda kullanın . Bu, mobil tarayıcılar için web sayfası oluşturmayı hızlandıracaktır.


10
Önce aşamalı geliştirmeye ve mobil cihaza gidecektim. Bu, mobil cihazla başlıyor ve minimum cihaz genişliği kullanılarak oluşturuluyor.
primavera133

2
Ayrıca, yalnızca iPhone 5 ile eşleşen yükseklik / genişlik / piksel oranı çözümünün, aynı özelliklere sahip görünen bir sonraki telefonla da eşleşeceğini unutmayın. Cevabınızın genel teması doğrudur: belirli cihazlar açısından düşünmek, ilerlemenin yanlış yoludur.
Pointy

@Dan - cevabınız soruyu doğrudan ele almasa da, ona duyarlı tasarım için en iyi uygulamaların daha geniş bir perspektifinden bakar. Bence burada yazdığınız şeyler çok derin ve pratik. Beş yıldız.
Dimitri Vorontzov

@Dan - önerinizi uygulamaya çalışıyorum, bir şeyler çalışmıyor. Lütfen sizden bir göz
atmanızı

@primavera, lütfen nedenini söyle. Mobil cihazlara öncelik veren yaklaşımın avantajı nedir?
S ..

7

benim için işi yapan sorgu şuydu:

only screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)

7

Dikey ve yatay modda iPhone 5

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) {

/* styles*/
}

Yatay durumda iPhone 5

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : landscape) { 
/* styles*/

}

Dikey iPhone 5

@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : portrait) { 
 /* styles*/

}

Neden max-device-width : 568pxportreye ihtiyacınız var?
adi518

1
@ adi518 max-width kullanmazsanız, o zaman css kuralları 320px'den daha büyük herhangi bir cihaz için uygulanır ki bu kelimenin tam anlamıyla çoğu cihaz - tabletler, masaüstü bilgisayarlar vb.
Sudheer

1
Neden device-width: 320px and device-height: 568pxbunun yerine kullanmıyorsunuz ?
adi518

5

Yanıtların hiçbiri benim için bir phonegapp uygulamasını hedeflerken işe yaramıyor.

Aşağıdaki bağlantı noktaları gibi, aşağıdaki çözüm işe yarar.

@media screen and (device-height: 568px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
    // css here
}

5

Birkaç seçeneği test ettiğim ve bunu yol boyunca kaçırdığım için çok hızlı bir ekleme. Sayfanızın aşağıdakilere sahip olduğundan emin olun:

<meta name="viewport" content="initial-scale=1.0">


0

afaik hiçbir iPhone 1,5 piksel oranı kullanmaz

iPhone 3G / 3GS: (-webkit-cihaz-piksel-oranı: 1) iPhone 4G / 4GS / 5G: (-webkit-cihaz-piksel-oranı: 2)


0
/* iPad */
@media screen and (min-device-width: 768px) {
    /* ipad-portrait */
    @media screen and (max-width: 896px) { 
        .logo{
            display: none !important;
        }
    }
    /* ipad-landscape */
    @media screen and (min-width: 897px) { 

    }
}
/* iPhone */
@media screen and (max-device-width: 480px) {
    /* iphone-portrait */
    @media screen and (max-width: 400px) { 

    }
    /* iphone-landscape */
    @media screen and (min-width: 401px) { 

    }
}

-3

Tüm iPhone'ları yakalamak için "-webkit-min-device-piksel-oranını" 1,5'e düşürmeniz gerekir mi?

@media only screen and (max-device-width: 480px), only screen and (min-device-width: 640px) and (max-device-width: 1136px) and (-webkit-min-device-pixel-ratio: 1.5) {
/* iPhone only */
}

1
Hangi iPhone, 1.5 cihaz piksel oranını kullanıyor?
BoltClock

1
Cihazın adına (iPhone) değil, cihaz genişliğine bağlı olarak medya sorguları yapmanızı şiddetle tavsiye ederim. Yani iPhone 5'in genişliği daha fazlaysa, bunu kullanılabilir hale getirin.
Tom Roggero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.