Мультимедійний запит iPhone 5 CSS


132

У iPhone 5 довший екран, і він не сприймає мобільний вигляд мого веб-сайту. Які нові запити на адаптивний дизайн для iPhone 5 і чи можна поєднувати з існуючими запитами iPhone?

Мій поточний медіа-запит такий:

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

3
Чи можемо ми побачити ваші наявні медіа-запити?
BoltClock

Відповіді:


283

Ще одна корисна медіа-функція device-aspect-ratio.

Зауважте, що iPhone 5 не має співвідношення сторін 16: 9 . Це насправді 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) {}

Довідково:
Медіа-запити @ Калькулятор співвідношення аспектів
моделі iPhone W3C iPhone


2
Мені подобається такий підхід, але я не зміг змусити його працювати у веб-перегляді програми PhoneGap, поки не додасть -webkit-min-device-pixel ratio, як пояснив Stephen Sprawl zsprawl.com/iOS/2012/09/css-media-queries-for -і-iphone-5 . Екран @media та (співвідношення сторін-пристроїв: 40/71) та (-webkit-min-device-pixel ratio: 2) {// iphone5 for the fonegaps}
TaeKwonJoe

Мені довелося додати and (-webkit-min-device-pixel-ratio: 2)медіа-запит на iPhone 5, щоб він працював у веб-перегляді PhoneGap, як заявив @TaeKwonJoe
Mahendra Liya

1
Дякуємо, що оновили це, щоб включити iPhone 6!
Маверик

Це працює досить добре, коли мені потрібно розрізнити iphone 4 та iphone 5 у css.
euccas

1
Для iphone 6 (співвідношення сторін-пристроїв: 667/375) не працював на реальному фізичному iphone 6. Хоча він працював і на тренажері iOS. Я змінив його на 375/667 і він працював на фізичному пристрої.
роби те, що зараз

64

У цьому блозі я вдячний цьому :

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

Майте на увазі, що він реагує на iPhone 5, а не на конкретну версію iOS, встановлену на цьому пристрої.

Щоб об'єднатись із вашою наявною версією, ви повинні мати змогу розмежувати їх комами:

@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 */
}

NB: Я не перевіряв вищевказаний код, але я перевіряв @mediaзапити, обмежені комами , і вони працюють чудово.

Зауважте, що вищесказане може вражати деякі інші пристрої, які мають подібні співвідношення, наприклад, Galaxy Nexus.Ось додатковий метод, який націлюватиметься лише на пристрої, які мають один розмір 640 пікселів (560 пікселів через деякі дивні аномалії піксельних дисплеїв) та один між 960 пікселями (iPhone <5) та 1136 пікселями (iPhone 5).

@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
Чи можете ви підказати, як я можу поєднати цей запит зі своїм старим, щоб охопити iphone 4 та 5?
Маверик

6
Обережно, оскільки це вплине і на інші телефони - не тільки на iphone. Приклад - Samsung Galaxy Nexus.
Майк Свіні

@MikeSweeney Добрий дзвінок. Я оновив свою посаду новим методом, який не повинен включати інші пристрої.
Ерік

@Eric Це майже все, що я закінчився, коли влаштувався після безлічі тестових телефонів - довелося вносити висоту в суміш! Здається, це чудово працює в 7-8 різних телефонах, на які я тестую.
Майк Свіні

ця лінія правильна: iPhone 5 and not to iOS 6? Чи повинно бути: "iPhone5, а не iPhone 6"?
Sgnl

38

Усі перелічені вище відповіді, які використовують max-device-widthабо max-device-heightдля медіа-запитів, страждають від дуже сильних помилок: вони також націлені на безліч інших популярних мобільних пристроїв (можливо, небажаних і ніколи не перевірених, або які потраплять на ринок у майбутньому).

Цей запит буде працювати для будь-якого пристрою, який має менший екран , і, ймовірно, ваш дизайн буде порушений.

У поєднанні з аналогічними медіа-запитами, що стосуються конкретних пристроїв (для HTC, Samsung, IPod, Nexus ...), ця практика спричинить запуск бомби. Для дебютування ця ідея може зробити ваш CSS неконтрольованим спагетті. Ніколи не можна тестувати всі можливі пристрої.

