html — Медиа запрос не работает в Chrome
html — Медиа запрос не работает в Chrome — Stack Overflow на русскомStack Overflow на русском — это сайт вопросов и ответов для программистов. Присоединяйтесь! Регистрация займёт не больше минуты.
Присоединиться к сообществуЛюбой может задать вопрос
Любой может ответить
Лучшие ответы получают голоса и поднимаются наверх
Вопрос задан
Просмотрен 2k раз
Нужно на странице budova. org применять такой код В firefox всё прекрасно работает, а вот хром не хочет. Что я мог упустить?
body {
margin: 0;
padding: 0;
font-family: 'Exo 2', sans-serif;
text-decoration: none;
background: #fff
}
a {
text-decoration: none;
color: #666666;
}
.layout {
width: 96%;
padding: 0 2% 0 2%;
overflow: hidden;
}
.layout .col div {
margin: 0 10px;
padding: 10px;
background: #fff;
color: #000;
}
.layout div img {
width: 100%;
border: 1px solid #bfbfbf;
}
.layout div h3 {
font-size: 16px;
text-align: center;
}
#logo {
margin: 45px auto;
}
.col:hover {
border: 1px solid #bfbfbf;
margin: 0px;
}
.col {
float: left;
margin: 1px;
width: 24%;
}
@media all and (max-width: 900px) {
.col {
float: left;
width: 48%;
height: 257px;
background: red;
}
}
@media all and (max-width: 700px) {
.col {
float: left;
width: 48%;
height: 200px;
background: green;
}
}
Air<!DOCTYdivE html> <html> <head> <meta charset="utf-8" /> <title>Инженерные системы ЛТД - простые решения для Вашего дома!</title> <link rel="stylesheet" tydive="text/css" href="css.css" /> <link href="https://fonts.googleapis.com/css?family=Exo+2" rel="stylesheet"> <link href="https://unpkg.com/[email protected]/dist/css/micron.min.css" type="text/css" rel="stylesheet"> <script src="https://unpkg.com/[email protected]/dist/script/micron.min.js" type="text/javascript" async></script> </head> <body> <header> <div align="center"> <img src="images/logo.png" ; alt="Logo IS" /> </div> </header> <div> <div align="center"> <div> <a href="https://devi.kiev.ua/" target="_blank"> <div><img data-micron="jelly" src="images/devi.png" alt="devi" /></div> <h3>Тёплый пол DEVI</h3> </a> </div> </div> <div align="center"> <div> <a href="http://vac.budova.org/" target="_blank"> <div><img data-micron="jelly" src="images/vac.png" alt="пылесос" /></div> <h3>Центральный пылесос</h3> </a> </div> </div> <div align="center"> <div> <a href="http://carrera.budova.org/" target="_blank"> <div><img data-micron="jelly" src="images/carrera.png" alt="carrera" /></div> <h3>Конвекторы Carrera</h3> </a> </div> </div> <div align="center"> <div> <a href="https://devi.kiev.ua/snegotayanie/snegotayanie.html" target="_blank"> <div><img data-micron="jelly" src="images/devi-ice.png" alt="Снеготаяние devi" /></div> <h3>Снеготаяние DEVI</h3> </a> </div> </div> <div align="center"> <div> <a href="http://potopa.net.ua/" target="_blank"> <div><img data-micron="jelly" src="images/potopa.png" alt="Защита от потопа" /></div> <h3>Защита от потопа</h3> </a> </div> </div> <div align="center"> <div> <a href="https://devi.kiev.ua/informatsiya/veria-2.html" target="_blank"> <div><img data-micron="jelly" src="images/veria.png" alt="VERIA" /></div> <h3>Тёплый пол VERIA</h3> </a> </div> </div> <div align="center"> <div> <a href="http://danfoss.biz.ua/" target="_blank"> <div><img data-micron="jelly" src="images/danfoss.png" alt="Danfoss" /></div> <h3>Продукция Danfoss</h3> </a> </div> </div> <div align="center"> <div> <a href="http://airelec.com.ua/" target="_blank"> <div><img data-micron="jelly" src="images/6.png" alt="Airelec" /></div> <h3>Конвекторы Airelec</h3> </a> </div> </div> </div> <div></div> </body> </html>
13.9k66 золотых знаков3131 серебряный знак5959 бронзовых знаков
355 бронзовых знаков
4- Исправьте
<!DOCTYdivE html>
на<!DOCTYPE html>
( не относится к делу) - Добавьте в
head
<meta name="viewport" content="width=device-width, initial-scale=1">
- CTRL+F5
ответ дан 15 мар ’18 в 10:39
Node_proNode_pro7,84444 золотых знака2929 серебряных знаков4848 бронзовых знаков
6 Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.default
Stack Overflow на русском лучше работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей [Политикой в отношении файлов cookie] (https://stackoverflow.com/legal/cookie-policy).
Принять все файлы cookie Настроить параметры
html — Медиа-запросы не работают на телефонах
У меня проблема с медиа-запросами (при первом использовании). http://swiatek.org.pl/-2/ Они работают, когда я меняю окно браузера, но когда я смотрю, проверить панель инструментов устройства на хром медиа-запросах не работает :(. CSS: http://swiatek.org.pl/-2/main.css
0
Vane 1 Авг 2018 в 21:22
3 ответа
Лучший ответ
Замещать
@media screen and (max-width: 1000px)
С участием
@media only screen and (max-width: 1000px)
И заменить
@media screen and (max-width: 880px)
С участием
@media only screen and (max-width: 880px)
0
عبدالرحمان 1 Авг 2018 в 18:32
Добавьте слово «только» при объявлении медиаэкранов.
@media only screen and (max-width: 880px) {
#first header{
font-size: 55px;
}
}
Вы можете узнать больше об этом здесь: https://www.w3schools.com/cssref/css3_pr_mediaquery. жерех
0
Weisen 1 Авг 2018 в 18:28
Вам не хватает метатега, добавьте это в свой заголовок.
<meta name="viewport" content="width=device-width, initial-scale=1">
0
Dejan.S 1 Авг 2018 в 18:29
CSS: Правило @media | медиа запросы
CSS предоставляет способ отображения содержимого веб-страницы по разному, в зависимости от устройства, на котором оно просматривается, или разрешения экрана (размера области просмотра в браузере) без необходимости изменения самого содержимого. Медиа запросы состоят из выражения, которое ограничивает область действия таблицы стилей и самой таблицы стилей, размещаемой в фигурных скобках.
Синтаксис
@media тип_устройства and|not|only (медиа_особенности) { CSS код; }
Также можно включать различные стили для различных устройств вывода информации с помощью атрибута media тега link:
<link rel="stylesheet" media="тип_устройства and|not|only (медиа_особенности)" href="stylesheet.css">
Типы устройств
Тип | Описание |
---|---|
all | Используется для всех типов устройств. |
aural | Используется для синтезаторов речи и звука. |
braille | Используется для тактильной обратной связи устройств Брайля. |
embossed | Используется для принтеров Брайля. |
handheld | Используется для небольших или портативных устройств. |
Используется для принтеров | |
projection | Используется для презентаций, таких как слайды. |
screen | Используется для экранов компьютеров, планшетов, смартфонов и т.д. |
speech | Используется для речевых браузеров. |
tty | Используется для носителей, использующих сетки с фиксированным шагом символов, такие как телетайпы и терминалы. |
tv | Используется для телеэкранов. |
К сожалению тип устройства дает слишком мало информации, поэтому редко используется по прямому назначению. Современные смартфоны и планшеты, ноутбуки и настольные компьютеры идентифицируют себя как тип screen. Поэтому тип носителя обычно используется для различения экранных версий документа от печатных, что позволяет совершенно по разному их оформлять:
/* только для печати */ @media print { /* скрыть меню */ #navigation { display: none; } /* начинать каждую новую страницу с заголовка h2 */ h2 { page-break-before: always; } }
Особенности устройств для медиа запросов
Особенность | Описание |
---|---|
aspect-ratio | Определяет соотношение ширины и высоты области просмотра. Значение состоит из двух положительных чисел, разделенных прямой косой чертой (слэшем). Первое число представляет собой количество пикселей по горизонтали, второе по вертикали. Может иметь префикс «min» или «max». |
color | Определяет количество бит на цвет для устройства. Может иметь префикс «min» или «max». |
color-index | Указывает количество цветов, которое устройство может отображать. Может иметь префикс «min» или «max». |
device-aspect-ratio | Определяет соотношение ширины и высоты устройства вывода. Значение состоит из двух положительных чисел, разделенных прямой косой чертой (слэшем). Первое число представляет собой количество пикселей по горизонтали, второе по вертикали. Может иметь префикс «min» или «max». |
device-height | Указывает высоту устройства, такого как экран компьютера (имеется в виду весь экран или страницу, а не только область просмотра). Может иметь префикс «min» или «max». |
device-width | Указывает ширину устройства, такого как экран компьютера (имеется в виду весь экран или страницу, а не только область просмотра). Может иметь префикс «min» или «max». |
grid | Определяет как устроен вывод у устройства: на основе сетки или точечный. Если устройство на основе сетки (например, терминал, телетайп или дисплей телефона, поддерживающий только один шрифт), то значение 1, в противном случае значением будет 0. |
height | Указывает высоту области просмотра, например, окно браузера. Может иметь префикс «min» или «max». |
monochrome | Указывает количесвто бит на пиксель для устройств с монохромными экранами. Может иметь префикс «min» или «max». |
orientation | Указывает в каком режиме просмотра находится дисплей: ландшафтном (ширина дисплея больше, чем высота) или портретном (высота дисплея больше, чем ширина). |
resolution | Указывает разрешение (плотность пикселей) устройства вывода. Может быть указана в dpi (точек на дюйм) или в dpcm (точек на сантиметр). Может иметь префикс «min» или «max». |
scan | Определяет процесс сканирования телевизионных устройств вывода. |
width | Указывает ширину области просмотра, например, окно браузера. Может иметь префикс «min» или «max». |
Наиболее важными из особенностей устройств для медиа запросов являются min-width и max-width, позволяющие создавать гибкие конструкции, в которых изменение макета сайта происходит на основе области просмотра браузера, установленного на устройстве.
Медиа запросы сочетают в себе тип устройства и условие, состоящее из одной или нескольких особенностей устройства. Например правила в следующем запросе применяются только при просмотре на экране с минимальной шириной области просмотра 600px:
@media screen and (min-width: 600px) {}
Медиа запросы не чувствительны к регистру, но скобки вокруг условия являются обязательной частью синтаксиса запроса. Оператор and здесь используется для объединения типа устройства с условием, но он также может объединять несколько особенностей устройства вместе:
@media (max-width: 500px) and (min-aspect-ratio: 1/1) {}
Этот медиа запрос имеет значение true, если устройство для просмотра имеет максимальное разрешение области просмотра 500px и соотношение сторон 1:1 (квадрат или ландшафтный просмотр). Обратите внимание, что в этом запросе нет типа устройства, поэтому это правило будет применяться ко всем типам устройств.
Логические операторы
В дополнение к логическому оператору and (и), медиа запросы могут включать в себя логическое not (не), only (только) и or (или). Запятая (,) используется в качестве оператора or, то есть каждый запрос рассматривается индивидуально. Это означает, что с помощью запросов, разделенных запятой, можно одно правило @media ориентировать на различные типы устройств и их особенности.
Следующее правило @media применяется либо к устройству с минимальной областью просмотра 700px в ширину, либо если устройство находится в ландшафтном режиме просмотра:
@media (min-width: 700px), (orientation: landscape) {}
Оператор not используется для отрицания условий медиа запроса. Соответствующие стили применяются, если устройство не соответствует указанным вслед за not параметрам. Например следующее правило применяется только в том случае, если экран устройства не 800px в ширину:
@media not screen and (device-width: 800px) {}
Оператор only применяется, когда нужно скрыть правило @media от старых браузеров, которые не поддерживают описываемый синтаксис. Браузеры, которые поддерживают медиа запросы, оператор only просто проигнорируют.
/* Не работает в старых браузерах */ @media only screen and (min-width: 600px) {}
настройка дизайна писем для мобильного телефона
От автора: дизайнеры электронной почты давно стремятся создавать кампании для каждого устройства. Особенно сегодня, когда примерно половина всех открытий электронной почты происходит на мобильных устройствах, важно разработать решение, которое хорошо подходит для разных устройств. Хотя это всегда было сложной задачей (и до сих пор для некоторых почтовых клиентов), медиа запросы могут её облегчить. Но, если вы не погрязли в мире веб-дизайна, то можете и не знать, что такое медиа-запросы и почему их нужно использовать. В этом посте мы рассмотрим пользу мультимедийного запроса и выясним, почему он должен использоваться в каждом письме.
ЧТО ТАКОЕ МЕДИА-ЗАПРОС?
Медиа-запросы являются компонентом каскадных таблиц стилей (CSS), языка, используемого для стилей веб-сайтов и кампаний электронной почты. На самом базовом уровне медиа-запросы действуют как переключатель запуска стилей на основе набора правил. Итак, как же работает этот коммутатор?
Медиа-запрос состоит из трех частей: типа носителя, выражения и правил стиля, содержащихся в самом запросе медиа.
Тип мультимедиа позволяет нам объявить, к какому типу медиа должны применяться правила. Есть четыре варианта, которые можно объявить: все, печать (print), экран(screen) и речь(speech). Для электронной почты вы почти всегда можете использовать тип screen.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееВыражения позволяют дополнительно ориентировать устройства на основе конкретных условий, которые вы передаете медиа-запросу. Выражения тестируют средства мультимедиа, которые описывают различные функции устройства, такие как ширина, высота, соотношение сторон и цвет. Несмотря на то, что многие функции мультимедиа можно тестировать, большинство разработчиков электронной почты полагаются на следующее:
максимальная и минимальная ширина
максимальная и минимальная ширина устройства
пиксельное соотношение устройства
Функции мультимедиа также могут быть объединены в мультимедийный запрос, чтобы обеспечить больший контроль над устройствами и клиентами таргетинга. Мы увидим пример этого, когда речь пойдёт об использовании расширенных медиа-запросов.
Наконец, в фигурных скобках медиа-запроса правила CSS можно переключать, когда электронное письмо открывается на устройстве, которое удовлетворяет как типу носителя, так и выражениям.
Запросы мультимедиа должны быть включены в блок стиля, который обычно находится в заголовке HTML. Это имеет значение, когда речь заходит о том, как мы пишем правила CSS и поддерживаем медиа-запросы, о которых мы поговорим позже.
ПРЕИМУЩЕСТВА МЕДИА-ЗАПРОСОВ
Используя медиа-запросы, мы можем точно настроить дизайн электронной почты, чтобы он был более удобным для использования на широком спектре устройств. Давайте рассмотрим общий сценарий.
Долгое время дизайнеры электронной почты строили создавали электронные письма с использованием подхода, ориентированного только на рабочий стол. В электронном письме использовались фиксированные таблицы ширины, и все оптимизировалось так, чтобы хорошо выглядеть на настольных компьютерах и почтовых клиентах. Однако при просмотре на мобильных устройствах дизайн ломался: адрес электронной почты масштабировался по размеру устройства, что делало текст и кнопки слишком маленькими для вкладок; макет разбит и непригоден; или правая сторона письма скрыта от просмотра, появлялась необходимость горизонтальной прокрутки.
До того, как были решены проблемы с мультимедиа, разработчик ничего не мог сделать с этим. Теперь мы можем использовать медиа-запросы для таргетинга мобильных устройств и соответственно корректировать стили.
БЫСТРЫЙ ПРИМЕР
Если вы читали наше руководство по мобильным подходам, то знаете, что электронные письма с фиксированной шириной обычно уменьшаются на мобильных телефонах, что приводит к нечитаемости текста. Текучие электронные письма, которые используют ширину в процентах, позволяют содержимому заполнять различные размеры экрана.
Итак, допустим, у нас есть таблица контейнеров с фиксированной шириной 600 пикселей. В этом случае мы хотим переключить фиксированную ширину 600 пикселей в виде рабочего стола на текучую процентную ширину (100%) на меньших экранах.
<table border=»0″ cellpadding=»0″ cellspacing=»0″ >
<table border=»0″ cellpadding=»0″ cellspacing=»0″ width=»600″> |
Вы заметили, что класс добавлен в таблицу контейнеров. Мы можем использовать переключатель fixed-to-fluid, используя классы для обозначения и назначения HTML-элементов и используя наш медиа-запрос для переопределения стилей, применяемых к таблице. Каждому классу требуется имя, и в этом случае мы назвали нашу таблицу .container-table . Мы предлагаем дать классам очевидные имена, которые говорят об их целью в медиа-запросе.
/* TYPICAL WEB DESIGN METHOD */ .container-table {}
/* TYPICAL WEB DESIGN METHOD */ .container-table {} |
Как только мы добавили имя класса в тег таблицы, нам нужно добавить медиа-запрос в нашего HTML вместе с выражением и тем же именем класса. Выражение, которое мы использовали, max-width: 600px, сообщает медиа-запросу применять правила в любое время, когда размер экрана меньше 600 пикселей.
@media screen and (max-width:600px) { .container-table { } }
@media screen and (max-width:600px) { .container-table { } } |
Теперь мы добавим правила стиля, которые изменяют значение свойства ширины CSS для этой таблицы. Теперь наш контейнер является текучим на любом видовом пространстве, который уже имеет более 600 пикселей.
@media screen and (max-width:600px) { .container-table { width: 100% !important; } }
@media screen and (max-width:600px) { .container-table { width: 100% !important; } } |
Этот же подход можно использовать для настройки общих точек размера текста, изображения и кнопок на мобильных устройствах. Например, если мы хотим скорректировать размер текста нашей копии на мобильном телефоне, мы можем сделать её примерно такой же:
@media screen and (max-width:600px) { .mobile-text { font-size: 18px !important; } }
@media screen and (max-width:600px) { .mobile-text { font-size: 18px !important; } } |
Ориентируясь на имена классов или определенные элементы, мы можем манипулировать нашими проектами и сделать их более читаемыми и пригодными для использования на небольших устройствах.
Следует отметить, что в большинстве случаев мы используем медиа-запросы для переопределения встроенных стилей. Если вы знакомы с тем, как работает CSS, каскад использует порядок объявления правил CSS для определения того, какие стили должны быть визуализированы. Поскольку медиа-запросы, естественно, живут в верхней части HTML-документа, предпочтение будут иметь любые встроенные стили, применяемые к контенту электронной почты. Поэтому нам нужен способ переопределить эти встроенные стили.
Это можно сделать, используя важное объявление:
td { font-size: 24px !important; font-weight: bold !important; }
td { font-size: 24px !important; font-weight: bold !important; } |
Многие веб-дизайнеры выступают против чрезмерного использования важных объявлений, но для дизайнеров по электронной почте это наш лучший друг.
РАСШИРЕННЫЙ ТАРГЕТИНГ
Хотя многие дизайнеры электронной почты будут использовать медиа-запросы только для настройки стилей для мобильных устройств, их можно использовать и более продвинутыми способами.
Существует много методов кодирования и проектирования, которые просто не работают в некоторых почтовых клиентах. Такие вещи, как SVG, CSS-анимация и видео это потрясающе, когда можно избежать их просмотра, но, когда это невозможно, это может испортить опыт просмотра подписчиков у устаревших клиентов электронной почты. Одним из наиболее ценных применений медиа-запросов является таргетинг на конкретные почтовые клиенты или платформы и постепенное улучшение контента, поэтому эти самые современные методы можно использовать, не беспокоясь о том, чтобы сломать опыт для всех остальных.
Отличным примером этого является наше популярное электронное письмо с фоновым видео, которое мы отправили для продвижения нашего первого мероприятия Litmus Live. Видео в электронном письме долгое время считалось святым граалем дизайна электронной почты. Хотя несколько клиентов поддерживают его, большинство из них этого не делают. Вместо того, чтобы пытаться перетащить видео в почтовые ящики для всех, наш дизайнер Кевин использовал медиа-запросы, предназначенные только для тех клиентов, которые поддерживают видео в электронном письме, и увеличил кампанию для этой аудитории.
Видеофайлы поддерживаются только некоторыми браузерами на основе Webkit, а именно Apple Mail и Outlook 2011 для Mac. В то время как в других почтовых клиентах видно фоновый цвет и фоновое изображение (при их поддержке), благодаря следующему мультимедийному запросу в клиентах на основе Webkit можно просмотреть полноэкранное видео, воспроизводимое в фоновом режиме:
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнее@media screen and (-webkit-min-device-pixel-ratio: 0) { /* Insert styles here */ }
@media screen and (-webkit-min-device-pixel-ratio: 0) { /* Insert styles here */ } |
Подобные выражения могут использоваться на целом ряде устройств на основе их возможностей. Например, если вы хотите настроить таргетинг на iPhone X в стандартном представлении, вы можете использовать следующее:
@media screen and (device-width : 375px) and (device-height : 812px) and (-webkit-device-pixel-ratio : 3) { /* Insert styles here */ }
@media screen and (device-width : 375px) and (device-height : 812px) and (-webkit-device-pixel-ratio : 3) { /* Insert styles here */ } |
Использование медиа-запросов для конкретных почтовых клиентов или платформ дает разработчикам электронной почты ранее неслыханный контроль над их дизайном. В сочетании с такими вещами, как анимация CSS, дизайнеры могут доставлять действительно поразительные впечатления прямо в папке «Входящие».
ПОДДЕРЖКА
Поддержка мультимедийных запросов в почтовых клиентах на мобильных устройствах, в веб-почте и на рабочем столе улучшалась на протяжении многих лет — самые популярные почтовые клиенты поддерживают медиа-запросы! Ознакомьтесь с этой таблицей, чтобы узнать, где они поддерживаются:
Поддержка медиа-запросов в почтовых клиентах
Android 4.4 — да
Gmail app (Android) — нет
Gmail app IMAP (Android) — да
iOS — да
Inbox by Gmail (Android) — да
Inbox by Gmail (iOS) — да
Outlook (Android) — да
Outlook (iOS) — да
Samsung Mail (Android) — да
Yahoo! Mail app (Android) — да
Yahoo! Mail app (iOS) — да
Apple Mail 10 — да
Outlook 2000-03 — да
Outlook 2007-16 — нет
Outlook for Mac — да
Thunderbird — да
Windows 10 Mail — нет
AOL Mail — нет
Gmail — да
G Suite — нет
GMX.de — да
Inbox by Gmail — да
Libero — да
Office 365 — нет
Orange.fr — нет
Outlook.com — нет
Gmail — да
SFR.fr — да
T-online.de — нет
Web.de — да
Yahoo! Mail — да
Эта разная степень поддержки заключается в том, что мы обычно рекомендуем создать прочную основу для вашей электронной почты с помощью HTML и встроенного CSS, при этом добавляются мультимедийные запросы для постепенного улучшения дизайна. Гибридный подход к созданию электронных писем является идеальной основой для того, чтобы медиа-запросы не поддерживались.
УЛУЧШИТЕ СВОИ КАМПАНИИ
Медиа-запросы позволяют разработчикам создавать опыт для более широкого спектра устройств, чем когда-либо прежде. Что еще более важно, они позволяют настраивать ваши проекты для все более и более мобильной аудитории. Как и в любой новой технике, важно протестировать свои кампании, чтобы они выглядели великолепно.
Автор: Jason Rodriguez
Источник: //litmus.com/
Редакция: Команда webformyself.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееPSD to HTML
Практика верстки сайта на CSS Grid с нуля
СмотретьНа 100% правильный способ делать контрольные точки в CSS — CSS-LIVE
Перевод статьи The 100% correct way to do CSS breakpoints для CSS-live.ru, автор — Дэвид Гилбертсон
Постарайтесь на пару минут забыть про CSS. Не думайте о веб-разработке. Забудьте про цифровые пользовательские интерфейсы.
А когда вы забудете про всё это, хочу, чтоб ваше сознание отправилось в путешествие. В путешествие в прошлое. Назад в детство. В первый ваш день в школе.
Многое тогда было проще, когда единственной вашей заботой было рисовать фигуры и стараться удержать себя в руках.
Взгляните на эти точки. Видите, что некоторые из них собраны в кучки, а некоторые выбиваются? Я хочу, чтоб вы мне разбили их на пять групп, как вам кажется логичным.
Смелей. Убедитесь, что никто не смотрит, и обведите вокруг каждой из пяти групп кружок пальчиком, совсем как тогда в детстве.
Скорее всего у вас получилось что-то вроде этого, так? (Только не говорите мне, что проскроллили вниз, не сделав этого упражнения. Я очень расстроюсь.)
Конечно, те две точки справа можно было обвести по-разному. Если вы объединили их в группу, думаю, это нормально. Говорят, что не бывает неправильного ответа, но я всегда бываю прав, так что мне не приходится выслушивать это пошлое утешение.
Прежде чем я продолжу, вы точно не нарисовали чего-то наподобие такого?
Вряд ли. Правда?
Но именно это по сути вы делаете, когда задаете контрольные точки в положениях, отвечающих точной ширине конкретных устройств (320px, 768px, 1024px).
Доводилось ли вам слышать недоуменное бормотание вроде такого? Или, может, это вы и были?
«Средняя контрольная точка — это до 768px включительно или нет? Так, вижу… а это iPad в портретном режиме, или это уже „большой“? Ага, большой — это от 768px и выше. А маленький — это 320px? Что же тогда такое диапазон от 0 до 319px? Контрольная точка для муравьев?»
Могу на этом остановиться и перейти сразу к правильным контрольным точкам. Но мне любопытно, почему вышеописанный метод («тупая группировка») так распространен.
Почему так вышло?
Думаю, ответ на эту загадку, как и на многие другие, сводится к сбивающей с толку терминологии. В конце концов, и предложение выпить царской водки из кружки Эсмарха может выглядеть весьма заманчивым, если не знать, что это такое (ну почему, почему похожая, но еще более тонкая игра слов на английском — не моя шутка?).
Думаю, в обсуждениях и реализациях контрольных точек мы путаем «границы» и «диапазоны».
Скажите, если вы делаете контрольные точки в Sass, вы заводите переменную $large
со значением, скажем, 768px?
Это нижняя граница диапазона, который вы называете large («большой») или верхняя? Если нижняя, то переменной $small
быть не должно, потому что это должен быть 0
, так ведь?
А если это верхняя граница, то как вы определите контрольную точку $large-and-up
(«от большго и выше»)? Это должно быть медиавыражение с min-width
, равным $medium
, так?
А если вы называете так только саму границу, то нас ждет путаница в дальнейшем, потому что медиавыражение — это всегда диапазон.
Получается бардак, и даже думать об этом — зря время тратить. Так что у меня есть три совета:
- Выбирайте контрольные точки правильно
- Называйте диапазоны со смыслом
- Пишите код декларативно
Совет № 1: Выбирайте контрольные точки правильно
Что же такое правильная контрольная точка?
Ваше детсадовское «я» уже нарисовало кружочки. Я лишь сделал вам из них прямоугольники.
600px, 900px, 1200px и 1800px, если собираетесь делать что-то особенное для гигантских мониторов. На всякий случай, если заказываете в интернете «гигантский монитор», уточняйте, что речь про компьютерный. Если вам пришлют старинный бронированный корабль, с вас могут многовато взять за доставку.
Точки, с которыми только что играло ваше детское «я», представляют 14 самых распространенных размеров экрана:
Источник картинки
Так что можно сделать милую маленькую картинку, позволяющую легко находить общий язык всем, кто строит из себя бизнесменов, дизайнеров, разработчиков и тестировщиков соответственно.
Зря я выбрал оранжевый и зеленый цвета, но не переделывать же теперь все картинки
Совет № 2. Называйте диапазоны со смыслом
Конечно, никто не мешает назвать контрольные точки «папа-медведь» и «маленький-медвежонок». Но если я собираюсь посидеть с дизайнером и обсудить, как должен выглядеть сайт на разных устройствах, я хочу как можно быстрее с этим закруглиться. Если для этого нужно назвать размер планшетом в портретном положении — мне это подходит. Ёлки-палки, да назовите его хоть «iPad в портретном положении», я не обижусь.
«Но расклад же меняется!» — можете воскликнуть вы. «Телефоны растут, планшеты мельчают!»
Но срок годности у CSS вашего сайта — около трех лет (если это не Gmail). iPad с нами уже вдвое дольше, и с трона его пока так и не спихнули. И мы знаем, что Apple уже не делает новых продуктов, а только убирает что-то (кнопочки, дырочки и т.п.) у существующих.
Так что 1024 на 768 — это надолго, ребята. Не надо прятать голову в песок (занятный факт: страусы не водятся в городах, потому что там нет песка, а значит, некуда прятаться от хищников).
Вывод: без общения нет взаимопонимания. Не надо намеренно отказываться от полезных слов.
Совет № 3. Пишите код декларативно
Знаю, знаю, опять это слово «декларативно». Скажу по-другому: ваш CSS должен определять, что в нем должно происходить, а не как это должно происходить. Это «как» лучше спрятать в специальном миксине.
Как мы уже выяснили, изрядная часть путаницы с контрольными точками заключена в том, что переменные, обозначающие границу диапазона, называются так же, как сам диапазон. У $large: 600px
попросту нет смысла, если large
(«большой») — это диапазон. Это всё равно что сказать var coordinates = 4;
.
Так что все технические подробности можно упрятать в миксин, а не давать использовать их в коде в открытую. А можно и того лучше — вообще обойтись без переменных.
Следующий пример я поначалу делал как упрощенный. Но на деле, по-моему, он охватывает всё что надо. Можете взглянуть на него в действии на Codepen. Я использую Sass, потому что не мыслю сайта без него. Но логика в CSS или Less будет та же.
@mixin for-phone-only { @media (max-width: 599px) { @content; } } @mixin for-tablet-portrait-up { @media (min-width: 600px) { @content; } } @mixin for-tablet-landscape-up { @media (min-width: 900px) { @content; } } @mixin for-desktop-up { @media (min-width: 1200px) { @content; } } @mixin for-big-desktop-up { @media (min-width: 1800px) { @content; } } // usage .my-box { padding: 10px; @include for-desktop-up { padding: 20px; } }
Возможно, я пристрастен, но, вроде, вполне симпатичный декларативный CSS
Обратите внимание, что я вынуждаю разработчика указывать суффикс -up
(«и выше») или -only
(«и только»).
Неоднозначность плодит путаницу
Можно сходу придраться, что это не работает с произвольными медиавыражениями. Что ж, хорошая новость. Если вам нужно произвольное медиавыражение, напишите его (на практике, если мне понадобится что-либо сложнее вышеприведенного примера, я не стану дурить головы и сразу брошусь в объятья любимой Сюзи с ее инструментами).
Еще одним недостатком можно считать то, что у меня тут восемь миксинов. Конечно, было бы разумно сделать единственный миксин, а потом просто передавать в него нужные размеры, типа такого:
@mixin for-size($size) { @if $size == phone-only { @media (max-width: 599px) { @content; } } @else if $size == tablet-portrait-up { @media (min-width: 600px) { @content; } } @else if $size == tablet-landscape-up { @media (min-width: 900px) { @content; } } @else if $size == desktop-up { @media (min-width: 1200px) { @content; } } @else if $size == big-desktop-up { @media (min-width: 1800px) { @content; } } } // usage .my-box { padding: 10px; @include for-size(desktop-up) { padding: 20px; } }
Да, это работает. Но если вы передадите неподдерживаемое имя, компилятор вам никакой ошибки не покажет. А передать sass-переменную — значит сделать доступными в коде 8 переменных, и лишь для того, чтобы отдать их переключателю в миксин.
Не говоря о том, что синтаксис @include for-desktop-up {...}
со всех сторон красивее, чем @include for-size(desktop-up) {...}
.
Оба примера кода можно поругать за то, что я дважды пишу 900px, да еще 899px. Конечно же, можно обойтись одной переменной и отнять 1, где нужно.
Хотите этого — флаг вам в руки, но я не стал бы, и вот почему:
- Это не то, что часто меняется. Это не те числа, что используются повсюду в коде. От того, что они не переменные, нет никаких проблем — если только вы не хотите дать к контрольным точкам Sass доступ скрипту, вставляющему в страницу JS-объект с этими переменными.
- Синтаксис для перевода чисел в строки в Sass ужасен. Внизу — цена, которую вы заплатите за веру в то, что повторение числа дважды — худшее из зол:
@mixin for-size($range) { $phone-upper-boundary: 600px; $tablet-portrait-upper-boundary: 900px; $tablet-landscape-upper-boundary: 1200px; $desktop-upper-boundary: 1800px; @if $range == phone-only { @media (max-width: #{$phone-upper-boundary - 1}) { @content; } } @else if $range == tablet-portrait-up { @media (min-width: $phone-upper-boundary) { @content; } } @else if $range == tablet-landscape-up { @media (min-width: $tablet-landscape-upper-boundary) { @content; } } @else if $range == desktop-up { @media (min-width: $tablet-landscape-upper-boundary) { @content; } } @else if $range == big-desktop-up { @media (min-width: $desktop-upper-boundary) { @content; } } } // usage .my-box { padding: 10px; @include for-size(desktop-up) { padding: 20px; } }
Ну как, улучшилась читаемость? Или наоборот?
Ну и раз уж я в последних абзацах взял такой агрессивный тон… Горе тому дураку, кто делает какое-то колдунство типа хранения контрольных точек в Sass-списке и выводит медиавыражения, обходя его циклом, или еще что-то столь же нелепое, что другие разработчики потом век не расшифруют.
Где сложность, там и баги
Наконец, вы можете подумать «Разве не правильнее отталкиваться в контрольных точках от контента, а не от устройств?». Что ж, круто, что вы дочитали аж досюда, и ответ будет «да»… для сайтов с одним видом раскладки. Или если у вас несколько раскладок и вас устраивает делать свой набор контрольных точек для каждой. Ах да, и еще если дизайн вашего сайта не меняется часто, или вас устраивает обновлять контрольные точки при каждом обновлении дизайна, потому что вам хочется, чтобы они по-прежнему зависели от контента, правда?
Со сложными сайтами жить намного легче, если использовать по всему сайту один и тот же набор контрольных точек.
Всё! Но этой заметке как-то явно не хватает пушистости, дайте-ка подумать, не найдется ли у меня повода добавить немного…
О, придумал!
Добавочные советы по разработке контрольных точек
Да, даже у flickr есть контрольные точки на 768 и 1400
- Если хотите увидеть в действии контрольные точки CSS для экранов с разрешением больше чем у монитора, за которым вы сидите, воспользуйтесь «отзывчивым» режимом в отладчике Chrome и введите сколь угодно гигантский размер.
- Голубая полоска показывает медиавыражения для ‘max-width’, оранжевая — для ‘min-width’, а зеленая — медиавыражения, в которых есть и то и другое.
- Клик по медиавыражению задает экрану такую ширину. Если кликнуть по зеленому медиавыражению несколько раз, он переключается между максимальной и минимальной шириной.
- Кликайте правой кнопкой по медиавыражению в панели медиавыражений, чтобы перейти к определению этого правила в CSS.
Спасибо за чтение! Пишите свои лучшие идеи в комментариях, буду рад их услышать. И кликните на маленькое сердечко, если считаете, что я этого заслуживаю, либо оставьте его пустым и заброшенным, как моя самооценка в том случае, если вы этого не сделаете.
P.S. Это тоже может быть интересно:
flex-layout 🚀 — Не работает резервная точка останова для запросов CSS @media с универсальным серверным рендерингом
Да, я попробовал еще, даже заставил ваш HTML работать в мою пользу. Но кажется, что .gt- * и .lt- * наоборот.
В SSR это означает gt- * = .lt- * и означает .lt- * = .gt- * Так что в любом случае это неправильно.
@ThomasBurleson @CaerusKaru могу я заплатить тебе, чтобы это исправить? Это влияет на наш бизнес, и я был бы готов отправить вам 1.000 долларов США в биткойнах (или чем-то другом), чтобы решить эту проблему.
Также я думаю, что это имеет большой приоритет с точки зрения веб-доступности для многих приложений angular, поскольку каждое приложение Angular с гибкой компоновкой страдает от этой проблемы. Это снижает показатель CLS в Google Pagespeed, что означает, что SEO-показатели страдают, потому что пользователям трудно использовать приложения Angular.
Сообщите мне, работает ли это для вас, и напишите мне свой адрес BTC.
Как воспроизвести:
- Настроить новый angular
app ng new app
- Установить
ng add @nguniversal/express-engine
- Установить
npm i -s @angular/flex-layout @angular/cdk
- Заменить содержимое в
/src/app/app.component.html
на
<div fxLayout="column" fxLayout.gt-sm="row">
<div fxFlex.gt-sm="50">one</div>
<div fxFlex.gt-sm="50">two</div>
</div>
<div fxHide.gt-sm>
I'm shown when I'm greater than SM
</div>
<div fxHide.lt-md>
I'm shown when I'm less than MD
</div>
- Отключить Javascript
Ожидаемое поведение:
Размер экрана ниже SM:
- Должно быть два ряда шириной 100% друг под другом.
- Текст должен гласить:
I'm shown when I'm _less_ than MD
Размер экрана выше SM:
- Рядом должно быть два ряда шириной 50%.
- Текст должен гласить:
I'm shown when I'm _greater_ than SM
Фактическое поведение:
Размер экрана ниже SM:
- Два ряда располагаются друг под другом, их ширина составляет 50%.
- Текст гласит:
I'm shown when I'm _greater_ than SM
Размер экрана выше SM:
- Рядом два ряда шириной 50%.
- Текст гласит:
I'm shown when I'm _less_ than MD
Дополнительное примечание: когда размер экрана составляет от 959 до 600, текст полностью пустой, что означает, что он не соответствует поведению обычного Angular. Кажется, что он использует логику, в которой проверяет <вместо <= и наоборот> вместо> =.
Это означает, что поведение точки останова синхронизировано между Angular Universal и обычным Angular.
Большое спасибо.
Сделать ширину сайта в зависимости от разрешения монитора. @ Media — Примеры
В 2006 году большинство пользователей имело экран монитора 800*600. Но время неумолимо и в какой-то момент «нормальным» стал 1024*768. У веб-ресурсов, ориентированных на меньшее разрешение, появилось пустое пространство по бокам. Всё большую популярность стали приобретать «резиновые» сайты, которые создаются путём использования
- @Media,
- относительных величин.
@Media CSS
Для того, чтобы адаптировать дизайн web-проекта под разные устройства (мобильные телефоны, планшетники, принтеры и т.п.) применяется @Media. Из всего многообразия types и Queries, как правило, внедряют print и width. Рассмотрим последний. Он влияет на отображение сайта в окне браузера разной ширины. Поэтому для того, чтобы увидеть его в действии, достаточно уменьшить размеры окна браузера .
Попробуйте это сделать прямо сейчас. И вы увидите как боковая панель данного блога распадается (поиск перемещается вниз, содержание переходит в тело статьи), в меню сокращаются списки, убирается надпись «Дата обновления» и т.д.
Макет с изначальными значениями блоков указан здесь. Добавим правила перед тегом </style>
@media (max-width: 930px) { .content-wrapper {padding: 0;} } @media (max-width: 930px) and (min-width: 470px) { aside {position: static; width: 100%; background: #ccc;} } @media (max-width: 469px) { body {font: .9em/1em "Helvetica Neue",Arial,Helvetica,sans-serif;} aside {display: none;} }Вместо px лучше использовать em. Для чего значение px нужно разделить на значение font-size в px. Например, 1600/16=100, а именно media='(min-width: 100em)’.
CSS стили можно как непосредственно добавить в код страницы, так и воспользоваться внешним файлом, например:
<link rel='stylesheet' href='URL_по_умолчанию.css' /> <link rel='stylesheet' media='(min-width: 1600px)' href='URL_большой.css' /> <link rel='stylesheet' media='(max-width: 1599px) and (min-width: 800px)' href='URL_средний.css' /> <link rel='stylesheet' media='(max-width: 799px)' href='URL_маленький_экран.css' />
Размещение экрана как «пейзаж» (ширина больше высоты) и «портрет» (ширина меньше высоты)
@media all and (orientation:landscape) { /* стили для пейзажа */ } @media all and (orientation:portrait) { /* стили для портрета */ }или
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css"> <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
html — медиа-запросы в CSS не работают должным образом
html — медиа-запросы в CSS не работают должным образом — qaruПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 10к раз
Я использую этот код на своей веб-странице и пробовал разные настройки для min-width
, но он принимает значения только из медиа-запроса, имеющего наименьшую ширину.
@media only screen and (min-width: 900px) {
li {
дисплей: встроенный;
отступ слева: 5%;
отступ справа: 5%;
}
li.one {
отступ слева: 13%;
}
@media only screen и (min-width: 800px) {
li {
дисплей: встроенный;
отступ слева: 5%;
padding-right: 5%;}
li.two {
отступ слева: 9%;
}
}
@media only screen и (min-width: 600px), screen and (max-width: 601px) {
li {
дисплей: встроенный;
отступ слева: 5%;
отступ справа: 5%;
}
li.три{
отступ слева: 7%;
}
}
Не знаю, что мешает правильной работе других запросов.
Йоханнес54.7k1515 золотых знаков5454 серебряных знака106106 бронзовых знаков
41.) Ваш третий запрос должен быть записан так:
@media only screen and (min-width: 600px) and (max-width: 601px) {...
(запятая означает два независимых селектора)
2.) Вы сделали свои li
elements inline
elements. Но встроенный элемент не может иметь никаких отступов — все эти значения отступов ни на что не влияют. Поэтому измените настройки отображения на inline-block
для них.
Создан 13 мар.
Йоханнес54.7k1515 золотых знаков5454 серебряных знака106106 бронзовых знаков
Добавьте этот код на свою HTML-страницу
Создан 11 мар.
0Следует изменить порядок размеров запроса.В CSS побеждает последний действительный запрос, поэтому запрос падает до наименьшего. Самый крупный должен быть последним.
Создан 18 ноя.
@media (min-width: 768px) {}
у меня работает.также добавьте
в тег заголовка
3,151 11 золотой знак1818 серебряных знаков3333 бронзовых знака
Создан 11 марта 2017 г. в 11: 122017-03-11 11:12
ITbugITbug4555 бронзовых знаков
@media screen и (min-width: 320px) {
// ваш класс css
}
@media screen и (min-width: 321px) и (max-width: 480px) {
// ваш класс css
}
@media screen и (min-width: 481px) и (max-width: 720px) {
// ваш класс css
}
@media screen и (min-width: 721px) и (max-width: 1080px) {
// ваш класс css
}
@media screen и (min-width: 1080px) и (max-width: 1280px) {
// ваш класс css
}
@media screen и (min-width: 1281px) и (max-width: 1920px) {
// ваш класс css
}
Попробуйте использовать такие запросы, у меня этот способ сработал
masud_moni1,0011515 серебряных знаков2929 бронзовых знаков
Создан 11 мар.
1Вы оставили одну фигурную скобку внутри 900 медиа-запроса.Скопируйте этот код и замените медиа-запрос.
@media only screen and (min-width: 900px) {
li {
дисплей: встроенный;
отступ слева: 5%;
отступ справа: 5%;
}
li.one {
отступ слева: 13%;
}
}
@media only screen и (min-width: 800px) {
li {
дисплей: встроенный;
отступ слева: 5%;
отступ справа: 5%;
}
li.two {
отступ слева: 9%;
}
}
@media only screen и (min-width: 600px) и (max-width: 601px) {
li {
дисплей: встроенный;
отступ слева: 5%;
отступ справа: 5%;
}
li.три{
отступ слева: 7%;
}
}
marc_s680k159159 золотых знаков12611261 серебряный знак13921392 бронзовых знака
Создан 11 мар.
2добавьте это в свой тег заголовка и закройте правильные фигурные скобки медиа-запроса, которые вы не закрывали, проверьте правильно.
Создан 11 мар.
ITbugITbug4555 бронзовых знаков
lang-html
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie Настроить параметры
медиа-запросов CSS3: простые ошибки и простые исправления
Если вы веб-дизайнер (ругаетесь себе под нос) и пытаетесь выяснить, что, черт возьми, пошло не так в вашем адаптивном веб-дизайне, вы можете найти ответ в этом руководстве.
Иногда, когда отзывчивый дизайн «сбивает с толку», ответ — простой Gotcha! Это может быть ошибка медиа-запроса CSS3, настолько простая, что вы просто ее не заметили.
Если вы новичок в медиа-запросах, сначала подумайте о прочтении CSS3 Media Queries for Beginners.
В противном случае возьмите чашку кофе и ознакомьтесь с «Простые ловушки» ниже. Возможно, вы слишком задумываетесь о проблеме.
Знаете ли вы?
- Медиа-запросы состоят из медиа-типа и могут содержать одно или несколько выражений, которые разрешаются либо в истинное, либо в ложное.
- Когда медиа-запрос истинен, применяются соответствующие правила стиля, следуя обычным правилам каскадирования.
- Одновременно может выполняться более одного медиа-запроса.
- Вы можете добавить сколько угодно точек останова.
- Медиа-запрос оборачивается обычными селекторами CSS. Вам необходимо определить по крайней мере один селектор в медиа-запросе.
- Порядок имеет значение. CSS обрабатывается сверху вниз. Любые свойства, указанные более одного раза, будут принимать последнее указанное значение.
- Если вы примените два правила, которые сталкиваются с одними и теми же элементами, будет выбрано последнее из объявленных правил, если первое не имеет маркера! Important или более конкретное.
- Медиа-запросы не поддерживаются IE 8 или более ранней версии.
- Медиа-запросы нечувствительны к регистру.
- Медиа-запросы имеют фигурные скобки.
4 ошибки, связанные с простыми медиа-запросами
Попался №1 (метатег области просмотра)
Как правило, наиболее распространенной ошибкой является отсутствие метатега области просмотра .Если вы протестируете свои медиа-запросы CSS на мобильном устройстве, вы не увидите медиа-запросы, примененные изначально без этого тега .
По умолчанию мобильные устройства уменьшают масштаб веб-страниц при их просмотре. В результате сайт кажется меньше.
Метатег области просмотра позволяет изменять «виртуальную область просмотра» мобильных устройств. С помощью метатега области просмотра мы можем указать мобильному устройству, например iPhone, отображать страницу без масштабирования.
Это метатег области просмотра:
Не забудьте добавить этот тег в раздел HEAD вашей страницы.Устанавливая начальную шкалу на 1, мы контролируем начальный уровень масштабирования страницы.
Попался №2 (синтаксическая ошибка)
Эта синтаксическая ошибка может озадачить вас не один раз. Это так просто, но нелегко заметить после долгого дня работы с исходным кодом.
Отсутствие пробела между «и», выражение не допускается. Если там нет места, ваш медиа-запрос не будет работать.
Пример синтаксической ошибки: @media all и (цвет) {…}
ВАЖНО: Также убедитесь, что вы каким-то образом не УДАЛИЛИ окончание CURLY BRACE в одном из ваших медиа-запросов.Убедитесь, что у каждого открывающегося КЛЮЧЕВОГО СОЕДИНЕНИЯ есть КОНЕЦ. В противном случае ваша веб-страница может выглядеть в браузере полной неразберихой.
Попался №3 (включая медиа-запросы)
Inclusive Media Queries может иногда вызывать неожиданное поведение в веб-браузере. Когда вы делаете одну и ту же точку останова верхней границей одного медиа-запроса и нижней границей другого, оба медиа-запроса будут срабатывать, когда ширина области просмотра точно соответствует этой точке останова. Иногда это может привести к неожиданному поведению, потому что оба медиа-запроса принимают истинное значение одновременно, на крошечный момент.
@media screen и (max-width: 767px) {
h2 {font-size: 20px;}
}
@media screen и (min-width: 767px) {
h2 {font-size: 40px;}
}
Попался №4 (специфика и порядок приоритета)
Когда мы говорим о «Порядок приоритета» в CSS, есть общее правило. CSS обрабатывается сверху вниз. Любые свойства, указанные более одного раза, будут принимать последнее указанное значение. Когда селекторы имеют одинаковое значение специфичности, учитывается последнее правило.
h4 {цвет: красный;}
h4 {цвет: зеленый;}
Одно правило говорит, что ваш тег h4 должен быть красным, другое правило говорит, что он зеленый. Правила противоречат друг другу. Будет применен второй.
Если два селектора применяются к одному и тому же элементу, выигрывает тот, у которого более высокая специфичность.
Специфика CSSчасто является причиной того, что ваши правила CSS не применяются к некоторым элементам, хотя вы думаете, что должны. Каждый селектор имеет свое место в иерархии специфики.
Узнайте больше о порядке приоритета CSS в «Плавном переходе от CSS к CSS3».
Вы могли подумать, что правила внутри медиа-запросов будут иметь некоторый приоритет над другими правилами стиля в той же таблице стилей, но это не так. Сами по себе медиа-запросы не имеют специфики.
@media screen и (max-device-width: 767px) {
h2 {font-size: 40px;}
}
h2 {font-size: 80px;}
В приведенном выше примере медиа-запрос с правилом стиля внутри указан перед простым правилом стиля.Селекторы имеют одинаковое значение специфичности, поэтому учитывается последнее правило. H2 будет 80 пикселей.
Не забудьте поместить свои медиа-запросы ниже в таблице стилей, чтобы они переопределяли правила, перечисленные над ними.
ID селекторы имеют более высокую специфичность, чем все другие селекторы. Попробуйте использовать ID для повышения специфичности. Это самый важный селектор в правиле стиля.
div # feature span {color: green}
div span {color: blue}
span {color: red}
Независимо от порядка, текст будет зеленым, потому что это правило является наиболее конкретным.(Кроме того, правило для синего заменяет правило для красного.)
Таким образом, если ваша веб-страница не делает то, что, по вашему мнению, она должна, остановитесь и поищите простые «Попутно».
- Не забудьте добавить метатег области просмотра в раздел заголовка своей веб-страницы.
- Ищите простые синтаксические ошибки в каскадной таблице стилей. Это может быть так же просто, как убрать фигурную скобку из медиа-запроса или забыть поставить пробел после «и» в медиа-запросе.
- Затем рассмотрите селекторы, которые вы используете в своей таблице стилей, порядок, в котором вы их используете, и таблицу стилей, в которой они размещены.Надеюсь, это крошечная ошибка, которую вы просто не заметили.
медиа-запросов не работают на мобильных устройствах> Litmus
Всем привет!
У меня проблема с медиа-запросами. Я пытаюсь сделать что-нибудь довольно простое. Все электронное письмо представляет собой изображение (только для целей предварительного просмотра), и как только оно достигает определенной ширины, оно должно переключаться на мобильную версию. Медиа-запросы вообще не работают, когда я отправляю тест в Litmus Builder: https: // лакмус.com / builder / documents / 3403305, ни мой почтовый ящик. Я что-то пропустил? Я знаю, что Gmail печально известен тем, что удаляет медиа-запросы, но я хотел бы знать, есть ли обходной путь для этого.
Заранее спасибо! Вот мой код:
<ссылка
href = "https: // шрифты.googleapis.com/css?family=Lato:Lato:300,400,900 "
rel = "таблица стилей"
/>
<ссылка
href = "https://fonts.googleapis.com/css?family=Roboto"
rel = "таблица стилей"
/>
<таблица
border = "0"
align = "center"
cellpadding = "0"
cellspacing = "0"
>
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP;
<центр>
<таблица
cellspacing = "0"
cellpadding = "0"
border = "0"
align = "center"
bgcolor = "# ffffff"
>
Предложение действительно для одного заказа через [Название ресторана]
веб-сайт или мобильное приложение только на ограниченное время.
& копировать; [Название ресторана]. [LocationAddress]. Все
Права защищены.
Наши записи показывают, что у нас есть ваше разрешение на отправку
электронные письма на этот адрес электронной почты. Если вы не хотите
получать от нас маркетинговые письма, пожалуйста
<а
href = "{{unsubscribeUrl}}"
target = "_ blank"
> <диапазон
> отпишитесь здесь span
> a
>.
<а
href = "{{viewInBrowserUrl}}"
target = "_ blank"
> <диапазон
> Просмотреть в браузере span
> a
>
Как использовать медиа-запросы CSS для адаптивного дизайна?
CSS — одна из основ веб-разработки и дизайна.Хотя CSS начинался как что-то, что может изменить стиль веб-страницы, каждая итерация спецификации CSS теперь приносит больше, особенно когда речь идет о кроссбраузерной совместимости.
Сегодня CSS — это больше, чем просто «фоновый цвет» и спецификации тегов, которые сделали первые дни веб-разработки очень интересными. CSS стал вспомогательным инструментом в реализации дизайна, ориентированного на мобильные устройства, и адаптивного веб-дизайна в веб-приложениях без особых усилий.
В этом посте мы глубоко погрузимся в концепцию медиа-запросов CSS: свойство CSS, которое может вносить некоторые изменения в веб-страницу, глядя на устройство.Мы также увидим, как все развивалось, и в дальнейшем сосредоточимся на том, как мы можем реализовать медиазапросы CSS с адаптивным дизайном, чтобы обеспечить удобство взаимодействия с пользователем на вашем веб-сайте.
Что такое медиа-запросы CSS?
Медиа-запросы CSS начинались со спецификации CSS2, которая включала медиа-правило CSS в свою библиотеку. Медиа-правила были введены в CSS после наблюдения за различными мультимедийными устройствами, наводнившими рынок и хорошо воспринятыми потребителями.
Например, это было захватывающее время, когда были представлены речевые устройства, которые могли читать веб-страницу за вас. Но, к сожалению, хотя правила для СМИ были настолько важны, они не впечатлили сообщество разработчиков. Сильная причина в том, что медиаустройства не были готовы к такой трансформации (по крайней мере, до этого момента!).
Источник: EmailonAcidИтак, забегая вперед, разработчики CSS подумали о модификации этого свойства. Несмотря на то, что правила мультимедиа не разрабатывались в сообществе, они могут вводить запросы, которые могут анализировать одно мультимедийное устройство и соответствующим образом применять CSS.Это были названы медиа-запросами CSS.
медиа-запросов CSS, как мы знаем, изменили то, как мы сегодня разрабатываем адаптивные веб-приложения. Медиа-запросы CSS — это условия и запросы, которые отлично работают в век сотен устройств и браузеров.
В то время как медиа-правила смотрели на смартфон, медиа-запросы CSS смотрели на область просмотра, разрешение и даже ориентацию. Эти медиа-запросы дали уникальную возможность рендеринга контента в соответствии с типом устройства или его ориентацией, что привело нас к следующему шагу в адаптивном веб-дизайне.Изменение, о котором думали разработчики CSS, было хорошо принято и стало неотъемлемой частью веб-дизайна с помощью медиа-запросов CSS.
2021 год! Нам действительно нужны медиа-запросы?
Первое, что может прийти вам в голову: «Действительно ли нам нужны медиа-запросы CSS, учитывая множество технологий и спецификаций, появляющихся каждый день»? Это искренний и частый вопрос для тех, кто начинает свой путь с медиа-запросов.
Что ж, CSS сейчас намного более зрелый, чем это было раньше, когда был представлен CSS 2.Сейчас у нас так много продвинутых методов в CSS, что многие стандартные проблемы покрываются новыми концепциями в CSS.
Одна из таких вещей, которая приходит на ум, — это сетки и подсетки CSS. Сетки CSS адаптивны по своей природе и часто предназначены для больших макетов. Они требуют ручного кодирования с медиа-запросами для уменьшения и увеличения размера столбца в соответствии с экраном устройства.
Источник: GoogleДругая часть сеток CSS — это гибкий блок CSS, который также является адаптивным по своей природе и наиболее подходит для небольших макетов.Как веб-разработчик, у вас также может быть собственный набор инструментов, которые очень быстро реагируют. Эти инструменты сводят на нет наши усилия и экономят много времени, оставляя нас с постоянным вопросом: «Должны ли мы изучать медиа-запросы прямо сейчас, в 2021 году»?
Я считаю, что при ответе на этот вопрос нужно учитывать две вещи: нужны ли нам медиа-запросы CSS в 2021 году. Что ж, это определенно правда, что новые методы и элементы CSS дают более быстрые и лучшие результаты с точки зрения отзывчивости. Однако верно и то, что как веб-разработчик я сам рекомендовал бы другим разработчикам использовать новые спецификации, а не сосредотачиваться на медиа-запросах.
Но новые спецификации не полностью заменяют контроль, который мы получаем через медиа-запросы, и являются просто решением только стандартных проблем в веб-разработке. Например, в случае адаптивного дизайна медиазапросы CSS предоставят больше контроля и возможностей для реализации различных вариантов использования.
С другой стороны, спецификации CSS являются фиксированными. Сетки CSS всегда будут работать со структурой «сетка», но медиа-запросы можно использовать с множеством других опций. Если требования вашего проекта могут быть выполнены с учетом новых спецификаций, этого вполне достаточно! Однако для разработки чего-то нового и креативного вам на помощь придут медиа-запросы.
Еще одна прекрасная причина для изучения медиа-запросов CSS сегодня — это улучшение спецификации и элементов CSS. При использовании адаптивного элемента CSS, такого как сетки CSS, вы можете использовать мультимедийные запросы поверх него, чтобы улучшить его функциональные возможности и добавить некоторые из них: например, изменение цвета (очень простой пример).
Таким образом, даже если может показаться, что медиа-запросы CSS не используются, когда вы начинаете разработку проекта, вы найдете множество сценариев, для реализации которых требуются медиа-запросы CSS.Всегда лучше изучить и применить их на практике для реализации в проекте веб-разработки.
Читать Создание адаптивных изображений с помощью CSS, HTML, WordPress и др.!
Как писать медиа-запросы в CSS для адаптивного дизайна?
Синтаксис для медиа-запросов CSS напоминает аннотации TestNG, которые, как начинающий веб-разработчик, вы найдете немного уникальными.
Медиа-запрос может быть реализован словом «медиа» следующим образом:
@media
@media |
Например:
@media only screen и (max-width: 480px) { / * Применяемые правила CSS / * }
@media only screen and (max-width: 480px) { / * CSS rules to apply / * } |
Этот медиа-запрос будет искать экраны («только экран», как написано) с максимальной шириной 480 пикселей.Если он его найдет, условия будут выполнены, и в HTML-код будут внесены изменения.
Для применения только медиа-типа, а не медиа-выражений (запросов), принимаются следующие значения:
@media print { .Заголовок { размер шрифта: 12 пикселей } }
@media print { .heading { font-size: 12px } } |
Приведенный выше запрос сделает контент с заголовком имени класса размером шрифта 12 пикселей, когда страницу необходимо напечатать.
Правила для медиа-функций
Чтобы обеспечить скорость отклика через наше веб-приложение, мы должны знать размер устройства для отображения определенного контента. В этом нам помогают правила медиа-функций. С помощью мультимедийных функций мы можем определить наше конкретное состояние и соответствующим образом реализовать CSS. Хотя существует множество правил мультимедийных функций, мы обсудим лишь некоторые из них, важные для адаптивного дизайна.
Правила для ширины и высоты материалов для печати
Первое правило мультимедийных функций, которое следует учитывать, — это проверить ширину и высоту области просмотра.Операции с шириной можно проверить с помощью свойств «width», «max-width» и «min-width» для значений узких мест.
Пример правила максимальной ширины носителя:
@media screen и (max-width: 840px) { п { красный цвет; } }
@media screen и (max-width: 840px) { p { color: red; } } |
Полный код для достижения адаптивного дизайна с помощью правила мультимедиа можно записать как:
Проверка медиа-правил
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 13 14 18 19 20 |
Проверка правил для носителей |
Для экрана, имеющего ширину более 840 пикселей, тег «p» будет отображать содержимое черным цветом следующим образом:
Снимок экрана выше сделан на платформе LambdaTest.
На экране шириной менее 840 пикселей правило мультимедиа изменяет контент на красный цвет и размер шрифта следующим образом:
Приведенный выше код отображается в удобном для разработчиков браузере под названием LT browser, который помогает в адаптивном тестировании и разработке на экранах с 50+ разрешениями. Вы можете выполнять тесты мобильных веб-сайтов в браузере LT быстрее и проще, используя такие функции, как параллельный просмотр, синхронизация прокрутки, мгновенная отладка, сетевое моделирование и многое другое. Кроме того, LT Browser позволяет вам сотрудничать с вашей командой для масштабирования процесса разработки за счет интеграции с инструментами управления проектами.
Для более четкого просмотра вы можете запустить HTML-код в своем браузере и начать уменьшать область просмотра, чтобы увидеть эффект.
Используемый выше браузер — Opera на платформе Windows 10. Точно так же вы можете использовать правило высоты и ширины.
СКАЧАТЬ LT BROWSER
Ориентация в медиа-запросе CSS
Ориентация устройства — одна из основных проблем, снижающих скорость отклика вашего веб-сайта. Отзывчивость никогда не может быть достигнута, если веб-приложение не может понять ориентацию и реагировать соответствующим образом.Как и в случае с медиа-запросами, знание ориентации устройства может помочь нам организовать контент по-другому, что повысит скорость отклика.
Правило ориентации носителя может быть применено как следующий пример:
@media (ориентация: альбомная) { п { красный цвет; размер шрифта: 36 пикселей; } }
@media (ориентация: альбомная) { p { цвет: красный; размер шрифта: 36 пикселей; } } |
Приведенный выше код применит правила мультимедиа в альбомной ориентации, в то время как книжная ориентация будет работать нормально.
Приведенный выше снимок экрана сделан из браузера LT, который может одновременно отображать два устройства для тестирования.
Соединители в правилах для носителей
В большинстве случаев одного правила мультимедиа недостаточно для обеспечения скорости отклика. Что, если мы хотим реализовать правило мультимедиа на определенных устройствах и с определенными условиями? Для таких требований мы используем коннекторы (логические) в правилах мультимедиа. В медиа-запросах CSS соединители принимают три значения:
Эти соединители имеют то же значение, что и в логических выражениях и в языках программирования.Чтобы применить соединитель «и», вам поможет следующий код:
@media (ориентация: альбомная) и (минимальная ширина: 1080 пикселей) { п { красный цвет; размер шрифта: 36 пикселей; } }
@media (ориентация: альбомная) и (минимальная ширина: 1080 пикселей) { p { цвет: красный; размер шрифта: 36 пикселей; } } |
Приведенный выше код работает только при минимальной ширине экрана 1080 пикселей и альбомной ориентации.Поскольку мобильный телефон не попадает в эту категорию, давайте посмотрим, хорошо ли работает правило мультимедиа в данной ситуации.
@media (ориентация: альбомная), (min-width: 1080 пикселей) { п { красный цвет; размер шрифта: 36 пикселей; } }
@media (ориентация: альбомная), (минимальная ширина: 1080 пикселей) { p { цвет: красный; размер шрифта: 36 пикселей; } } |
Приведенное выше правило мультимедиа будет применяться, если ориентация — альбомная или минимальная ширина — 1080 пикселей.В мобильных устройствах наблюдаются следующие изменения:
Так как правило ландшафта выполнено, правила мультимедиа применяются соответственно. Тот же эффект будет виден на экране с шириной более 1080 пикселей.
Правило «not» может применяться с ключевым словом «not», и это будет хорошей практикой для читателей. Прокомментируйте ниже свои уникальные медиа-запросы, чтобы помочь сообществу.
Продемонстрированный выше код был представлен на уровне 3 спецификации.С уровнем 4 мы получаем немного больше гибкости с точки зрения определения чисел и интервалов без использования логических операторов, то есть соединителей. Спецификация уровня 4 в правилах мультимедиа вводит диапазоны в запросы. Итак, запрос:
(минимальная ширина: 640 пикселей) и (максимальная ширина: 1080 пикселей)
(минимальная ширина: 640 пикселей) и (максимальная ширина: 1080 пикселей) |
Может быть записано со спецификацией уровня 4 следующим образом:
(640 пикселей <= ширина <= 1080 пикселей)
(640 пикселей <= ширина <= 1080 пикселей) |
Что немного лучше и яснее в определении медиа-правил.Однако для разработчика нет никаких ограничений, и оба они могут использоваться для достижения отзывчивости.
Точки останова и их методы
Этот пост показывает нам, как добиться адаптивного веб-дизайна с помощью медиа-запросов, правил и выражений. Приятно контролировать элементы и видеть, как они изменяются по нашему желанию. Но проблема здесь в том, как решить, в какой момент мы хотим, чтобы эти правила мультимедиа применялись к элементам? 640 пикселей или 1080 пикселей или что-то еще? Это число, которое работает как точка отражения, называется точкой останова, в которой выполняются медиа-запросы.Выбор случайных точек останова — плохая стратегия адаптивного дизайна, и ее никогда не следует применять без анализа.
Прочтите 10 проблем адаптивного веб-дизайна и их решение
Лучший способ анализировать точки останова — использовать адаптивную панель браузера. Адаптивная панель в браузере позволяет изменять размер окна (или выбирать несколько разрешений), помогая нам быстро и точно выбирать узкие места.
Чтобы открыть панель в Google Chrome, откройте веб-сайт (как LambdaTest открывался в этой демонстрации).
Щелкните правой кнопкой мыши и выберите Inspect .
Щелкните значок, показанный ниже, после открытия панели проверки.
Откроется отзывчивая панель. Здесь вы можете настроить размеры экрана и проверить узкие места.
Обратите внимание, как изменяется разрешение при уменьшении / расширении экрана (верхняя панель). Эта панель поможет разработчикам увидеть точки останова, в которых код выходит за пределы экрана. То же самое можно применить и к правилам мультимедиа.
Мобильные браузеры стали основным выбором пользователей во всем мире. Что касается стратегии дизайна, в настоящее время всегда рекомендуется использовать стратегию дизайна, ориентированную на мобильные устройства, для идеального адаптивного дизайна.
Если вы разработчик, то оставление мобильных устройств на втором месте в списке может раздражать ваших пользователей. Начните разработку с мобильных устройств и постепенно двигайтесь вверх по цепочке (или назад во времени). Такой метод всегда гарантирует, что ваши мобильные пользователи будут довольны, а созданный вами веб-сайт будет отзывчивым.Для проверки ваших проектов предпочтительно использовать браузер для мобильных устройств, например LT-браузер, поскольку он предоставляет больше возможностей, гибкость и масштабируемость.
Кроссбраузерная совместимость для медиа-запросов CSS
Как вы можете видеть на изображении ниже, кроссбраузерная совместимость для запросов CSS Media действительно великолепна. Однако он не поддерживает старые версии Internet Explorer и Mozilla Firefox.
Опять же, браузеры продолжают развиваться, и есть вероятность, что они могут измениться с течением времени.Что ж, на данный момент вам не нужно беспокоиться о кроссбраузерной совместимости для медиа-запросов CSS.
Завершение!
Медиа-запросы CSS— полезный друг для создания адаптивного дизайна и разработки с дополнительными возможностями контроля и улучшения. Медиа-запросы, хотя и начинались грубо, сегодня исчерпывающе используются в проектах и веб-приложениях. В этом посте освещены основные цели медиазапросов и способы достижения с ними отзывчивости с помощью различных правил и выражений.Меня поражает такой красивый дизайн на Codepen и других веб-сайтах, которые разработчики создают с минимальной библиотечной поддержкой. Подходя к концу поста, мы призываем к появлению таких дизайнов в разделах комментариев и хотели бы включить лучшие из них в этот пост. Надеюсь увидеть творческую работу!
Хариш Раджора
Я инженер по информатике. Мне нравится расти вместе с развитием технологического мира. Я считаю, что нет более мощного инструмента, чем компьютер, чтобы хоть как-то изменить мир.Помимо моей специальности, я очень люблю читать книги и иногда пишу на https://www.themeaninglesslife.com.
Адаптивный адрес электронной почты | Ссылка на дизайн электронной почты
Отзывчивый веб-дизайн, термин, впервые введенный Итаном Маркоттом, — это практика создания веб-сайтов таким образом, чтобы их можно было использовать независимо от того, какое устройство используется для доступа к ним. Отзывчивый Интернет в значительной степени зависит от медиа-запросов для обеспечения этой адаптации. Совсем недавно этот подход был использован в электронной почте в формате HTML.
Медиа-запрос имеет довольно простую структуру. Для электронной почты стили медиазапросов вложены в теги электронных писем Обычно это таблица стилей внутри таблицы стилей, медиа-запросы состоят из нескольких частей: Во-первых, они всегда открываются с помощью at-правила @media .Далее идет ключевое слово. В данном случае « только », что ограничивает отображение стилей медиа-запросов указанным типом медиа. После этого устанавливается « media type ». Наиболее часто используемые типы носителей - это screen и print , обеспечивающие различные правила стиля для дисплеев и принтеров соответственно. За ним следует другое ключевое слово « и » и, наконец, « медиа-функция », которая является основой медиа-запроса. Доступно множество различных мультимедийных функций, но на самом деле нас интересуют только две из них: Разница между ними заключается в том, как они вычисляют максимальную ширину, при которой запускается медиа-запрос.Функция max-width измеряется относительно доступного пространства браузера, а max-device-width зависит от размера экрана устройства. По сути, max-width покрывает все, а max-device-width покрывает небольшие дисплеи. Мы хотим охватить все. В этом случае функция мультимедиа используется для нацеливания на область шириной 480 пикселей или меньше. 480 пикселей - это стандартная ширина экрана мобильного телефона в альбомной ориентации и хорошая стандартная точка останова для использования в вашем коде. Как отмечалось в обзоре CSS, перед отправкой электронного письма необходимо вручную или автоматически встроить стили CSS. Поскольку стили медиазапросов работают с триггером и не являются стилями по умолчанию, нет смысла встраивать какие-либо из них. Итак, обычный CSS-код электронного письма должен быть встроен, а CSS-код медиа-запроса должен переопределить эти стили после его запуска. Поскольку встроенные стили имеют наивысшую специфичность в каскаде, необходимо, чтобы каждое написанное вами правило стиля медиа-запроса было помечено объявлением ! Important : Вы можете оставить стили медиа-запросов в вашего электронного письма, поскольку клиенты, которые поддерживают медиа-запросы, не удаляют области или
@media only screen and (max-width: 480px) {
}
Медиа-запросы и встроенные стили