在开发大屏项目的时候,有多种方式进行开发
【大屏项目开发,等比缩放】比如:
- 1.使用rem等类似的自适应单位进行开发,开发效率较高,不用单独处理其他适配;但是在PC端进行屏幕缩放的时候会存在问题
- 2.使用多媒体查询,对多个屏幕阶段进行适配特定的css文件,这种可操作性最高,最完美,但是工作量比较多
- 3.使用css3 transform:scale(),进行缩放,通过resize监测屏幕可视度宽度
暂时用了第三种方式,写一个共用的方法
export function resize(id){
let docWidth = document.documentElement.clientWidth;
let docHeight = document.documentElement.clientHeight;
let container = document.getElementById(id);
var designWidth = 1920,
designHeight = 1080,
widthRatio = docWidth / designWidth,
heightRatio = docHeight / designHeight;
container.style=`transform:scale(${widthRatio},${heightRatio}) translate3d(0,0,0);
transform-origin:left top;
`;
setTimeout(function(){
var lateWidth= document.documentElement.clientWidth,
lateHeight = document.documentElement.clientHeight;
if(lateWidth===docWidth) return;
widthRatio = lateWidth/ designWidth
heightRatio = lateHeight/ designHeight
container.style = "transform:scale(" + widthRatio + "," + heightRatio + ") translate3d(0,0,0);
transform-origin:left top;
"
},0);
}
这种写法有一个问题,就是高度也进行压缩的话,页面就会变形,可以只压缩宽度
推荐阅读
- 微信小程序|微信小程序组件
- 程序|Ant Design Vue 2.x+ 支持所有的现代浏览器。
- Vue|vue中axios封装请求
- typeScript|TypeScript接口与泛型的使用
- typeScript|vue中的axios的请求(一)
- vue|Vue的axios封装
- css|css子元素选择父元素的实现
- javascript|Async 的用法
- promise|promise和async+await