Вообще говоря, страница на стороне ПК не предъявляет особо жестких требований к разрешению и размеру экрана, как мобильный терминал, но для страницы типа отображения большого экрана данных необходимо продумать схему адаптации. необходимо обеспечить нормальное отображение на большинстве основных мониторов.
Почти все мониторы на рынке16:9
размер, то есть1920 * 1080
разрешающая способность.
идеальный эффект
-
Когда соотношение размеров экрана составляет точно 16:9, страница может отображаться в полноэкранном режиме, а содержимое заполняет дисплей.
-
Когда соотношение размеров экрана меньше 16:9, верх и низ страницы остаются пустыми, лево и право заполнены, а верх и низ располагаются по центру, а соотношение сторон остается 16:9.
-
Когда соотношение размеров экрана превышает 16:9, левая и правая стороны страницы остаются пустыми, верх и низ заполняются и центрируются, а соотношение сторон остается 16:9.
При изменении размера экрана динамически вычисляйте коэффициент отображения промежуточного содержимого, чтобы содержимое оставалось 16:9.
решение
rem
rem(font size of the root element)
, — это новая единица размера в css3, то есть размер относительно значения размера шрифта корневого элемента.
Идея состоит в том, чтобы динамически вычислить размер шрифта страницы, чтобы изменить размер rem.
идеи
Сначала возьмем в качестве примера стандартный размер экрана 1920*1080. Разделить экран на10
Части, первые вычисленияrem的基准值:
1920/10 = 192, затем включите всю длину, широкую, положение и размер шрифта и т. Д. Исходное устройство PX преобразуется в REM. После загрузки используйте JS для расчета ширины текущего браузера и установите шрифт HTML -Саризовать. для (当前浏览器窗口宽度 / 10
), поэтому 10rem просто равно ширине окна браузера. Он также может обеспечить 100% ширину и пропорционально масштабировать страницу проекта дизайна.
Две вещи:
- Получите базовое значение rem. По умолчанию ширина контейнера установлена 1920*1080, а затем 1920/192 используется для расчета значения rem
- Напишите кусок кода js на странице для динамического расчета
html根元素的font-size
выполнить
Стоя на плечах гигантов, нам не нужно переходить от 0 к 1, чтобы удовлетворить две потребности.
Для первого пункта:
- Установить первым
@njleonzhang/postcss-px-to-rem
эта сумка
npm i @njleonzhang/postcss-px-to-rem -D
- новый
.postcssrc.js
конфигурационный файл
module.exports = {
plugins: {
autoprefixer: {},
"@njleonzhang/postcss-px-to-rem": {
unitToConvert: 'px', // (String) 要转换的单位,默认是px。
widthOfDesignLayout: 1920, // (Number) 设计布局的宽度。对于pc仪表盘,一般是1920.
unitPrecision: 3, // (Number) 允许 REM 单位增长到的十进制数字.
selectorBlackList: ['.ignore', '.hairlines'], // (Array) 要忽略并保留为 px 的选择器.
minPixelValue: 1, // (Number) 设置要替换的最小像素值.
mediaQuery: false // (Boolean) 允许在媒体查询中转换 px.
}
}
}
- После завершения настройки px на странице будут преобразованы в rem.
По второму пункту:
-
Создайте новый файл rem.js и добавьте его в запись для динамического расчета размера шрифта.
(function init(screenRatioByDesign = 16 / 9) { let docEle = document.documentElement function setHtmlFontSize() { var screenRatio = docEle.clientWidth / docEle.clientHeight; var fontSize = ( screenRatio > screenRatioByDesign ? (screenRatioByDesign / screenRatio) : 1 ) * docEle.clientWidth / 10; docEle.style.fontSize = fontSize.toFixed(3) + "px"; console.log(docEle.style.fontSize); } setHtmlFontSize() window.addEventListener('resize', setHtmlFontSize) })()
К этому моменту страница уже может достичь адаптивного формата 16:9.