Поддерживают ли браузеры iPhone/Android CSS @media handheld?

Я хочу изменить CSS своей веб-страницы для веб-браузеров, работающих на мобильных телефонах, таких как iPhone и Android. Я пробовал что-то подобное в файле CSS:

@media handheld {
  body {
    color: red;
    }
  }

Но, похоже, это не имеет никакого эффекта, по крайней мере, на iPhone. Как я могу написать свой CSS, чтобы он работал по-другому на iPhone и т. Д., В идеале без использования javascript?


person Colen    schedule 08.10.2010    source источник
comment
Большинство смартфонов сообщают CSS, что они экранные... что вполне логично, учитывая их относительно большой размер и высокое разрешение. Некоторые части стандартов HTML/CSS не очень полезны, и портативный CSS — одна из них. Вместо классов устройств CSS используйте CSS Media Queries для проверки фактических размеров (но даже это несколько сложно из-за логического окна просмотра).   -  person Chuck Kollars    schedule 08.04.2013
comment
По моему скромному мнению, карманные компьютеры — это совершенно правильная ось для CSS — иногда вас действительно не волнует, какой точный размер экрана пользователя и DPI — что вам действительно важно, так это то, как они взаимодействуют. делать. КПК подразумевает, что устройство, включая экран, держится в руке, что дает вам некоторые довольно точные предположения, например, что размер экрана, скорее всего, не больше 9 и что он предназначен для использования на расстоянии вытянутой руки или около того. . Эти вещи важны при разработке дизайна для аудитории. Мы должны остановить подсчет пикселей и перейти к более общему плато.   -  person amn    schedule 17.04.2016
comment
Когда CSS впервые вышел с карманными компьютерами и на сцене появились первые устройства с маленькими экранами (2005-2007), первые примитивные браузеры ДЕЙСТВИТЕЛЬНО поддерживали портативные устройства. Это было ВЕЛИКОЛЕПНО! Я создал свой первый веб-сайт на маленьком экране примерно в 2005 году, и он отлично отображался. То, что у нас было давным-давно, намного превосходило сегодняшний HTML5. Это дрянная стандартная сборка ленивых разработчиков, которые отказываются следовать стандартам. Теперь мы прокладываем путь через пиксели устройства и медиа-запросы, которые усложнят то, что раньше было очень простым стандартом CSS.   -  person Stokely    schedule 15.01.2021


Ответы (5)


Вы можете использовать запросы @media:

<link rel="stylesheet" href="path/to/iphone.css" media="only screen and (max-device-width:480px)"/>

Эта конкретная версия предназначена для iPhone (и любого другого устройства с экраном max-device-width из 480px.

Apple, для iPhone, хотя это по памяти, поэтому я не могу быть полностью уверен в его точности, решила игнорировать использование таблиц стилей handheld или mobile, поскольку оно и другие устройства iOS были способны более или менее отображать css. наравне с десктопными браузерами, через Safari. Что касается других устройств, я точно не знаю, насколько они верны, хотя статья A List Apart (ссылка на которую приведена выше) дает краткий обзор некоторых из них.


Отредактировано в ответ на комментарий от @Colen:

Хм, похоже, многие новые мобильные устройства имеют более высокое разрешение (например, droid X — 854x480). Есть ли способ их обнаружить? Я не думаю, что они обрабатываются с этим запросом.

Я не могу сказать наверняка, так как у меня нет доступа к этим устройствам, кроме другого Статья List Apart: Адаптивный веб-дизайн отмечает, что:

К счастью, W3C создал медиа-запросы как часть спецификации CSS3, улучшив обещанные типы медиа. Медиа-запрос позволяет нам ориентироваться не только на определенные классы устройств, но и фактически проверять физические характеристики устройства, отображающего нашу работу. Например, после недавнего появления мобильного WebKit медиа-запросы стали популярным методом на стороне клиента для доставки настроенной таблицы стилей на iPhone, телефоны Android и им подобные.

Поэтому я предполагаю, что они, Android-устройства, должны быть доступны для таргетинга с помощью @media-queries, но, как уже отмечалось, я не могу сказать с уверенностью.

Для таргетинга на разрешение устройства есть пример:

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 480px) and (resolution: 163dpi)" href="shetland.css" />

Дополнительная литература: рекомендация-кандидат W3 для медиа-запросов.

