Пожалуйста, обновите эту статьюкликните сюда
Эта статья была впервые опубликована вWoohoo. Lu Dawei.com/post/Горячий ублюдок…
Запросы СМИ @media
Когда мы разрабатываем веб-сайт, мы надеемся, что он будет хорошо работать на мобильных телефонах, iPad и ПК.CSS предоставляет нам мощный синтаксис условного суждения, который может устанавливать различные стили в зависимости от ширины устройства, чтобы реализовать различные устройств. Примените другой макет.
На рисунке ниже показано использование@media
На той же странице для достижения двух концов мобильного телефона, IPad конец 3, расположение четырех ПК.
Давайте проанализируем, как реализовать приведенную выше демонстрацию.
<div class="grid">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
.grid {
display: flex;
flex-wrap: wrap;
}
.item {
width: 50%;
}
@media (min-width: 576px) {
.item {
width: 33.333%;
}
}
@media (min-width: 1024px) {
.item {
width: 25%;
}
}
Делим устройство на три секции по ширине устройства, а именно:
-
小于576px
Мобильный диапазон -
576px~1024px
Интервал плиты -
大于1024px
Ассортимент ПК
Стиль по умолчанию написан для мобильного терминала, что сокращает правила сопоставления и ускоряет синтаксический анализ мобильного терминала. Когда ширина устройства больше 576 пикселей, она соответствует@media (min-width: 576px)
,В настоящее времяwidth: 33.333%;
будет оригинал50%
Перезаписано, отображается в виде 3 столбцов. Когда ширина устройства больше 1024 пикселей, она соответствует@media (min-width: 1024px)
,В настоящее времяwidth: 25%;
перезаписать оригинал33.333%
, отображается в виде 4 столбцов.
При рациональном размещении структуры DOM эффект просмотра на разных устройствах может быть совершенно разным. Сотрудничатьflex
макетorder
Атрибуты, перестановка позиций между DOM стала проще.
REM
Мы решили проблему размещения на разных концах, используя три точки останова, но это только первый шаг. Мы по-прежнему используем px в качестве единицы.Дизайнер дал нам проект дизайна iPhone6, кнопку шириной 80px, которая может быть написана так на iPhone6. Что делать, если в iPhone5s не хватает места и возникает разрыв строки, а iPhone6 Plus остается пустым? В это время будет вызван наш большой убийца Рем.
REM - относительное устройство, рассчитанное по размеру шрифта корневого элемента HTML.元素实际尺寸 = 元素 rem 值 x html 的 font-size 值
. То есть, когда размер шрифта html установлен на 50 пикселей, фактический размер элемента в 2rem составляет 100 пикселей.
Наши дизайнеры обычно используют 2x iPhone6 в качестве эскиза. Ширина эскиза дизайна iPhone6 составляет750px
, соответствует реальному размеру350px
. Чтобы облегчить преобразование, мы устанавливаем размер шрифта html равным50px
,Фактический размер100px = 2rem
. Этот2rem
Точно соответствует эскизному проекту200
Сдвиг на два десятичных знака влево делает преобразование очень удобным.
Я понимаю, что вы сказали, но какое это имеет отношение к адаптации 5s и 6p? ?
Конечно, это имеет значение, мы можем сделать размер шрифта html пропорционально масштабируемым на основе iPhone6, чтобы можно было добиться адаптации к 5s и 6p. Взгляните на кусок кода:
var clientWidth = document.documentElement.clientWidth;
document.documentElement.style.fontSize = (clientWidth / 750) * 100 + "px";
Рассчитайте ширину текущего устройства на основе размера 750, пропорционально преобразуйте его в px и установите размер шрифта html той же пропорции для мобильных телефонов разных размеров.
Давайте посмотрим на реальные рендеры:
Объединить @media rem
Комбинируя два пункта, упомянутых ранее, код выглядит следующим образом:
var clientWidth = document.documentElement.clientWidth;
if (clientWidth < 575) {
document.documentElement.style.fontSize = (clientWidth / 750) * 100 + "px";
} else if (clientWidth < 1024) {
// 竖版 iPad 的 2x 尺寸
document.documentElement.style.fontSize = (clientWidth / 1536) * 100 + "px";
} else {
document.documentElement.style.fontSize = "50px";
}
Наконец достигнуто:
-
小于576px
Мобильный диапазон, пропорционально масштабированный iPhone6, макет в 2 столбца -
576px~1024px
Площадь планшета, пропорциональная вертикали iPad, макет в 3 столбца -
大于1024px
Диапазон на стороне ПК, без масштабирования. макет в 4 колонки
Подводя итог, реальные проекты часто бывают более сложными, чем это. В настоящее время вам необходимо взять проект проекта с тремя терминалами и тщательно проанализировать его, который можно абстрагировать в структуру DOM. Четкая структура DOM сделает вашу реализацию более понятной. . прикреплен к этой статьеПолная демонстрация, который является скриншотом в начале.