大屏适配方式

三大常用方式

vw/vh方案

概述:按照设计稿的尺寸,将px按比例计算转为vw和vh
优点:可以动态计算图表的宽高,字体等,灵活性较高,当屏幕比例跟 ui 稿不一致时,不会出现两边留白情况
缺点:每个图表都需要单独做字体、间距、位移的适配,比较麻烦

scale方案

概述:也是目前效果最好的一个方案
优点:代码量少,适配简单 、一次处理后不需要在各个图表中再去单独适配.
缺点:留白,有事件热区偏移,下面介绍的autofit.js已经完全解决了此问题

rem + vw vh方案

概述:这名字一听就麻烦,具体方法为获得 rem 的基准值 ,动态的计算html根元素的font-size ,图表中通过 vw vh 动态计算字体、间距、位移等
优点:布局的自适应代码量少,适配简单
缺点:留白,有时图表需要单独适配字体

当浏览器窗口比设计稿大或者小的时候,就应该触发缩放,但是比例不一定,如果按照scale等比缩放时,宽度从1920缩小0.8倍也就是1536,而高度缩小0.8也就是743,如果此时浏览器高度过高,那么就会出现下方的白边,根据高材生所说的,缩小0.8后只需要放大八分之十就可以变回原大小,所以以现在的高度743*1.25=928,使宽度=928px就可以完全充满白边!

思路是正确的,但是能不能再简单一点

是浏览器高度!我忽略了浏览器高度,我可以直接使用浏览器高度乘以1.25然后再缩放达0.8!就是 1 !

也就是说 clientHeight / scale 就等于我们需要的高度!
function keepFit(designWidth, designHeight, renderDom) {
  let clientHeight = document.documentElement.clientHeight;
  let clientWidth = document.documentElement.clientWidth;
  let scale = 1;
  if (clientWidth / clientHeight < designWidth / designHeight) {
    scale = (clientWidth / designWidth)
    document.querySelector(renderDom).style.height = `${clientHeight / scale}px`;
  } else {
    scale = (clientHeight / designHeight)
    document.querySelector(renderDom).style.width = `${clientWidth / scale}px`;
  }
  document.querySelector(renderDom).style.transform = `scale(${scale})`;
}


解释一下:

参数分别是:设计稿的宽高和你要适配的元素,在vue中可以直接传#app。

下面的if判断的是宽度固定还是高度固定,当屏幕宽高比小于设计宽高比时,

我们把高度写成 clientHeight / scale ,宽度也是同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值