2013-04-19 14 views
17

Domyślnie chcę nadać elementowi ciała zielone obramowanie. Na urządzeniu obsługującym wyświetlacz Retina chcę najpierw sprawdzić rozmiar. Na iPadzie chcę nadać swojemu ciału czerwoną granicę, a na iPhonie chcę nadać mu niebieską granicę. Ale zagnieżdżanie zapytań o media, jak tak nie działa:Zagnieżdżanie zapytań o media

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

Nie jestem pewien, co to jest tutaj, ale jeśli chcesz sprawdzić, czy Twój CSS jest walidacją, możesz to sprawdzić za pomocą W3C CSS Validation Tool. Wypróbowałem go za pomocą zagnieżdżonych zapytań o media i to się nie podobało ... Możesz uzyskać dostęp do narzędzia tutaj: https://jigsaw.w3.org/css-validator/ –

Odpowiedz

19

Nie trzeba użyć operatora and i napisać, że jak dwóch zapytaniami. Możesz to jednak zrobić w SCSS, który skompiluje do CSS, ale połączy je, rozkładając je i używając operatora and.

Jest to powszechny problem, a kiedy po raz pierwszy napisałem LESS lub SCSS, nigdy nie chciałem powracać do pisania tej ręki.

Długo podał 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; 
    } 
} 

zagnieżdżanie zapytań może działać, ale wsparcie różni się w poszczególnych przeglądarkach.

+1

czy możesz podać przykład robiąc to długo ręka w rękę. Nie mogę używać żadnych prekompilatorów CSS w firmie, w której pracuję, przynajmniej nie w tym bieżącym projekcie. – TK123

+0

Zobacz zaktualizowaną odpowiedź. – cirrus

+1

Można je zagnieździć, ale spłaszczenie ich jest jedynym sposobem na zapewnienie zgodności z różnymi przeglądarkami. – nickhar

Powiązane problemy