大屏项目开发,等比缩放

异步星轨
• 阅读 1054

在开发大屏项目的时候,有多种方式进行开发

比如:

  • 1.使用rem等类似的自适应单位进行开发,开发效率较高,不用单独处理其他适配;但是在PC端进行屏幕缩放的时候会存在问题
  • 2.使用多媒体查询,对多个屏幕阶段进行适配特定的css文件,这种可操作性最高,最完美,但是工作量比较多
  • 3.使用css3 transform:scale(),进行缩放,通过resize监测屏幕可视度宽度
暂时用了第三种方式,写一个共用的方法
// 导出resize方法
export function resize(id){
  let docWidth = document.documentElement.clientWidth;
  let docHeight = document.documentElement.clientHeight; // 当前浏览器可视范围高度
  let container = document.getElementById(id);
  let emptyHeight = container.getBoundingClientRect().height; // 被缩放后的盒子高度(这个高度可能是窗口还原(变化)前的高度不够准确)
  let centerTopNumber = docHeight - emptyHeight > 0 ? (docHeight-emptyHeight)/2 : 0; // 计算当前元素是否占满可视范围,如果占满定位从0开始
  var designWidth = 1920,
      designHeight = 1080,
      widthRatio = docWidth / designWidth;
      // heightRatio = docHeight / designHeight;
      container.style=`transform:scale(${widthRatio}) translate3d(0%,0%,0);transform-origin:left top;position:absolute;top:${centerTopNumber}px;`;
  setTimeout(function(){
      var lateWidth= document.documentElement.clientWidth,
        lateHeight = document.documentElement.clientHeight;
      let emptyHeight2 = container.getBoundingClientRect().height; // 被缩放后的盒子高度(这个高度能够准确知道窗口变化后的高度)
      let centerTopNumber2 = lateHeight - emptyHeight2 > 0 ? (lateHeight-emptyHeight2)/2 : 0; // 计算当前元素是否占满可视范围,如果占满定位从0开始,如果没占满就取空白位置的1/2
      // if(lateWidth===docWidth) return;
      widthRatio = lateWidth/ designWidth;
      // heightRatio = lateHeight/ designHeight
      container.style = "transform:scale(" + widthRatio + ") translate3d(0%,0%,0);transform-origin:left top;position:absolute;top:"+centerTopNumber2+"px;"
  },0);
}
点赞
收藏
评论区
推荐文章
翼
4年前
vue-cli3 中使用rem布局
1.装包postcsspx2rem及px2remloadernpminstallpostcsspx2rempx2remloadersave2.在根目录src中新建utils目录下新建rem.js等比适配文件,内容如下//rem等比适配配置文件//基准大小constbaseSize16//设置rem
菜园前端 菜园前端
2年前
CSS布局方式-自适应布局
原文链接:什么是自适应布局?在不同屏幕分辨率下,能够以最佳的方式进行展示,元素的宽度尺寸可能会改变,但是原有的展示方式不会改变。通常使用%单位来实现自适应布局。优点页面能够兼容不同分辨率的屏幕。缺点因为开发的时候需要考虑多种分辨率下的情况,会额外增加一些工
Wesley13 Wesley13
3年前
iOS 开发屏幕适配尺寸
iPhone4         width 320        height 480iPhone5/5s      width 320        height 568iPhone6         width 375  
Jacquelyn38 Jacquelyn38
4年前
从0到1搭建一款页面自适应组件(Vue.js)
组件将根据屏幕比例及当前浏览器窗口大小,自动进行缩放处理。建议在组件内使用百分比搭配flex进行布局,以便于在不同的分辨率下得到较为一致的展示效果。使用前请注意将body的margin设为0,否则会引起计算误差。fullScreenContainer.vue<template<divid"fullscreencontainer":ref"ref
kenx kenx
3年前
mybatis if else if 条件判断SQL片段表达式取值和拼接
前言最近在开发项目的时候涉及到复杂的动态条件查询,但是mybaits本身不支持ifelseif类似的判断但是我们可以间接通过chosewhenotherwise去实现其中choose为一个整体when是ifotherwise是else快速使用以前我们进行条件判断时候使用if标签进行判断,条件并列存在xml
Chase620 Chase620
4年前
vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
vuecli3.0结合libflexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题公司最近做的一个移动端项目从搭框架到前端开发由我独立完成,以前做移动端适配用的媒体查询,这次想用点别的适配方案,然后就采用了vuecli3.0结合libflexible、px2rem实现移动端适配的方案,开发过程中也遇到一些坑,自己选的方案自己
Stella981 Stella981
3年前
ReactNative全面屏(Android)适配问题
现在是全面屏的时代,Android手机现在也是各种全面屏,“刘海屏”,“弹出摄像头”,"水滴屏",“挖孔屏”,伴随着科技的飞速发展,各种提高屏占比的方案也是层出不穷,有点“百花齐放百家争鸣”的感觉,哈哈。但是对于开发者来说,Android的屏幕适配就是一个富有挑战性的工作了。为了呈现更好的视觉效果,许多安卓OEM厂商都开始采用超大屏幕。三星刚刚发布了自己的
Stella981 Stella981
3年前
Egret屏幕适配【转】
Egret提供的屏幕适配的策略,及缺点:StageScaleMode.SHOW\_ALL     缺点:会产生黑边指定整个应用程序在指定区域中可见,且不会发生扭曲,同时保持应用程序的原始高宽比。应用程序的两侧可能会显示边框。在这种模式中,舞台尺寸永远会和最初的设置一致,这是入门开发者最适合的方式,但是这种方式的美中不足是,如果(手机或者PC等
Stella981 Stella981
3年前
SpringBoot2.x版本整合Redis进行数据缓存
项目放在github:在缓存开发中,有两个重要的接口:在这里面:  @Cacheable:  如果用这个注解标注在方法上,那么方法的结果就会被缓存存起来,这个多用于在查询的时候进行使用    比如: publicusergetuser(Integerid) 这个方法用这个注解标注的话,通过id查到的内容就会杯存在缓存中进行保存
Easter79 Easter79
3年前
SpringBoot2.x版本整合Redis进行数据缓存
项目放在github:在缓存开发中,有两个重要的接口:在这里面:  @Cacheable:  如果用这个注解标注在方法上,那么方法的结果就会被缓存存起来,这个多用于在查询的时候进行使用    比如: publicusergetuser(Integerid) 这个方法用这个注解标注的话,通过id查到的内容就会杯存在缓存中进行保存
为啥不建议用BeanUtils.copyProperties拷贝数据 | 京东云技术团队
在实际的业务开发中,我们经常会碰到VO、BO、PO、DTO等对象属性之间的赋值,当属性较多的时候我们使用get,set的方式进行赋值的工作量相对较大,因此很多人会选择使用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象