@Media min-width & max-width

225

У меня есть эта @mediaнастройка:

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

При такой настройке он работает на iPhone, но не работает в браузере.

Это потому, что у меня уже есть deviceмета, а может, max-width:480pxвместо этого?

rallybilen
источник
1
В чём проблема? Стили по умолчанию будут применяться к экранам шириной более 769 пикселей.
Gurpreet Singh
просто удалите все @media screen and (min-width:769px){вокруг ваших обычных стилей браузера
Zoltan Toth
Что вы имеете в виду Золтан? И я думаю, что мог бы решить это. Во-первых, проблема заключалась в том, что я изменил размер своего браузера с помощью max-device - он работал на телефоне, но не в браузере, без «устройства» он работал в обоих случаях.
раллибилен
Так что в основном без «устройства» оно работает как в мобильном телефоне, так и в браузере, но когда я добавляю устройство, я не вижу его в браузере \
Rallybilen
1
Это должно быть 980pxне 960потому, что размер браузера заканчивается на 980px.

Ответы:

339

Я обнаружил, что лучший способ - написать свой CSS по умолчанию для старых браузеров, таких как старые, включая 5.5, 6, 7 и 8. Не могу читать @media. Когда я использую @media, я использую это так:

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

Но вы можете делать все что угодно с вашим @media. Это всего лишь пример того, что я нашел для меня лучше всего при создании стилей для всех браузеров.

CSS спецификации iPad.

Также! Если вы ищете для печати, вы можете использовать@media print{}

bashleigh
источник
16
Почему вы положили экраны Mac? Это не только «удивительные» Маки, которые могут иметь большие экраны высокого разрешения!
Лука
38

Основная проблема заключается в использовании max-device-widthпротив старого max-width.

Использование ключевого слова «device» нацелено на физическое измерение экрана, а не на ширину окна браузера.

Например:

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

Против

@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
источник
11

Если веб-сайт на небольших устройствах ведет себя как экран рабочего стола, то вы должны поместить этот метатег в заголовок перед

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

Для медиа-запросов вы можете установить это как

это будет охватывать все ширины вашего мобильного / мобильного телефона

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

    }

Для iPad и iPad Pro вы должны использовать

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

    }

Если вы хотите добавить CSS для ландшафтного режима, вы можете добавить это

и (ориентация: пейзаж)

  @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

Правильное значение для contentатрибута должно включать initial-scaleвместо:

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

Ксения Титова
источник
2
Если бы вы могли объяснить, почему и добавить ссылки, это сделало бы этот ответ более полезным.
Майкл Бенджамин
2
@Michael_B Первоначально было «пользователь-масштабируемый = нет». Это говорит обо всем, я думаю.
Аполо Радомер
0

для какого-то iPhone вы должны поставить свой видовой экран, как это

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, shrink-to-fit=no, user-scalable=0" />
NuggaN85
источник