Визуализация данных во внешнем интерфейсе становится все более и более важной, и все больше и больше требований к крутым и большим экранам Вас часто беспокоит неспособность экрана адаптироваться? Как восстановить эскиз проекта в высокой степени? Как представить идеальный эффект на различных терминалах? Возможно, эта статья поможет вам
Когда соотношение сторон экрана меньше расчетного, экран будет закрыт в горизонтальном направлении в соответствии с проектным соотношением. Когда соотношение сторон экрана больше, чем расчетный набросок, он заполняет экран по вертикали в соответствии с расчетным коэффициентом наброска. При пропорциональном масштабировании, независимо от размера экрана или разрешения, можно получить идеальный эффект, как показано на рисунке ниже.
В этой статье обобщаются два адаптивных метода для больших экранов, основанные на пропорциональном масштабировании. Возьмите следующий макет в качестве примера для иллюстрации.
<div className="screen-wrapper">
<div className="screen" id="screen">
<div class="section">A</div>
<div class="section">B</div>
<div class="section">C</div>
<div class="section">D</div>
<div class="section">E</div>
</div>
</div>
1. Адаптивный метод на основе преобразования
Сначала рассчитайте коэффициент масштабирования и динамически установите коэффициент масштабирования элемента
function setScale(){
let designWidth = 1366;//设计稿的宽度,根据实际项目调整
let designHeight = 768;//设计稿的高度,根据实际项目调整
let scale = document.documentElement.clientWidth/document.documentElement.clientHeight < designWidth/designHeight ?
(document.documentElement.clientWidth / designWidth):
(document.documentElement.clientHeight / designHeight);
document.querySelector('#screen').style.transform = `scale(${scale}) translate(-50%)`;
}
window.onresize = function () {
setScale()
};
Затем установите стиль, и размер элемента будет полностью установлен в соответствии с размером эскиза дизайна. Код выглядит следующим образом:
$design_width: 1366px;//设计稿的宽度,根据实际项目调整
$design_height: 768px;//设计稿的高度,根据实际项目调整
.screen-wrapper {
height: 100vh;
width: 100vw;
background-color: aqua;
.screen{
display: inline-block;
width: $design_width;
height: $design_height;
background: yellow;
transform-origin: 0 0;
position: absolute;
left: 50%;
.section{
height: 200px;
width: 200px;
outline: 1px solid #ddd;
line-height: 200px;
font-size: 40px;
text-align: center;
display: inline-block;
}
}
}
Эффект реализации показан на рисунке ниже.Как бы ни менялся экран, содержимое экрана отображается в пропорциональном масштабе, деформации и смещения элементов не будет. Когда пропорция экрана такая же, как у проекта дизайна, он покажет лучший эффект.
2. адаптивный метод на основе rem
Сначала вычислите коэффициент масштабирования, динамически устанавливаемый в соответствии с размером экрана, значением fontSize корневого элемента html.
setFontSize()
function setFontSize(){
let designWidth = 1366;//设计稿的宽度,根据实际项目调整
let designHeight = 768;//设计稿的高度,根据实际项目调整
var fontSize =
document.documentElement.clientWidth/document.documentElement.clientHeight < designWidth/designHeight ?
(document.documentElement.clientWidth / designWidth) * 12:
(document.documentElement.clientHeight / designHeight) * 12;
document.querySelector('html').style.fontSize = fontSize + 'px';
}
window.onresize = function () {
setFontSize()
};
Чтобы задать стиль, вам нужно преобразовать единицу измерения элемента px в rem.
$design_width: 1366;//设计稿的宽度,根据实际项目调整
$design_height: 768;//设计稿的高度,根据实际项目调整
@function px2rem($px) {
$design_font_size: 12;
@return ($px/$design_font_size) + rem;
}
.screen-wrapper {
height: 100vh;
width: 100vw;
background-color: aqua;
display: flex;
flex-direction: row;
justify-content: center;
.screen{
display: flex;
flex-direction: row;
justify-content: center;
width: px2rem($design_width);
height: px2rem($design_height);
background: pink;
.section{
height: px2rem(200);
width: px2rem(200);
border: 1px solid #000;
line-height: px2rem(200);
font-size: px2rem(100);
margin: px2rem(20);
text-align: center;
display: inline-block;
}
}
}
Как показано на рисунке ниже, содержимое также отображается в соответствии с пропорцией проекта дизайна.Как бы ни менялся экран, содержимое отображается в пропорциональном масштабе, и деформации и смещения элементов не будет. Когда пропорция экрана такая же, как у проекта дизайна, он покажет лучший эффект.
3. Резюме
- Преимущество решения, основанного на трансформационном масштабировании, состоит в том, что размер элемента устанавливается в соответствии с чертежом проекта без преобразования единицы длины. Недостатком является то, что при увеличении дисплея диаграммы, такие как электронные карты, будут искажены. Во избежание искажения диаграммы дизайн эскизного проекта должен быть разработан в соответствии с размером большого экрана, чтобы его можно было отобразить на экране в уменьшенном размере. Например, если 1920*1080 и 1366*768 являются черновиками формата 16:9, они должны быть разработаны в размере 1920*1080.
- Для схемы масштабирования на основе rem единицу длины элемента необходимо преобразовать в rem. При увеличении искажения графика не будет. Когда размер шрифта корневого элемента уменьшен до