Зауважте, що єдиний медіа-запит, який завжди націлений на IPhone5 та нічого іншого , це:

/* 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*/
}

Зауважте, що тут перевіряється точна ширина та висота, а не максимальна ширина.


Тепер, яке рішення? Якщо ви хочете написати веб-сторінку, яка буде добре виглядати на всіх можливих пристроях, найкращою практикою є використання деградації

/ * шаблон деградації, ми перевіряємо лише ширину екрана, це зміниться, перетворюючись з портретного на пейзаж * /

/*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*/
}

Якщо більше 30% відвідувачів вашого веб-сайту приходять з мобільного телефону, переверніть цю схему догори дном, забезпечивши підхід для мобільних пристроїв. Використовуйте min-device-widthв цьому випадку. Це пришвидшить надання веб-сторінок для мобільних браузерів.


10
Я б спершу пішов на прогресивне вдосконалення та мобільний. Це починається з мобільного та нарощування з використанням мінімальної ширини пристрою.
primavera133

2
Також зауважте, що рішення щодо співвідношення висоти / ширини / пікселів, яке відповідає лише iPhone 5, також відповідатиме наступному телефону, який, схоже, має ті самі характеристики. Загальна тема вашої відповіді правильна: мислення з точки зору конкретних пристроїв - це неправильний шлях.
Pointy

@Dan - незважаючи на те, що ваша відповідь не стосується безпосередньо питання, вона розглядає це в більш широкій перспективі найкращих практик адаптивного дизайну. Речі, які ви тут написали, на мою думку, дуже глибокі та практичні. П’ять зірок.
Димитрій Воронцов

@Dan - намагаючись реалізувати вашу пропозицію, щось не працює. Попросіть вас поглянути: stackoverflow.com/questions/16486078/…
Димитрій Воронцов

@primavera, скажіть, будь ласка, чому. Яка перевага мобільного першого підходу?
С ..

7

для мене запит, який зробив цю роботу:

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

7

iPhone 5 в портреті та пейзажі

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

/* styles*/
}

iPhone 5 в пейзажі

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

}

iPhone 5 в портреті

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

}

Для чого вам потрібен max-device-width : 568pxпортрет?
adi518

1
@ Adi518 , якщо ви не використовуєте макс ширину , то правила CSS застосовуються для будь - яких великих пристроїв , ніж 320px , яка , як в буквальному сенсі більшості пристроїв - таблетки настільних комп'ютерів і т.д.
Sudheer

1
Чому б не використовувати device-width: 320px and device-height: 568pxзамість цього?
adi518

5

Жодна відповідь не працює для мене, орієнтованого на додаток phonegapp.

У наступних посиланнях працює рішення нижче.

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

5

Просто дуже швидке доповнення, оскільки я тестував кілька варіантів і пропустив це по дорозі. Переконайтеся, що на вашій сторінці є:

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

3

Ви можете отримати свою відповідь досить легко для iPhone5 разом з іншими смартфонами в базі даних медіа-функцій для мобільних пристроїв:

http://pieroxy.net/blog/2012/10/18/media_features_of_the_most_common_devices.html

Ви навіть можете отримати власні значення пристрою на тестовій сторінці цього ж веб-сайту.

(Відмова: Це мій веб-сайт)


0

afaik no iPhone не використовує співвідношення пікселів 1,5

iPhone 3G / 3GS: (-webkit-device-pixel ratio: 1) iPhone 4G / 4GS / 5G: (-webkit-device-pixel ratio: 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

Ви можете, можливо, зменшити "-webkit-min-device-pixel ratio" до 1,5, щоб спіймати всі iPhone-телефони?

@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
Який iPhone використовує співвідношення пікселів пристрою 1,5?
BoltClock

1
Настійно рекомендую робити медіа-запити залежно від ширини пристрою, а не назви пристрою (iPhone). Отже, якщо iPhone 5 має більшу ширину, просто зробіть його корисним.
Том Роджеро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.