首页 > 其他分享 >大屏适配问题

大屏适配问题

时间:2023-06-17 23:13:45浏览次数:42  
标签:scale const 适配 50% height 问题 window 大屏 appRef

#appRef {
    width: 1920px; /* 设计图宽 */
    height: 1080px; /* 设计图高 */
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transform-origin: left top;
    overflow: hidden;
  }
// * 默认缩放值
    const scale = {
      width: '1',
      height: '1',
    }

    // * 设计稿尺寸(px)
    const baseWidth = 1920
    const baseHeight = 1080

    // * 需保持的比例
    const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5))

    let drawTiming = null
    calcRate()
    window.addEventListener('resize', resize)

    // * 初始化页面比例
    function calcRate() {
      const appRef = document.getElementById("appRef")
      if (!appRef) return
      // 当前宽高比
      const currentRate = parseFloat((window.innerWidth / window.innerHeight).toFixed(5))
      if (appRef) {
        if (currentRate > baseProportion) {
          // 表示更宽
          scale.width = ((window.innerHeight * baseProportion) / baseWidth).toFixed(5)
          scale.height = (window.innerHeight / baseHeight).toFixed(5)
          appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
        } else {
          // 表示更高
          scale.height = ((window.innerWidth / baseProportion) / baseHeight).toFixed(5)
          scale.width = (window.innerWidth / baseWidth).toFixed(5)
          appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
        }
      }
    }

    // * 窗口大小变化
    function resize() {
      clearTimeout(drawTiming)
      // 加延迟是为了更好的看到变化的过程,不需要的可以不用
      drawTiming = setTimeout(() => {
        calcRate()
      }, 200)
    }
<div id="appRef">
    内容
</div>

 

标签:scale,const,适配,50%,height,问题,window,大屏,appRef
From: https://www.cnblogs.com/dlx609/p/17488450.html

相关文章

  • python--python脚本中保存处理后的音频文件到指定文件夹时报错permission denied 的问
    问题1:自己编写的python脚本中,将处理后的音频文件保存到指定的文件夹(用到了pydub库对音频文件进行处理),但保存处理后的文件到指定文件夹时,会报错permissiondenied的错误,如下截图解决思路:一开始网上查资料,基本上都是说文件夹没有读写权限,让设置文件夹权限等操作,但设置了之后还是......
  • python--python脚本编写时遇到的问题记录
    问题1:github上下载自动化的项目到本地,然后通过pycharm打开项目,项目中的import其他目录下的文件,会显示红色波浪线,并报错提示:Thisinspectiondetectsnamesthatshouldresolvebutdon’t.Duetodynamicdispatchandducktyping,thisispossibleinalimitedbutuseful......
  • # yyds干货盘点 # 盘点一个Pandas日期处理的问题
    大家好,我是皮皮。一、前言前几天在Python群里【爱的力量】问了一个Python日期处理的问题,这里拿出来给大家分享下。'2022-03-2508:00:00.000000000'大佬们,这种格式的字符串有什么简单的方法可以转换为2022年3月25日8时吗?这里他自己也写了一个代码,如下所示:x='2022-03-2508:00:00......
  • JDK17与Hbase client的兼容性问题
    最近有1个项目升级到JDK17,里面用到了hbase-client(版本:以1.2.0-cdh5.7.1为基础,公司的大数据同学内部做了一些二次开发),启动时发现一直连不上集群,直接报错了,上hbase官网看了下:别说JDK17了,连JDK11都支持不完善,难道把JDK版本又降回去?有点不甘心,又搜索了一些资料,找到了几篇文档:htt......
  • PySide6(Qt for Python) QTableWidget表头边框线问题
    这个问题是在Windows10平台下特有问题。网络上有很多QtC++的解决方案。但是没有特定的PySide6的解决方案(以下是参考的QtC++的解决方案)。链接:https://blog.csdn.net/qq_22642239/article/details/122863344问题描述C++的解决方案是设置纵横表头的样式表:horizontalHeader,v......
  • 设计模式:适配器模式(论如何把鼠头适配成鸭脖)
    适配器模式(AdapterPattern)有时候也称包装样式或者包装,是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口。适配器模式可以让原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式有三种类型:类适配器模式、对象适配器模式和接口适配器模式......
  • https请求报Connection reset问题
    背景:使用HttpsURLconnection或者HttpURLConnection进行https请求时,有时会报Connectionreset异常原因:这是因为客户端的TLS版本服务端不支持的原因。对于JDK1.6,支持SSLv2、SSLv3、TLSv1,默认使用TLSv1对于JDK1.7,支持SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2,默认使用TLSv1.1对于JDK1.8......
  • mybatis 3.x 升级时遇到的keyProperty问题小坑
    背景:有1个项目,原来是用的mybatis3.4.6版本,其中有一些插入mapper是这样写的:IntegerinsertEntitySelectiveShard(@Param("tableSuffix")StringtableSuffix,@Param("entity")XXXEntityentity);对应的xml片段:<insertid="insertEntitySelectiveShard"par......
  • 使用tcpdump+wirkshark分析nginx反向代理无法访问问题
    问题描述在使用nginx配置多路径反向代理后端prometheus应用的时候由于prometheus本身是自动跳转到/graph才能正常访问,而使用nginx反向代理如果只是配置简单的http_proxy到后端prometheus的端口会报404错误,以下是具体的配置和报错:location/prometheus{proxy_p......
  • 当前高校火灾隐患问题分析及预防校园火灾知识介绍
    安科瑞虞佳豪近几年,随着高校的扩招,高校的师生也在不断增加,办学规模不断扩大。而校园作为特殊的公共场所,都有个共同特点:场地分散、积大、管理人员少,学生人数众、活泼好动、防范意识差。学校的实验室、学生活动中心、运动场、图书馆、学生宿舍、餐厅、教学楼等公共场合都存在电气火灾......