- Описываем основную структуру в css
- Для начала посмотрим это в действии.
- Css media queries for ipad pro
- Css media query для таргетинга только на ipad и ipad? | блог о программировании
- Css3 media queries
- Html5.js
- Ipad 1 & 2 media queries
- Ipad 3 & 4 media queries
- Ipad media queries (all generations – including ipad mini)
- Ipad в альбомной ориентации
- Ipad в портретной и альбомной ориентации
- Ipad в портретной ориентации
- Iphone 2g, 3g, 4, 4s media queries
- Iphone 2g/3g/3gs resolution
- Iphone 4/4s resolution
- Iphone 5 resolution
- Media queries for ipad pro and laptops
- Ok, so you don’t want to leave here empty handed
- Os details
- Retina ipad в альбомной ориентации
- Retina ipad в портретной и альбомной ориентации
- Retina ipad в портретной ориентации
- Target ipad & iphone with separate css files
- Tl;dr
- Use natural breakpoints
- Другие примеры
- Инвертированные цвета
- Медиа запросы для iphone
- Наведение и указатель
- Обзор
- Ориентация экрана
- Подключаем css media queries
- Подключаем media queries javascript
- Предпочитаемая цветовая схема
- Размер вьюпорт
- Размер экрана меньше 480px
- Размер экрана меньше 650px (одноколоночный макет)
- Размер экрана меньше 980px (резиновый макет)
- Сокращение количества анимации
- Соотношение сторон
- Ссылки
- Финальное демо
- Шаг 1
- Эластичные встраиваемые видео
- Эластичные изображения
- Заключение
- Initial scale meta tag (iphone)
Описываем основную структуру в css
Я снова не буду вдаваться в подробности. Основной контейнер «pagewrap» имеет ширину 980px. «Header» имеет фиксированную высоту 160px. Контейнер «content» шириной 600px и прижат влево. «Sidebar» шириной 280px и прижат вправо.
Для начала посмотрим это в действии.
Пред началом посмотрите на
, что бы увидеть, как хорошо это выглядит. Изменяйте размер браузера, что бы увидеть как структура автоматически изменяется основываясь на ширине окна.
Css media queries for ipad pro
I know what you’re thinking. Why does this need a blog post? Can’t I simply use ‘min-width’ and ‘max-width’ media queries to isolate out the iPad Pro for custom styling? The answer is maybe.
For a lot of responsive websites, you can rely on the browser’s width to make a website respond intuitively based on the device’s browser dimensions. When you want to have custom expectations based on the device type, however, it becomes more nuanced.
The best example of this is the iPad Pro. The iPad Pro has browser dimensions (1366/1024) that are very similar to common desktop dimensions (1280/800), which can make the management of CSS breakpoints tricky as there will be overlapping breakpoint widths.
To be more specific, if I use the min-width media query (min-width: 1365px) to set custom mobile styling (ex: buttons, no hover states) for the iPad Pro, that styling would be applied to any desktop browser of the same width.
As you can see in the pictures above, both examples have the same browser width, but different UI expectations, which is the dilemma. When researching how to solve this, I went down a number of rabbit holes.
Since all iPads have a pixel ratio value of 2, my first attempt to isolate the iPad in CSS was to use the device-pixel-ratio resolution query. Unfortunately, Macbook Retina computers do as well so that solution didn’t pan out.
Next I used JavaScript to append a class on the root body tag (ex: <body class=”ipad”>) using simple user agent detection. While this did work in theory, in practice it made the CSS a mess. Since the custom class was at the top of the DOM hierarchy, the only way to utilize it was to duplicate all the CSS and nest it under the custom class to make the custom changes there. It worked, but it didn’t feel right and I knew it would be unmanageable in the long-term.
After I went down a number of other rabbit holes (ex: landscape/portrait orientation media queries), I arrived at a straightforward solution: min/max device widths. The height/width of an iPad Pro in both portrait and landscape modes will always be static (1366/1024, 1024/1366 respectively). That means you can use browser width CSS media queries in combination with min/max device width queries (to exclude desktop browsers). You end up with the following:
Know of a better way? Feel free to comment below or email me directly at: dan@thredup.com
Css media query для таргетинга только на ipad и ipad? | блог о программировании
Привет я работаю с несколькими планшетными устройствами, iPad, Galaxy Tab, Acer Iconia, LG 3D Pad и так далее.
- iPad-1024 x 768
- LG Pad-1280 x 768
- Galaxy Tab-1280 x 800
Я хочу, чтобы целевой iPad только с помощью CSS3 media query. Поскольку ширина устройства LG и iPad одинакова 768px-у меня возникли проблемы с разделением каждого устройства.
Я пробовал следовать, чтобы отделить, но, похоже, нет рабочий:
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation : portrait) /* applied to lg also */
@media only screen and (min-resolution: 132dpi) and (max-device-width: 1024px) and (orientation : portrait) /* applies to lg also */
@media only screen and (device-aspect-ratio: 1024/768) and (orientation : portrait) /* does not work on iPad or LG */
Я не знаю параметров-webkit-device-pixel-ratio и других-webkit* и их значений для таргетинга на iPad. Я не хочу использовать JavaScript для стилей, какие-либо идеи?
Css3 media queries
Теперь начинается самое интересное –
Html5.js
Обратите внимание, что в демо используется HTML5. Internet Explorer ниже 9-й версии не поддерживает новые элементы содержащиеся в HTML5, такие как
в HTML документ, который позволит IE понимать новые элементы.
Ipad 1 & 2 media queries
If you want to implement different graphics for different resolutions such as lower res. the below queries may help you.
Ipad 3 & 4 media queries
You may want to tarket only 3rd and 4th generation Retina iPads (or tablets with similar resolution) to add @2x graphics, or other features for the tablet’s Retina display, use the following css media queries.
Ipad media queries (all generations – including ipad mini)
These are the queries specially written for Apple devices, all 5 different iPads (iPads 1-5 and iPad mini) can be targeted with just one CSS media query. Below few lines must perfectly work for responsive design.
Ipad в альбомной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) { // CSS Styles }
Ipad в портретной и альбомной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) { // CSS Styles }
Ipad в портретной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) { // CSS Styles }
Iphone 2g, 3g, 4, 4s media queries
It is so good as these media queries are also the same for iPod Touch generations 1-4.
Iphone 2g/3g/3gs resolution
Screen Width = 320px (CSS Pixels) Screen Height = 480px (CSS Pixels) Screen Width = 320px (Actual Pixels) Screen Height = 480px (Actual Pixels) Device-pixel-ratio: 1
Iphone 4/4s resolution
Screen Width = 320px (CSS Pixels) Screen Height = 480px (CSS Pixels) Screen Width = 640px (Actual Pixels) Screen Height = 960px (Actual Pixels) Device-pixel-ratio: 2
Iphone 5 resolution
Screen Width = 320px (CSS Pixels) Screen Height = 568px (CSS Pixels) Screen Width = 640px (Actual Pixels) Screen Height = 1136px (Actual Pixels) Device-pixel-ratio: 2
Media queries for ipad pro and laptops
What is the correct way to handle media queries for iPad Pro and several laptops?
So normally you would do this (min-device-width: 1024px) and (max-device-width: 1366px)
for an iPad pro. However when using Chrome’s dev tools you’ll see that there are laptop screen sizes like 1280x800px and 1440x900px.
The problem I’m facing now is that those screen sizes overlap.
Is there a «standard» way of solving such problem?
Ok, so you don’t want to leave here empty handed
I understand, you can’t take no for an answer…. so here are some useful links which will give you some scope for checking broad level attributes you are searching for.
Please note that these all suffer the vaguries and inconsistencies mentioned above:
You should have already read these before asking this question.
Os details
Retina ipad в альбомной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio: 2) { // CSS Styles }
Retina ipad в портретной и альбомной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (-webkit-min-device-pixel-ratio: 2) { // CSS Styles }
Retina ipad в портретной ориентации
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio: 2) { // CSS Styles }
Target ipad & iphone with separate css files
If you want to apply styles to the iPad and iPhone using external stylesheets, put this code in your <head>:
Tl;dr
You can not focus media queries to any specific device type; because what defines these devices can be used by other devices, or can be changed in device updates, or simply be absent (null) values.
How can I solve this issue by only applying the query to just iPad (not pro)
Therefore this question can not be answered.
Use natural breakpoints
The ‘breakpoints’ then become the actual point at which your mobile design begins to ‘break’ i.e. cease to be usable or visually pleasing. Once you have a good working mobile site, without media queries, you can stop being concerned about specific sizes and simply add media queries that handle successively larger viewports.
If you’re not trying to pin design to exact screen size, this approach works by removing the need to target specific devices. The integrity of the design itself at each breakpoint ensures that it will hold up at any size. In other words, if a menu/content section/whatever stops being usable at a certain size, design a breakpoint for that size, not for a specific device size.
See Lyza Gardner’s post on behavioral breakpoints, and also Zeldman’s post about Ethan Marcotte and how responsive web design evolved from the initial idea.
Другие примеры
Если вы хотите увидеть больше примеров, посмотрите следующие темы для
, которые я сделал используя media queries:
Инвертированные цвета
Функция инвертированных цветов очень полезна, если вам нужно применить некоторые стили, когда системные цвета имеют такую же настройку.
Зачем включать инвертирование системных цветов? Обычно это очень полезно, если хочется улучшить читаемость.
Также имейте в виду, что еще одной хорошей практикой является увеличение шрифта и уменьшение жирности, когда цвета инвертированы. Это именно то, что вы можете сделать с помощью медиавыражений.
У данной функции есть только два значения:
Вот пример! Когда цвета инвертируются, размер текста увеличивается
.text {
font-size: 24px;
}
@media screen and (inverted-colors: inverted) {
.text {
font-size: 36px;
}
}
Пожалуйста, обратите внимание, что в данный момент эта функция поддерживается только в Safari (на macOS и iOS). Всегда актуальный список поддерживаемых браузеров можно найти здесь
Медиа запросы для iphone
Не могу заставить работать вёрстку на айфонах так, как требуется.
На всех остальных девайсах всё работает как мне нужно.
Пробовал разные варианты, некоторые из них:
@media (device-height : 568px)
and (device-width : 320px)
and (-webkit-min-device-pixel-ratio: 2)
@media
only screen and (max-device-width: 1136px) and (min-device-width: 960px) and (max-device-height: 640px) and (min-device-height: 560px),
only screen and (max-device-height: 1136px) and (min-device-height: 960px) and (max-device-width: 640px) and (min-device-width: 560px) {
/* iPhone only */
}
@media only screen
and (max-device-width: 640px),
only screen and (max-device-width: 667px),
only screen and (max-width: 480px)
{ }
Но ничего не помогло.
Сейчас я использую такие media queries(для iPhone они всёравно не работают):
@media screen and (max-width: 420px), only screen and (max-device-width: 667px) and (-webkit-device-pixel-ratio: 2), screen and (min-device-width : 414px) and (max-device-height : 736px) and (max-resolution: 401dpi)
.l-wrapper
flex-direction: column
.l-item
width: 100%
.projects
figure.project
width: 100%
margin-right: 0
.edu-places
.edu-place
span
&.period
padding-top: 3em
&:before
top: 3em
.h-wrapper
flex-direction: column
align-items: center
@media screen and (max-width: 768px), only screen and (max-device-width: 667px) and (-webkit-device-pixel-ratio: 2), screen and (min-device-width : 414px) and (max-device-height : 736px) and (max-resolution: 401dpi)
#wrapper
flex-direction: column
#header
flex: 1
#main
flex: 1
Подскажите, что ещё попробовать? Может я что-то неверно делаю? Нужна помощь и советы.
UPDATE:
На iPhone желаю получить такой же результат как на скриншоте Android
iPhone на данный момент, скриншот одинаков для iPhone6,6 ,5,5S
Наведение и указатель
Итак, я попробую объяснить эти медиа-функции как можно проще, ведь они достаточно полезны.
Обе медиа-функции hover и pointer относятся к определению основного механизма ввода на сайте. Например, мышь. Или палец, если вы используете смартфон. Чтобы определить все механизмы ввода, можно использовать функции any-hover и any-pointer.
А теперь перейдем к тому, что же они делают?
Функция hover (и any-hover) позволяет браузеру узнать, может ли основной механизм ввода наводиться на элементы (например, как курсор мыши).
Вы можете использовать эту функцию для определения основного механизма ввода, который
Когда это стоит использовать? Например, когда вы хотите обрабатывать анимацию наведения на мобильных устройствах, где механизм ввода (палец) не может наводиться на элементы.
Функции pointer (и any-pointer) позволяют браузеру узнать, имеет ли основной механизм ввода указатель (например, мышь) и если имеет, то насколько он точный.
Вы можете использовать эту функцию для определения основного механизма ввода, который:
Это полезно, например, для увеличения области нажатия на устройства с неточным указателем
Эй, это всё скучно. Где новые крутые функции, о которых упоминалось раньше?
Вот они!
Учтите, что следующие функции являются экспериментальными и в данный момент имеют очень ограниченную поддержку.
Обзор
Контейнер страницы имеет ширину 980px для любого разрешения, больше 1024px. Для проверки ширины используются media queries, если ширина меньше чем 980px, в этом случае макет становится резиновым, вместо фиксированной ширины. Если ширина меньше 650px, то контейнеры с контентом и боковой панелью расширяются на полный экран и становятся в одну колонку.
Ориентация экрана
Orientation
– это хорошая медиа-функция, которая позволяет вам производить изменения в зависимости от ориентации дисплея. Она может иметь два значения:
portrait
(портрет) и
landscape
(пейзаж/альбом).
Но что браузер считает портретом, а что пейзажем? Значение портрета будет инициировать изменения каждый раз, когда высота области видимости больше ширины. Аналогично, если ширина больше высоты, вьюпорт будет считаться «альбомным».
Например, этот код даёт следующий результат:
/* Красный фон применяется только, если ориентация экрана альбомная */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (orientation: landscape) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Подключаем css media queries
Создаем новый CSS файл для media queries. Посмотрите мою прошлую статью, что бы увидеть как работают
Подключаем media queries javascript
Internet Explorer 8 и более ранних версий не поддерживает CSS3 media queries. Вы можете включить ее, добавив Javascript файл
Предпочитаемая цветовая схема
Это одна из моих любимых функций, и я надеюсь, что постепенно она станет популярной.
Функция позволяет разработчикам устанавливать различные варианты оформления для элементов, если изменяется цветовая схема. И Windows и macOS позволяет пользователям менять системную цветовую схему со светлой на тёмную и обратно. iOS 13 также представила эту функцию, а для пользователей Android эта возможность станет доступной с приходом Android Q.
Поддержка браузерами также приличная. На данный момент последние версии Google Chrome, Mozilla Firefox и Safari поддерживают эту функцию. На мобильных устройствах её также поддерживают все основные браузеры, кроме Opera. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Значения для этой функции достаточно понятны интуитивно:
Посмотреть, насколько крута эта функция, можно в примере ниже!
.appbar {
background-color: #EE4266;
}
.fab {
background-color: #424242;
}
@media screen and (prefers-color-scheme: dark) {
body {
background-color: #424242;
}
.appbar {
background-color: #212121;
}
h2 {
color: #fff;
}
.fab {
background-color: #EE4266;
}
}
Установка системной тёмной темы делает страницу также тёмной
Размер вьюпорт
Да, я говорю о
width, height, min-width, min-height, max-widthmax-height
Нуждаются ли они в особом представлении? Я буду краток.Эти медиа-функции используются для установки разных стилей для разных размеров экрана. Они очень полезны при разработке отзывчивой системы.
Поскольку функции width и height могут устанавливать стили только для точно заданного размера области видимости, более вероятно, что вы будете использовать префиксы max- и min-. Например, в следующем коде стили будут применяться, только если высота вьюпорт больше 320 пикселей.
/* Красный фон применится, только если высота вьюпорт больше 320 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-height: 320px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Но вы также можете смешивать эти функции для обработки диапазона размеров
/* Красный фон применится, если ширина области видимости от 320 до 600 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-width: 320px) and (max-width: 600px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Следующий пример демонстрирует, как можно использовать функцию max-width для изменения цвета фона в зависимости от ширины области видимости
body {
background-color: #0EAD69;
}
@media screen and (max-width: 1600px) {
body {
background-color: #3BCEAC;
}
}
@media screen and (max-width: 1280px) {
body {
background-color: #FFD23F;
}
}
@media screen and (max-width: 960px) {
body {
background-color: #EE4266;
}
}
@media screen and (max-width: 600px) {
body {
background-color: #540D6E;
}
}
Размер экрана меньше 480px
Этот CSS будет применяться для размеря экрана меньше 480px, которая соответствует ширине iPhone в альбомной ориентации.
@media screen and (max-width: 480px) {
html {
-webkit-text-size-adjust: none;
}
#main-nav a {
font-size: 90%;
padding: 10px 8px;
}
}
Размер экрана меньше 650px (одноколоночный макет)
Затем, задаем CSS правила для размера экрана меньше 650px.
@media screen and (max-width: 650px) {
#header {
height: auto;
}
#searchform {
position: absolute;
top: 5px;
right: 0;
}
#main-nav {
position: static;
}
#site-logo {
margin: 15px 100px 5px 0;
position: static;
}
#site-description {
margin: 0 0 15px;
position: static;
}
#content {
width: auto;
float: none;
margin: 20px 0;
}
#sidebar {
width: 100%;
float: none;
margin: 0;
}
}
Размер экрана меньше 980px (резиновый макет)
Для размера экрана меньше 980px применим следующие правила:
Совет:
используйте проценты (%), чтобы сделать блоки резиновыми.
Сокращение количества анимации
Это также очень важно. Лично я люблю анимации и переходы, и я думаю, что правильная анимация может действительно улучшить удобство взаимодействия с сайтом. Но не всем нравятся анимации и, что более важно, у некоторых людей могут быть вестибулярные расстройства, из-за которых может возникать укачивание и головокружение. Я нашел полезную
, которая очень хорошо объясняет подобные явления.
В общем, на наиболее важных десктопных и мобильных операционных системах существует опция доступности, позволяющая решить эти проблемы путём уменьшения подвижности элементов.
Эта функция может иметь два значения:
Проверьте эту функцию в примере ниже:
.pulse {
animation: pulse 2s infinite;
}
@media screen and (prefers-reduced-motion: reduce) {
.pulse {
animation: none;
}
}
Анимация пульсации прекращается, когда пользователь выбирает снижения подвижности элементов
Браузерная совместимость для этой функции достаточно хорошая. В данный момент только Edge и IE не поддерживают её. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Соотношение сторон
Данная медиа-функция похожа на функцию ориентации, но является более точной. Вы можете установить правила для конкретного необходимого соотношения сторон. Например, можно установить разную разметку для телефонов с экранами 16/9 и 18/9.
Эта функция также может иметь префикс max- и min- для обработки диапазона экранов с разным соотношением сторон
Ссылки
CSSCSS3HTML5JavaScriptMedia Queries
Финальное демо
Откроем финальное демо и поизменяем размер экрана, что бы увидеть media queries в действии. Не забудьте проверить в iPhone, iPad, Blackberry (последние версии) и Android телефонах, что бы увидеть мобильную версию.
Шаг 1
На первом шаге в
не реализованы media queries, поэтому при изменении размера окна браузера, макет будет оставаться фиксированной ширины.
Эластичные встраиваемые видео
Для видео применяем те же правила, как для изображений. По непонятным причинам
max-width:100%
(для видео) не работает в Safari. Нужно использовать
width: 100%
.video embed,
.video object,
.video iframe {
width: 100%;
height: auto;
}
Эластичные изображения
Для того, чтобы сделать изображения эластичными, просто добавьте
max-width:100%
height:auto
. Изображения
max-width:100%
height:auto
работает в IE7, но не работает в IE8 (да, еще один странный баг). Для исправления нужно добавить
width:auto9
для IE8.
img {
max-width: 100%;
height: auto;
width: auto9; /* ie8 */
}
Заключение
Для меня это был интересный эксперимент, я узнал о некоторых новых возможностях, которые я, вероятно, теперь буду использовать гораздо чаще.
Хотелось бы упомянуть еще о некоторые функциях, как например, light-level, которая может использоваться для проверки уровня окружающего освещения, но большинство недавно представленных функций медиавыражений всё еще не имеют поддержки ни одним из браузеров, так что… еще не пришло время.
Примеры кодаВы можете ознакомиться с примерами кода здесь. Код находится в открытом доступе на Github.
Кто мыМы команда молодых разработчиков и дизайнеров, находящихся в Падуя, Италия. Мы разрабатываем мобильные приложения и веб-сайты и всегда готовы создавать что-то великое
Initial scale meta tag (iphone)
По умолчанию iPhone Safari сжимает станицы, что бы вместить в экран. Следующий мета-тег говорит iPhone Safari использовать ширину устройства как ширину окна и отключить.