person David says reinstate Monica    schedule 08.10.2010
comment
Это должно быть max-device-width (у вас там есть место), но в остальном это было здорово. Спасибо! - person Colen; 08.10.2010
comment
Спасибо @Colen, опечатка исправлена. знак равно - person David says reinstate Monica; 08.10.2010
comment
Хм, похоже, многие новые мобильные устройства имеют более высокое разрешение (например, droid X — 854x480). Есть ли способ их обнаружить? Я не думаю, что они обрабатываются с этим запросом. - person Colen; 08.10.2010
comment
Еще одно полезное чтение: rkblog.rk.edu. .pl/w/p/оптимизация-веб-сайтов-iphone-и-android - person Andrea Lazzarotto; 16.12.2011
comment
Запросы для Android см. здесь: developer.android.com/guide/webapps/targeting .html Android выполняет множество масштабирования и настроек, некоторые из которых могут помочь вам добиться идеальной точности на устройствах Android. - person Brandon; 23.01.2013
comment
Как бы то ни было, Google в настоящее время настоятельно не рекомендует использовать запрос max-device-width и вместо этого рекомендует использовать max-width и min-width: developers.google.com/web/fundamentals/layouts/rwd-fundamentals/ - person Matt; 01.12.2014
comment
Эта неопределенность делает всю таблицу стилей беспорядочной ... Почему они думают, что их браузер не должен иметь опцию handheld, если верхнее устройство портативное? - person vintproykt; 28.02.2019
comment
Невозможно знать, для каких пикселей создавать дизайн, так как каждый телефон теперь вмещает несколько пикселей CSS в 1 пиксель устройства. 1 пиксель CSS не равен 1 пикселю телефонного устройства, поэтому стандарта нет. Вот почему вы НИКОГДА не должны создавать веб-сайты в пикселях. Разработайте размер шрифта и позвольте устройству рассчитать ширину, необходимую для отображения вашего веб-сайта в собственном переводе пикселей и размерах. - person Stokely; 15.01.2021

На этом сайте есть несколько других полезных мультимедийных запросов. в таргетинге на iPhone/телефоны Android:

    // target mobile devices
@media only screen and (max-device-width: 480px) {
    body { max-width: 100%; }
}

// recent Webkit-specific media query to target the iPhone 4's high-resolution Retina display
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
    // CSS goes here
}

// should technically achieve a similar result to the above query,
// targeting based on screen resolution (the iPhone 4 has 326 ppi/dpi)
@media only screen and (min-resolution: 300dpi) {
    // CSS goes here
}

Мне удалось успешно использовать медиа-запрос max-device-width для успешного таргетинга на телефоны Android, хотя мне пришлось настроить ширину до 800 пикселей, а не до 480, как указано в списке. Для iPhone 4 параметр -webkit-min-device-pixel-ratio работал для таргетинга на iPhone4 (max-device-width: 480px не работал, я полагаю, что он будет нацелен на iPhone3, но у меня не было подходящего устройства для тестирования).

Я вижу, что это становится довольно запутанным, но если вам нужно поддерживать множество устройств и иметь собственный CSS для каждого из них, пока они поддерживают медиа-запросы, кажется, что можно делать то, что вам нужно для настройки каждой платформы. . И да, я бы сначала кодировал в соответствии со стандартами, чтобы можно было повторно использовать как можно больше CSS, но часто мы говорим о представлении альтернативных макетов в наши дни, размер которых соответствует используемым устройствам.

person LocalPCGuy    schedule 05.01.2011

@media handheld относится только к тем древним крошечным сотовым телефонам с прото-html прошлых лет, которые даже не могли отображать веб-страницы. ePUB, MOBI, Tablet, сообщество поставщиков — все решительно заявили: «Черт возьми, мы не @media handheld устройства!» потому что они справедливо опасались, что это навсегда приведет их на ничейную землю, подчиненную «настоящим» веб-страницам.

С сегодняшними небольшими устройствами с дисплеями очень высокого разрешения у нас все еще нет хорошего способа сказать HTML, как отображать вещи «правильно» на больших дисплеях с относительно низким разрешением по сравнению с маленькими дисплеями с очень высоким разрешением. И как сертифицированный старый пердун, мои глаза хотели бы напомнить вам, что нет, ответ заключается не только в том, чтобы сделать все, включая шрифты, в 2 раза меньше.

person Jim Adcock    schedule 01.11.2012
comment
Стоит ли вместо этого смотреть медиазапросы на значения DPI/DPCM, размеры экрана в см/дюймах и соотношения сторон? - person Gert Sønderby; 19.04.2013
comment
Это не был перспективный дизайн. Такая опция в CSS нам все же нужна, т.к. не все КПК имеют разрешение меньше ANOTHER_OPINIONATED_CONSTANT_MAX_RESOLUTION_VALUE_FROM_ANOTHER_ARTICLE... прошу прощения за капс) - person vintproykt; 28.02.2019

Нет, ни iPhone, ни Android-браузеры не поддерживают CSS @media handheld.

person Jonas Äppelgran    schedule 02.02.2017

Посмотрите на использование медиа-запроса «hover».

Поместите это в свой файл SCSS:

// At this point the CSS would target screens above 990px - but only
// if they support hover (i.e. laptops, PC's etc).
$point-at-which-use-large-screens: (min-width 990px) (hover hover);

.some-class-you-want-to-target {

  // Some CSS to only apply to larger screens with mouse available.
  @include breakpoint($point-at-which-use-large-screens) {
    color: red;
  }
}

После запуска grunt и т. д. в SCSS это приведет к следующему виду CSS:

@media (min-width: 991px) and (hover: hover) {
  color:red;
}
person bailey86    schedule 03.10.2017
comment
Извините, но вы даже не попытались ответить на вопрос. И миксин точки останова не имеет смысла, если использовать его таким образом, посмотрите, как работает include-media. И запрос наведения не поддерживается в старых браузерах. - person Fabian von Ellerts; 05.12.2019