2012-02-09 9 views
6

Ho già letto quasi tutte le domande StackOverflow relative a questo problema, ma nulla funziona come mi aspettavo.Una query multimediale affidabile per rilevare solo iPad (o al massimo 1024x768 dispositivi mobili)

E 'stato chiesto a me di rilevare solo il dispositivo iPad (o nella migliore delle ipotesi ~ dispositivo 1024x768 cellulare) con una media query. Ho cercato di usare

@media screen 
     and (min-device-width: 768px) 
     and (max-device-width: 1024px) { 
    ... 
} 

ma questo media query corrisponde anche a Chrome (e Safari, immagino) su computer portatili e desktop di Win32/MacOS quando la risoluzione è impostata a 1024x768 (ma non Firefox). Ho provato questa query multimediale che definisce orientation:portrait e orientation:landscape ma senza fortuna. È anche riconosciuto sul browser webkit desktop.

È possibile provare this fiddle per verificare il problema.

Dopo la ricerca sono venuto a this interesting article in cui è riportata

Penso Safari (e gli altri browser WebKit ho testato a) non seguono le specifiche, mentre Firefox e Opera sono.

La funzione di supporto "larghezza" descrive la larghezza dell'area di visualizzazione di destinazione del dispositivo di uscita. Per i media continui, questa è la larghezza del viewport (come descritto da CSS2, sezione 9.1.1 [CSS21]) inclusa la dimensione di una barra di scorrimento renderizzata (se presente).

quindi provato questo (fiddle) con 1009px come max-device-width (1024-15)

@media screen and (min-device-width: 768px) 
       and (max-device-width: 1009px) { 
    ... 
} 

e non funziona
ma se uso questo media query anche definire l'orientamento (fiddle)

@media screen and (device-width:768px) and (orientation:portrait), 
     screen and (device-width:1009px) and (orientation:landscape) { 
    ... 
} 

sorprendentemente (per me) è sembra funzionare correttamente e sembra corrispondere solo a Safari/iPad.

Q: questa query multimediale è sufficientemente affidabile per le mie esigenze? Funziona sempre in iPad/iPad2? O devo aspettarmi alcuni casi limite e una corrispondenza inaspettata con qualche altra risoluzione del dispositivo? In questo caso puoi suggerire una query multimediale più efficiente e affidabile?

you :) Grazie (e scusa per la prolissità)

+0

Qual è lo scopo esatto? Per esempio. il prossimo mese ci sarà un iPad 3 con una diversa risoluzione dello schermo. E sì - mi aspetterei che anche le altre tavolette corrispondessero. – Lennart

+1

Lo scopo esatto è principalmente la corrispondenza ipad/ipad2. So che questo non ha molto senso in termini di RWD (qual è la differenza tra un cellulare e un desktop 1024x768? Dovrebbero essere considerati la stessa cosa IMHO) ma da quando mi ha chiesto di fare una cosa del genere in puro css, mi piacerebbe raggiungere questo - se è possibile, naturalmente. – fcalderan

+0

Stai cercando di rendere un sito adatto per iPad? In questo caso, sarebbe meglio rendere il sito "touch" amichevole per tutti i dispositivi e in tal caso è possibile utilizzare librerie come modernizr per sniffare se il dispositivo supporta gli eventi touch (quindi è possibile cambiare il file css da renderizzare in javascript) – Skuld

risposta

4

Prova a controllare l'User Agent pure. Questo dovrà essere fatto in qualcosa di diverso dal CSS, ma risolverà il tuo problema. In questo modo puoi vedere se è un iPad o meno.

Cose come questa sono destinate a rompersi, meglio prevenire che curare e usare qualcosa che funzioni.

1

La correzione consiste non solo per abbinare la larghezza del dispositivo ma anche l'altezza .

Funzionerà solo se abbinato perfettamente.

Dai uno sguardo alla risposta this per una discussione più approfondita.

Problemi correlati