@Media min-width e max-width


225

Ho questa @mediaconfigurazione:

HTML :

<head>
  <meta name="viewport" content="width=device-width, user-scalable=no" />
</head>

CSS :

@media screen and (min-width: 769px) {
    /* STYLES HERE */
}

@media screen and (min-device-width: 481px) and (max-device-width: 768px) { 
    /* STYLES HERE */
}

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

Con questa configurazione funziona su iPhone ma non funziona nel browser.

È perché ho già devicenel meta e forse max-width:480pxinvece ho ?


1
Qual è il problema - Gli stili predefiniti saranno applicabili a schermi più larghi di 769 px.
Gurpreet Singh,

è sufficiente rimuovere i @media screen and (min-width:769px){normali stili del browser
Zoltan Toth,

Cosa intendi con Zoltan? E penso che potrei risolverlo. Innanzitutto, il problema è stato quando ho ridimensionato il mio browser con max-device-con ha funzionato sul telefono ma non nel broswer, senza "device" funziona in entrambi.
rallybilen,

Quindi, in pratica, senza il "dispositivo" funziona sia sul dispositivo mobile che sul browser, ma quando aggiungo il dispositivo non riesco a vederlo nel browser \
rallybilen,

1
Dovrebbe essere 980pxnon 960perché estremità dimensione del browser a 980px.

Risposte:


339

Ho trovato il metodo migliore è scrivere il tuo CSS predefinito per i browser più vecchi, poiché i browser più vecchi, inclusi 5,5, 6, 7 e 8. Non riesco a leggere @media. Quando uso @media lo uso in questo modo:

<style type="text/css">
    /* default styles here for older browsers. 
       I tend to go for a 600px - 960px width max but using percentages
    */
    @media only screen and (min-width: 960px) {
        /* styles for browsers larger than 960px; */
    }
    @media only screen and (min-width: 1440px) {
        /* styles for browsers larger than 1440px; */
    }
    @media only screen and (min-width: 2000px) {
        /* for sumo sized (mac) screens */
    }
    @media only screen and (max-device-width: 480px) {
       /* styles for mobile browsers smaller than 480px; (iPhone) */
    }
    @media only screen and (device-width: 768px) {
       /* default iPad screens */
    }
    /* different techniques for iPad screening */
    @media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait) {
      /* For portrait layouts only */
    }

    @media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape) {
      /* For landscape layouts only */
    }
</style>

Ma puoi fare quello che ti piace con il tuo @media, questo è solo un esempio di ciò che ho trovato meglio per me quando ho creato stili per tutti i browser.

Specifiche CSS per iPad.

Anche! Se stai cercando la stampabilità, puoi usarla@media print{}


16
Perché hai messo schermi 'mac'? Non sono solo i "fantastici" Mac che possono avere grandi schermi ad alta risoluzione!
Luca

38

Il problema di fondo sta usando max-device-widthvs semplicemente vecchio max-width.

L'uso della parola chiave "dispositivo" ha come obiettivo la dimensione fisica dello schermo, non la larghezza della finestra del browser.

Per esempio:

@media only screen and (max-device-width: 480px) {
    /* STYLES HERE for DEVICES with physical max-screen width of 480px */
}

Contro

@media only screen and (max-width: 480px) {
    /* STYLES HERE for BROWSER WINDOWS with a max-width of 480px. 
       This will work on desktops when the window is narrowed.  */
}

11

Se il sito Web su dispositivi di piccole dimensioni si comporta come lo schermo del desktop, devi prima inserire questo meta tag nell'intestazione

<meta name="viewport" content="width=device-width, initial-scale=1">

Per le query multimediali è possibile impostare come

questo coprirà tutte le larghezze del tuo cellulare / cellulare

    @media only screen and (min-width: 200px) and (max-width: 767px)  {
    //Put your CSS here for 200px to 767px width devices (cover all mobile portrait width //

    }

Per iPad e iPad pro devi usare

    @media only screen and (min-width: 768px) and (max-width: 1024px)  {
    //Put your CSS here for 768px to 1024px width devices(covers all iPad portrait width //

    }

Se si desidera aggiungere CSS per la modalità orizzontale, è possibile aggiungere questo

e (orientamento: paesaggio)

  @media only screen and (min-width: 200px) and (max-width: 767px) and (orientation : landscape) {
        //Put your CSS here for 200px to 767px width devices (cover all mobile landscape width //

        }

8

Il valore corretto per l' contentattributo dovrebbe includere initial-scaleinvece:

<meta name="viewport" content="width=device-width, initial-scale=1">
                                                   ^^^^^^^^^^^^^^^


2
Se potessi spiegare perché e aggiungere riferimenti, ciò renderebbe più utile questa risposta.
Michael Benjamin,

2
@Michael_B L'iniziale era 'user-scalable = no'. Questo dice tutto quello che penso.
Apolo Radomer,

0

per alcuni iPhone devi mettere il tuo viewport in questo modo

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no, user-scalable=0" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.