首页 > 其他分享 >pc端自适应&&移动端rem适配代码

pc端自适应&&移动端rem适配代码

时间:2023-10-13 09:34:35浏览次数:23  
标签:function 端自 documentElement 适配 pc setFont addEventListener var document

第一种

俺写在index.html中的head标签与body标签中间(2560是pc端设计稿的宽度):

  <script>
    //设置 webview 字体大小不受系统修改而改变
    (function () {
      if (window.HiSpaceObject) {
        window.HiSpaceObject.setTextSizeNormal();
      }
    })();
    //屏幕适应
    (function (win, doc) {
      if (!win.addEventListener) return;
      var html = document.documentElement;

      function setFont() {
        var html = document.documentElement;
        var k = 2560;
        html.style.fontSize = (html.clientWidth / k) * 100 + "px";
      }

      setFont();
      setTimeout(function () {
        setFont();
      }, 300);
      doc.addEventListener("DOMContentLoaded", setFont, false);
      win.addEventListener("resize", setFont, false);
      win.addEventListener("load", setFont, false);
    })(window, document);
  </script>

  

第二种

在utils文件夹下新建rem.js文件(copy别人的代码,因为我拿到的设计稿是1080的宽度,所以用1080来计算):

const setFontSize = (minFontSize = 12, maxFontSize = 16) => {
  window.onresize = () => {
    // 7.5根据设计稿的横向分辨率/100得来
    var deviceWidth = document.documentElement.clientWidth;
    // 获取浏览器宽度
    if (deviceWidth > 750) {
      deviceWidth = 10.8 * 50;
    } else if (!deviceWidth) {
      return;
    }
    // 此时的fontSize大小为50px(375屏幕的时候)
    document.documentElement.style.fontSize = `${deviceWidth / 10.8}px`;

    // 禁止双击放大
    document.documentElement.addEventListener(
      "touchstart",
      function (event) {
        if (event.touches.length > 1) {
          event.preventDefault();
        }
      },
      false
    );
    var lastTouchEnd = 0;
    document.documentElement.addEventListener(
      "touchend",
      function (event) {
        var now = Date.now();
        if (now - lastTouchEnd <= 300) {
          event.preventDefault();
        }
        lastTouchEnd = now;
      },
      false
    );
  };
};
export default {
  setFontSize,
};

  

然后在main.js中引入:

import Rem from "./utils/rem";


Rem.setFontSize();

 

标签:function,端自,documentElement,适配,pc,setFont,addEventListener,var,document
From: https://www.cnblogs.com/nangras/p/17761141.html

相关文章

  • django 结合rpc服务传输
    1概述2基础依赖3定义服务和消息4生成gRPC代码5创建服务和客户端服务6启动服务端和客户端7Django中集成gRPC8安全认证方面9健康检测10相关文档生成概述gRPC(gRPCRemoteProcedureCall)是一种高性能、跨语言的远程过程调用(RPC)框架,由Google开发并......
  • 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror
    有五种种类的垃圾,数量分别为\(a_1,a_2,a_3,a_4,a_5\)。第一种为纸质垃圾第二种为塑料垃圾第三种双非垃圾第四种基本纸质垃圾第五种基本塑料垃圾有三种垃圾桶,容量分别为\(c_1,c_2,c_3\)。第一种垃圾桶可以放入:纸质垃圾和基本纸质垃圾第二种垃圾桶可以放入:塑料......
  • 【OPCUA】UA_String转为QString
     字符串:UA_String typedef struct{ size_t length; UA_Byte* data;}UA_String; 生成UA_String的API有三个UA_STRING,UA_STRING_ALLOC,UA_STRING_STATICUA_STRING        - 包装现有数据(实际应用中,会有一些莫名其妙的问题)UA_STRING_ALLO......
  • 获取打印机时候报错 RPC 服务不可用
    检查以下几个服务状态是否正常PrintSpoolerRemoteProcedureCall(RPC)RemoteProcedureCall(RPC)LocatorDCOMServerProcessLauncher......
  • HarmonyOS跨进程通信—IPC与RPC通信开发指导
    HarmonyOS跨进程通信—IPC与RPC通信开发指导一、IPC与RPC通信概述基本概念IPC(Inter-ProcessCommunication)与RPC(RemoteProcedureCall)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进程通信。需要跨进程通信的原因是因为......
  • vue cli2 3 4使用lib-flexible px2rem完美解决移动端适配问题
    安装lib-flexible$npminstalllib-flexible--savelib-fiexble,lib-flexible会自动在html的head中添加一个metaname="viewport"的标签,同时会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size。假如设计稿的宽度是750px,此时1rem应该等于75px。......
  • 使用httpclient实现后台通过接口上传文件
    请求端:varupurl=Config.GetValue("fileupUrl");HttpPostedFilefile=files[0];MemoryStreammemoryStream=newMemoryStream();file.InputStream.CopyTo(memoryStream);byte[]fileBytes=memoryStream.ToArray();objectsendScObj......
  • 适配器模式
        ......
  • 浏览器可直接访问 Dubbo、gRPC 后端微服务,Dubbo-js 首个alpha 版本来了!
    作者:蔡建怿基于Dubbo3定义的Triple协议,你可以轻松编写浏览器、gRPC兼容的RPC服务,并让这些服务同时运行在HTTP/1和HTTP/2上。DubboTypeScriptSDK[1]支持使用IDL或编程语言特有的方式定义服务,并提供一套轻量的APl来发布或调用这些服务。Dubbo-js已于9月份......
  • 三个主要降维技术对比介绍:PCA, LCA,SVD
    前言 本文将深入研究三种强大的降维技术——主成分分析(PCA)、线性判别分析(LDA)和奇异值分解(SVD)。我们不仅介绍这些方法的基本算法,而且提供各自的优点和缺点。本文转载自DeepHubIMBA作者:IndraneelDuttaBaruah仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专......