2013-04-19 18 views
17

Per impostazione predefinita, desidero dare al bordo del mio elemento un bordo verde. Su un dispositivo che supporta la visualizzazione della retina, desidero prima controllare la dimensione. Su un ipad voglio dare al mio corpo un bordo rosso e su un iphone voglio dargli un bordo blu. Ma le media query di nidificazione in questo modo non funziona:Nesting Media Query

body { border: 1px solid green; } 

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { 
    @media (max-width: 768px) and (min-width: 320px) { 
     body { border: 1px solid red; } 
    } 
    @media (max-width: 320px) { 
     body { border: 1px solid blue; } 
    } 
} 
+0

Non sai quale sia la domanda, ma se vuoi sapere se il tuo CSS è la validazione puoi controllarlo con lo strumento di validazione CSS del W3C. L'ho provato con le query multimediali annidate e non mi piaceva ... Puoi accedere allo strumento qui: https://jigsaw.w3.org/css-validator/ –

risposta

19

No. È necessario utilizzare l'operatore and e scrivere che come due query. Tuttavia, è possibile farlo in SCSS, che verrà compilato in CSS, ma lo combinerà aprendoli e utilizzando l'operatore and.

Questo è un problema comune, e una volta che ho scritto per la prima volta LESS o SCSS, non ho mai voluto tornare a scrivere questa mano lunga.

lungo consegnato CSS:

@media (-webkit-min-device-pixel-ratio: 2) and (max-width: 768px) and (min-width: 320px), 
        (min-resolution: 192dpi) and (max-width: 768px) and (min-width: 320px) { 
    body { 
    border: 1px solid red; 
    } 
} 
@media (-webkit-min-device-pixel-ratio: 2) and (max-width: 320px), 
        (min-resolution: 192dpi) and (max-width: 320px) { 
    body { 
    border: 1px solid blue; 
    } 
} 

query Nesting può funzionare, ma il supporto varia tra i browser.

+1

puoi per favore fornire un esempio facendolo così a lungo modo di mano. Non posso utilizzare alcun precompilatore CSS presso l'azienda in cui lavoro, almeno non per questo progetto corrente. – TK123

+0

Vedere la risposta aggiornata. – cirrus

+1

Puoi nidificarli, ma il loro appiattimento è l'unico modo per garantire la validità del browser. – nickhar