@ Media minimalna szerokość i maksymalna szerokość

225

Mam tę @mediakonfigurację:

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 */
}

Przy tej konfiguracji działa na iPhonie, ale nie działa w przeglądarce.

Czy to dlatego, że mam już devicemetę, a może max-width:480pxzamiast tego?

rallybilen
źródło
1
O co chodzi - domyślne style będą miały zastosowanie do ekranów szerszych niż 769 pikseli.
Gurpreet Singh,
po prostu usuń @media screen and (min-width:769px){wokół swoich normalnych stylów przeglądarki
Zoltan Toth
Co masz na myśli Zoltan? I myślę, że mógłbym to rozwiązać. Po pierwsze, problem polegał na tym, że mój rozmiar przeglądarki zmienił się na maksymalne urządzenie - działało to na telefonie, ale nie w przeglądarce, bez „urządzenia” działa w obu przypadkach.
rallybilen
Więc po prostu bez „urządzenia” działa zarówno na telefonie komórkowym / przeglądarce, ale kiedy dodam urządzenie, nie widzę go w przeglądarce.
rallybilen
1
Powinno być 980pxnie 960ze względu na końcach rozmiar przeglądarki 980px.

Odpowiedzi:

339

Znalazłem najlepszą metodę, aby napisać domyślny CSS dla starszych przeglądarek, ponieważ starsze przeglądarki, w tym np. 5.5, 6, 7 i 8. Nie mogą czytać @media. Kiedy używam @media, używam tego w następujący sposób:

<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>

Ale możesz robić, co chcesz, za pomocą @media. To tylko przykład tego, co znalazłem dla mnie najlepsze, gdy budowałem style dla wszystkich przeglądarek.

Specyfikacja iPada CSS.

Również! Jeśli szukasz możliwości drukowania, możesz użyć@media print{}

bashleigh
źródło
16
Dlaczego umieściłeś ekrany „mac”? Nie tylko „niesamowite” komputery Mac mogą mieć duże ekrany o wysokiej rozdzielczości!
Łukasz
38

Podstawowym problemem jest używanie max-device-widthvs zwykły stary max-width.

Użycie słowa kluczowego „urządzenie” wskazuje na fizyczny wymiar ekranu, a nie na szerokość okna przeglądarki.

Na przykład:

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

Przeciw

@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.  */
}
jpostdesign
źródło
11

Jeśli witryna na małych urządzeniach zachowuje się jak ekran komputera, musisz wcześniej umieścić ten metatag w nagłówku

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

W przypadku zapytań o media możesz ustawić to jako

obejmie to wszystkie szerokości twojego telefonu komórkowego

    @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 //

    }

Na iPada i iPada pro musisz użyć

    @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 //

    }

Jeśli chcesz dodać css do trybu poziomego, możesz to dodać

i (orientacja: krajobraz)

  @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 //

        }
Rohit Kaushik
źródło
8

Prawidłowa wartość contentatrybutu powinna initial-scalezamiast tego zawierać :

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

Ksenia Titova
źródło
2
Jeśli mógłbyś wyjaśnić dlaczego i dodać odniesienia, to uczyniłoby tę odpowiedź bardziej przydatną.
Michael Benjamin,
2
@Michael_B Inicjałem było „skalowalne przez użytkownika = nie”. To mówi wszystko, co myślę.
Apolo Radomer
0

w przypadku niektórych iPhone'ów musisz tak ustawić swoją rzutnię

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no, user-scalable=0" />
NuggaN85
źródło