Выходите и смешивайте, тем, кто смешивал в прошлом, рано или поздно придется отплатить ( ̄Д  ̄)┍ .
Решим несколько задач:
1. Что такое окно просмотра и что оно делает?
упомянулviewport
, Я всегда чувствовал себя резким раньше, но когда я недавно работал над мобильным проектом, я вдруг обратил внимание на то, что было проигнорировано.meta
Когда я назвал это, я вдруг понял (о(╯□╰)о). Итак, сначала разберемсяmeta
Теги ☛Узнайте о метатегах, которые были проигнорированы, а потом посмотриviewport
, это легко запомнить, не так ли?meta
Значение атрибута имени в теге.
Так что же он делает? Чтобы понять его конкретную роль, нам нужно сначала понять некоторые связанные с ним базовые знания.
тип области просмотра
viewport
Относится к окну браузера, то есть к части браузера, используемой для отображения веб-страницы, которая является видимой областью веб-страницы пользователя.
viewport
Функция состоит в том, чтобы контролировать самый высокий блок-контейнер вашего сайта:<html>
элемент. можно понимать какviewport
заключается в размещении<html>
элемент элемента.<html>
Ширина элемента равна ширине браузера, т.е.viewport
100% ширины. (оригинальный)
Окно просмотра отличается на мобильном телефоне и ПК. Окно просмотра на стороне ПК — это область окна браузера, в то время как на стороне мобильного устройства есть три разных концепции области просмотра:布局视口
,视觉视口
,理想视口
.
-
layout viewport(布局视口)
: базовое окно макета веб-страницы в браузере ПК эквивалентно размеру окна текущего браузера (за исключением границ, полей и полос прокрутки). На мобильной стороне области просмотра макета присваивается значение по умолчанию, большая часть которого составляет 980 пикселей, что гарантирует, что веб-страница ПК может отображаться в мобильном браузере, но она очень мала, и пользователь может вручную увеличить веб-страницу. страница. в состоянии пройтиdocument.documentElement.clientWidth/clientHeight
Получите размер области просмотра макета веб-страницы в стандартном режиме. -
visual viewport(视觉视口)
: часть экрана, которую пользователь может видеть на мобильном устройстве. в состоянии пройтиwindow.innerWidth / innerHeight
чтобы получить размер визуального окна просмотра. -
ideal viewport(理想视口)
: идеальный размер страниц сайта для мобильных устройств. Сделав ширину страницы равной ширине устройства (область просмотра макета = идеальная область просмотра = область визуального просмотра), мы можем видеть нормальные и удобные страницы на мобильных экранах. позвонивscreen.width / height
чтобы получить идеальный размер области просмотра.
(👉👉мобильная адаптация вьюпорта,Что нужно знать о мобильной адаптации)
viewport
Настройки не влияют на страницы ПК, но важны для страниц мобильных устройств.
Введение атрибута
Атрибуты | значение | ценность |
---|---|---|
width | Определяет ширину области просмотра в пикселях. | положительное целое число или ширина устройства ширина устройства |
height | Определяет высоту области просмотра в пикселях. | положительное целое число или высота устройства |
initial-scale | Определите начальное значение масштабирования | Целое или десятичное |
minimum-scale | Определяет минимальный масштаб для уменьшения, он должен быть меньше или равен настройке максимального масштаба. | Целое или десятичное |
maximum-scale | Определяет максимальный масштаб масштабирования, он должен быть больше или равен настройке минимального масштаба. | Целое или десятичное |
user-scalable | Определяет, разрешать ли пользователю вручную масштабировать страницу, значение по умолчанию — «да». | yes/no |
Основное использование и функции
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
Базовая установка выше:
-
width=device-width
: значит пусть布局视口
Ширина равна ширине устройства; -
initial-scale=1
: Указывает, что начальный коэффициент масштабирования страницы равен 1, что эквивалентно разрешению视觉视口
равный理想视口
; -
maximum-scale=1.0
Указывает, что максимальный коэффициент масштабирования страницы равен 1; -
user-scalable=no
Указывает, что пользователю не разрешено масштабировать страницу.
🌟viewport
атрибутэффект, то есть пусть布局视口
Масштабирование по ширине экрана,width=device.width
просто позволь布局视口
Начальный размер равен ширине устройства, устанавливается позжеinitial-scale
для масштабирования布局视口
размер, а значение по умолчанию布局视口
Начальный размер равен ширине устройства, т. н.理想视口
.
2. Что такое рем? Каков принцип его компоновки?
rem (размер шрифта корневого элемента): относится к единице размера шрифта относительно корневого элемента Суть его макета заключается в пропорциональном масштабировании, обычно основанном на ширине.
Преобразование эскиза дизайна в содержание на экране мобильного телефона аналогично рисованию карты, которая уменьшена и отрисована в определенном соотношении:
3. Зачем масштабировать? Связь между масштабом и dpr?
dpr ( device pixel ratio): Соотношение пикселей устройства, то есть отношение физических пикселей устройства к логическим пикселям (CSS-пикселям).
window.devicePixelRatio
- В области веб-интерфейса пиксели делятся на
设备像素
иCSS像素
; - Один
CSS像素
Размер страницы является переменным, например, когда пользователь масштабирует страницу, он фактически уменьшает или увеличивает масштаб.CSS像素
,и设备像素
Размер и количество остаются прежними.
[Эскизный проект]: предоставляется дизайнером750px
Широкий проектный проект основан на设备像素
(device pixel,物理像素
) Как единица производственного проекта проекта.
[написание веб-страниц]: что пишут фронтенд-инженеры при кодировании веб-страницCSS 像素
необходимо основываться на设备像素比
для преобразования.
Соотношение пикселей устройства (DPR) = пиксели устройства / пиксели CSS идеального окна просмотра (ширина устройства), затем:
Пиксели CSS = пиксели дизайна/dpr.
масштабирование влияет布局视口
размер, когда мы увеличиваем и уменьшаем страницу на мобильной стороне, мы фактически изменяем размер пикселей CSS, в то время какЦель масштабирования — адаптировать пиксели CSS к пикселям мобильного устройства., и это масштабирование достигается за счет двух ключевых настроек элемента:
width=device-width,initial-scale=1/dpr
Что нужно сделать, так это сначала увеличить окно просмотра макета на время dpr, а затем масштабировать соответствующее время в целом, чтобы оно соответствовало размеру устройства, чтобы пиксели CSS и физические пиксели устройства могли быть один к одному.
var isAndroid = win.navigator.appVersion.match(/android/gi);
var isIPhone = win.navigator.appVersion.match(/iphone/gi);
var devicePixelRatio = win.devicePixelRatio;
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3;
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
dpr = 2;
} else {
dpr = 1;
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1;
}
scale = 1 / dpr;
💡rem — решить проблему разной ширины разных моделей, а scale — решить проблему dpr. Мобильная адаптация не имеет отношения к дпр.
Решение Taobao использует dpr для решения проблемы 1px, в то время как решение Netease не вводит dpr, область просмотра макета не увеличивается, и вся страница не масштабируется, но это не влияет на пропорции дизайна.
➹Действительно, мобильное изменение размера не имеет ничего общего с dpr
➹Подробно объясните понятие адаптации.
Поняв вышеуказанные проблемы, мы освоили суть мобильной самоадаптации, чтобы мы могли осуществлять фактическое развитие.
🙋После того, как я получил проект дизайна, с чего мне начать?
через вышеуказанноеrem
Преобразование, мы можем знать, как преобразовать визуальный проект (750px
) элементов вpx
преобразовать вrem
.
(1) Установите размер шрифта html, например, разделив экран мобильного телефона на 10 частей:
<script>
var dpr = window.devicePixelRatio;
var meta = document.createElement('meta');
// dpr
meta.setAttribute('content', 'initial-scale=' + 1 / dpr + ', maximum-scale=' + 1 / dpr + ', minimum-scale=' + 1 / dpr + ', user-scalable=no');
document.getElementsByTagName('head')[0].appendChild(meta);
// rem
document.addEventListener('DOMContentLoaded', function (e) {
document.getElementsByTagName('html')[0].style.fontSize = window.innerWidth / 10 + 'px';
}, false);
</script>
(2) Предположим, что ширина элемента равна300px
, то ширина элемента:
Автоматическое преобразование может быть достигнуто с помощью следующих схем:
✔Scssплан
$ue-width: 750; /* ue图的宽度 */
@function px2rem($px) {
@return #{$px/$ue-width*10}rem;
}
p {
width: px2rem(100);
}
✔ в vscodepx
прибытьrem
преобразование:vscode-cssrem
✔postcss-pxtoremплан
// postcss.config.js
const pxtorem = require('postcss-pxtorem');
const pxtoremOpts = {
rootValue: 16, // 根字体大小,默认16
unitPrecision: 5, // 精度
propList: ['font', 'font-size', 'line-height', 'letter-spacing'], // 可以将px转换成rem的属性
selectorBlackList: [], // 选择器忽略并保留px
replace: true, // 替换包含rems的规则
mediaQuery: false, // 是否允许在媒体查询中转换px
minPixelValue: 2 // 设置要替换的最小像素值
};
module.exports = {
plugins: [
pxtorem(pxtoremOpts),
],
};
5. Общие разрешения мобильных терминалов
нажмитеDEVICE METRICSПосмотреть дополнительные параметры терминального оборудования.
➹ Ссылка
- viewport
- Связанные с адаптацией
- Что нужно знать о мобильной адаптации
- Действительно, мобильное изменение размера не имеет ничего общего с dpr
- Использование Flexible для реализации терминальной адаптации страницы H5 Taobao —— Да Мо
- Подробно объясните понятие адаптации.
- Насколько хорошо вы разбираетесь в мобильной адаптации?
- Мобильное адаптивное решение HTML5 и ловушка
- мобильная веб-разработка
- A Действительно учит вас разрабатывать статью страницы мобильной связи (а)
- rem
- инструмент ➹Использование PostCSS для решения проблемы адаптации мобильных REM➹VsCode устанавливает плагин cssrem для преобразования px в rem➹Простая в использовании рекомендация по плагину px to rem➹px и rem онлайн-инструмент конвертации