vue项目中实现网页整体随屏幕尺寸缩放亲测 真实有效

Posted 水香木鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue项目中实现网页整体随屏幕尺寸缩放亲测 真实有效相关的知识,希望对你有一定的参考价值。

此处的项目为vue2版本,因为pc端的项目没有采用响应式自适应手机端的设计,所以使用lodash插件实现屏幕移动端自适应。

首先下载lodash插件。

npm i lodash -S

然后在App.vue中导入,此处的App.vue主要指的是主框架,因不同项目可自行选择。

import _ from 'lodash'

然后给app容器挂上ref=“app”

<template>
    <div id="app" ref="app">
      <router-view />
    </div>
</template>

然后在mounted使用如下方法(其中的1080以及1920为定义的画布尺寸):

<script>
import _ from "lodash";
export default 
  name: "App",
  mounted() 
    this.$nextTick(() => 
      const $app = this.$refs.app;
      // 设置 屏幕 百分比 尺寸 适配
      const standardScale = "100%" / "100%";

      window.addEventListener(
        "resize",
        _.debounce(function () 
          const docHeight = document.body.clientHeight;
          const docWidth = document.body.clientWidth;

          if (docWidth < 1680) 
            const currentScale = docHeight / docWidth;
            let [scale, translate] = [0, 0];
            if (currentScale < standardScale) 
              // 以高度计算
              scale = docHeight / 1080;
              const shouleWidth = 1920 * scale;
         
              const offsetWidth = docWidth - shouleWidth;
              translate =
                offsetWidth > 0 ? `translate($offsetWidth / 2px, 0)` : "";
             else 
              // 以宽度计算
              scale = docWidth / 1920;
              const shouleHeight = 1080 * scale;
              const offsetHeight = docHeight - shouleHeight;
              translate =
                offsetHeight > 0 ? `translate(0, $offsetHeight / 2px)` : "";
            
            console.log(translate);
            $app.style.cssText = `
            transform: scale($scale) $translate;
            transform-origin: top left;
            min-width: 1920px;
            min-height: 1080px;
          `;
           else 
            $app.style.cssText = "";
          
        ),
        300
      );

      if (document.createEvent) 
        var event = document.createEvent("htmlEvents");
        event.initEvent("resize", true, true);
        window.dispatchEvent(event);
       else if (document.createEventObject) 
        window.fireEvent("onresize");
      
    );
  ,
;

以上是关于vue项目中实现网页整体随屏幕尺寸缩放亲测 真实有效的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目中实现改变屏幕尺寸重新刷新页面-计算页面尺寸

UITabBar 宽度不随屏幕尺寸增加

Vue-cli 3.x 中实现页面等比缩放(postcss-px2rem)

DELPHI 怎么加载模版 在窗体内打开网页 网页随窗体的大小而自动改变 窗体随屏幕的大小而自动改变

VUE3 中实现拖拽和缩放自定义看板 vue-grid-layout

在Vue项目中实现数据可视化操作