8

Lo so che è con CSS puro possibile adattare il foglio di stile in base alle dimensioni dello schermo, in questo modo:CSS reattivo progettazione - rilevare visualizzazione verticale

@media (max-width: 959px) { 
    /* styles for smallest viewport widths */ 
} 

@media (min-width: 600px) and (max-width: 959px) { 
    /* styles for mid-tier viewport widths */ 
} 

@media (min-width: 960px) { 
    /* original CSS styles */ 
} 

(source)

è con puro css possibile controllare un display orizzontale o verticale?

risposta

10

Sì, utilizzando la seguente sintassi:

@media all and (orientation: landscape) {} 

Vedere la w3 specs per ulteriori informazioni.

+0

Grazie! Piccola domanda di follow-up: cosa succederà quando qualcuno inclina lo schermo del telefono in modo che l'orientamento cambi? Il CSS applicato cambierà? – Keelan

+0

Non ho controllato me stesso, ma sono abbastanza sicuro che questo è il caso in quanto vengono ricontrollate altre query multimediali (come la larghezza dello schermo). – mogelbrod

+0

Ok, grazie per tutto questo! – Keelan

2

Da w3:

@media all and (orientation:portrait) { … } 
@media all and (orientation:landscape) { … } 
3

È possibile utilizzare orientation:

@media all and (max-width: 959px) and (orientation : portrait) { 
    /* Styles */ 
} 
0

tutte le risposte sono corrette. Android passerà da verticale a orizzontale quando viene visualizzata la tastiera.

Anche le tastiere diverse devono essere testate in quanto possono occupare più spazio verticale. La tastiera Swift occupa più spazio verticale, quindi non puoi utilizzare soluzioni come @media screen e (min-aspect-ratio: 13/9) {/ * stili di paesaggio qui * /} in quanto ciò non funziona su molti telefoni.

L'unica soluzione è usare javascript.

Sui nuovi dispositivi Android è possibile testare e utilizzare il nuovo window.screen.orientation api.

Su iOS è possibile utilizzare window.orientation che funziona correttamente. es. Math.abs (window.orientation) === 90 is landscape

E come fallback puoi usare window.screen.width> window.screen.height che coprirà dispositivi Android molto vecchi che non supportano la nuova finestra .screen.orientation api

Quindi tutto quello che devi fare è aggiungere/rimuovere una classe sugli eventi di ridimensionamento/orientamento di scambio.

+0

Può per favore fornire alcuni esempi/ricerche a sostegno della sua risposta? – kingJulian

+0

Ecco i problemi relativi all'attivazione dei punti di interruzione quando viene visualizzata la tastiera. https://stackoverflow.com/questions/8883163/css-media-query-soft-keyboard-breaks-css-orientation-rules-alternative-solut/8883535 – Matt