可视化大屏页面适配方案

434 阅读46分钟

常见的屏幕尺寸:

  • 1280 * 720 : 笔记本
  • 1366 * 768 : 普通液晶显示器
  • 1920 * 1080: 高清液晶显示器
  • 2560 * 1440: 2K高清显示器
  • 4096 * 2160: 4K高清显示器

接下来按照1920*1080为例进行的操作:

一、zoom,火狐浏览器全系列不支持CSS的zoom缩放属性。

1、windows 页面在谷歌浏览器适配正常,edge浏览器基本正常,少量的位置偏移

2、mac 谷歌浏览器适配正常 ,edge浏览器基本正常,少量的位置偏移, safary浏览器显示位置错乱

3、使用zoom浏览器图表选中效果错位(通过在图标位置反向zoom可以解决这个问题)

二、transform

transform:scale(..);
transform-origin:..;

1、各浏览器适配正常,始终以变化大的一边为基础进行缩放

function bodyScale() {          var devicewidth = document.documentElement.clientWidth;          var deviceheight = document.documentElement.clientHeight;          // if (navigator.userAgent.indexOf('Firefox') >= 0) {            var scale = (devicewidth / 1920).toFixed(2);  // 分母——设计稿的尺寸宽度            let left = (1920-devicewidth)/2            var scaleHeight = (deviceheight/1080).toFixed(2)            let top = (1080-deviceheight)/2            let element = document.getElementsByClassName('BasicLayout')[0]            let elementApp = document.getElementById('app')            if(scale < scaleHeight){              element.style.transform = 'scale('+scale +')';              let top = (deviceheight - element.scrollHeight * scale)/2              let left = (elementApp.clientWidth - element.scrollWidth * scale )/2              element.style.top = top + 'px'              element.style.left = left + 'px'            }else{              let left = (devicewidth - element.scrollWidth * scaleHeight )/2              element.style.transform = 'scale('+scaleHeight+')';              let top = (elementApp.clientHeight -element.scrollHeight * scaleHeight)/2              element.style.top = top + 'px'              element.style.left = left + 'px'            }      }      window.onload = window.onresize = function () {          bodyScale();      };

2、强制铺满

 element.style.transform =  "scale(" + scale + "," + scaleHeight + ")", element.style.transformOrigin =  "left top", element.style.backgroundSize =  "100% 100%"

3、按照屏幕原比例溢出滚动展示

不做以上除了即可实现

三、rem+grid(或百分比)

当页面首次加载时,判断视口的宽高,如果视口的宽/高 > 16/9 则说明视口宽度比较设计图宽,实际的显示宽度应该等于视口的高度*16/9。

如果视口的宽/高 < 16/9 则说明视口高度比设计图高,实际的显示宽度应该等于视口的宽度,显示高度应等于视口宽度 / (16/9)。

然后设置 font-size: pageWidth / 100 px,这样就可以做到100rem等于100% width,之后所有大小的设置都通过rem来做即可。

四、vw和vh适配方案

屏幕视口宽度 = 100vw,屏幕视口高度 = 100vh

vw和vh也是css中标准的单位,和px,rem, %一样 vw和vh适配方案,按照设计稿的尺寸,将px按比例计算转为vwvh

**注意事项**

三和四需要保持所有的页面设置都保持一直(图表要根据页面变化而变化)
scale 进行缩小缩放时候,虽然内容缩小了,但是占用的空间却没有变化。zoom 最初仅在 Internet Explorer 中实现。尽管其他一些浏览器也支持该属性,但推荐使用transform: scale() 来缩放内容。transform: scale() 与 zoom 的工作方式不同。
例如,如果在 html 或 body 元素上使用transform: scale(0.6) ,那么它会调整整个页面的大小,显示一个缩小的页面,周围有巨大的白色边距,而 zoom: 0.6 缩放页面上的元素,但不缩放绘制元素的页面本身。