Браузърите на 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 queries:

<link rel="stylesheet" href="/bgpath/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). Има ли начин да ги открием? Не мисля, че те се обработват с тази заявка.

Не мога да кажа със сигурност, тъй като нямам достъп до тези устройства, но друг Статия в разделен списък: Адаптивен уеб дизайн отбелязва, че:

За щастие, 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="/bgshetland.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/optimizing-websites-iphone-and-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, въпреки че трябваше да коригирам ширината до 800px, а не до изброените 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 etc на 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