• 前端自动按比例缩放页面,使DateV实现在pc端,平板,手机,均可展现看板内容


    使用 http://datav.jiaminghi.com/ DataV

    问题1 在浏览器没有全屏时 会有部分被遮盖住 无法查看

     问题二 同时,使用手机端浏览器 平板浏览器查看时样式

     

    问题1解决方法

    添加隐藏滚动条

     

    1动态监听当前页面可视高度

    2.使用element隐藏组件 滚动条 el-scrollbar  https://www.cnblogs.com/aknife/p/14898243.html

    <template>
      <div id="data-view">
        <dv-full-screen-container> //dataV容器 第二个问题中将会删除
          <el-scrollbar
             :style="{ height: clientHeight + 'px' }"
             :native="false"
             wrapStyle=""
             wrapClass=""
             viewClass=""
             viewStyle=""
              :noresize="false"
              tag="section"
            >
             <div class="el-scrollbar__wrap_scrollBodyHidden">
    
               界面内容此处自己写
        
             </div>
           </el-scrollbar>
         </dv-full-screen-container> 
      </div>
    </template>
    export default {
      name: 'DataView',
      components: { 
      },
      data () {
        return { 
          clientHeight: 1080,//屏幕高度 
        }
      },
      unmounted () { //vue3中为unmounted  vue2中销毁为destroyed
    
    clearInterval(this.clientHeightTime)
      },
      created () { 
        this.clientHeightTime = setInterval(() => {
          if (this.clientHeight = (document.documentElement.clientHeight < 600 ? 1000 : (document.documentElement.clientHeight < 927 ? 1080 : document.documentElement.clientHeight))) {
            this.clientHeight = (document.documentElement.clientHeight < 600 ? 1000 : (document.documentElement.clientHeight < 927 ? 1080 : document.documentElement.clientHeight))
          }
        }, 500)
      }
    }

    样式

    
    
    .el-scrollbar__wrap {
      overflow-xhidden !important;
    }
    .el-scrollbar__wrap_scrollBodyHidden {
      width100%;
      overflowhidden;
    }
    
    

    问题2 解决 在手机端 ipad 保持缩放

    1.引入jq  不会自己百度

    2.添加 一个js文件 screenAdapt.js 名字自取

    import $ from 'jquery'
    export default {
      /**
       * 适应屏幕
       */
      screenAdapt () {
        window.global = window;
        (function () {
          if ($(window).width() >= 1920) {
            $(window).width() && $('body').css('width', $(window).width());
            $(window).height() && $('body').css('height', $(window).height());
          } else {
            $(window).width() && $('body').css('width', "1920px");
    
            var ratio = $(window).width() / (1920 || $('body').width());
            $('body').css({
              transform: "scale(" + ratio + ")",
              transformOrigin: "left top",
              backgroundSize: "100%",
              height: "1080px"
            });
          }
          $('head').append('<meta name="viewport" content="width=' + $(window).width() + '"/>');
    
    
          //监听页面是否发生改变
          $(window, document).resize(function () {
            resize();
          })
    
    
          function resize () {
            if (window.screen.display == 2) { // 等比缩放高度铺满
              resizeCenter();
            } else if (window.screen.display == 3) { //全屏铺满
              resizeFull();
            } else if (window.screen.display == 4) { //等比缩放高度铺满并且可以左右移动
              resizeHeight();
            } else { // 等比缩放宽度铺满
              resizeWidth();
            }
    
    
          }
          function resizeWidth () {
            window.location.reload()
            if ($(window).width() >= 1920) {
              var ratio = $(window).width() / ($(window).width() || $('body').width());
              $(window).height() && $('body').css('height', $(window).height());
            } else {
              $('body').css('height', "1080px");
            }
            var ratio = $(window).width() / (1920 || $('body').width());
            $('body').css({
              transform: "scale(" + ratio + ")",
              transformOrigin: "left top",
              backgroundSize: "100%"
            });
          }
          function resizeCenter () {
            if (!window.screen.height || !window.screen.width) return resizeCenterBak();
            var ratio = $(window).height() / window.screen.height;
    
    
            $('body').css({
              transform: "scale(" + ratio + ")",
              transformOrigin: "left top",
              backgroundSize: 100 * (window.screen.width / $(window).width() * ratio) + "%" + ' 100%',
              backgroundPosition: ($(window).width() - $('body').width() * ratio) / 2 + "px top",
              marginLeft: ($(window).width() - $('body').width() * ratio) / 2
            });
          }
    
    
          function resizeHeight () { //
            if (!window.screen.height || !window.screen.width) return resizeCenterBak();
            var ratio = $(window).height() / window.screen.height;
    
    
            $('body').css({
              transform: "scale(" + ratio + ")",
              transformOrigin: "left top",
              backgroundSize: 100 * (window.screen.width / $(window).width() * ratio) + "%" + ' 100%',
              backgroundPosition: ($(window).width() - $('body').width() * ratio) / 2 + "px top",
              // marginLeft: ($(window).width() - $('body').width() * ratio) / 2
            });
            $('html').css({
              overflowX: 'scroll',
            })
          }
    
    
          function resizeFull () {
            if (!window.screen.height || !window.screen.width) return resizeFullBak();
            var ratioX = $(window).width() / window.screen.width;
            var ratioY = $(window).height() / window.screen.height;
    
    
            $('body').css({
              transform: "scale(" + ratioX + ", " + ratioY + ")",
              transformOrigin: "left top",
              backgroundSize: "100% 100%",
            });
          }
    
    
          function resizeCenterBak () {
            var ratioX = $(window).width() / $('body').width();
            var ratioY = $(window).height() / $('body').height();
            var ratio = Math.min(ratioX, ratioY);
    
    
            $('body').css({
              transform: "scale(" + ratio + ")",
              transformOrigin: "left top",
              backgroundSize: (1 / ratioX) * 100 * ratio + "%",
              backgroundPosition: ($(window).width() - $('body').width() * ratio) / 2 + "px top",
              marginLeft: ($(window).width() - $('body').width() * ratio) / 2
            });
          }
          function resizeFullBak () {
            var ratioX = $(window).width() / $('body').width();
            var ratioY = $(window).height() / $('body').height();
    
    
            $('body').css({
              transform: "scale(" + ratioX + ", " + ratioY + ")",
              transformOrigin: "left top",
              backgroundSize: "100% " + ratioY * 100 + "%",
            });
          }
        })();
      }
    }

    在刚刚前面的页面中 引入

    import screenAdapt from "@/utils/system/screenAdapt"

    created 中添加 

    created () {
        screenAdapt.screenAdapt()
        this.clientHeightTime = setInterval(() => {
          if (this.clientHeight = (document.documentElement.clientHeight < 600 ? 1000 : (document.documentElement.clientHeight < 927 ? 1080 : document.documentElement.clientHeight))) {
            this.clientHeight = (document.documentElement.clientHeight < 600 ? 1000 : (document.documentElement.clientHeight < 927 ? 1080 : document.documentElement.clientHeight))
          }
        }, 500) 
      },

    删除template中DataV容器

    <dv-full-screen-container> </dv-full-screen-container>

    至此问题解决!!!

    展示下效果  这是竖屏效果  横屏效果更佳

    由于添加了滚动 横屏时部分浏览器展示不下的情况下 也可以用手指滚动

     

    本文作者:___mouM
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
    版权说明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.
  • 相关阅读:
    python的IDE(pycharm)安装以及简单配置
    python环境搭建(python2和python3共存)
    如何搭建samba服务?
    css 样式 文字过长 换行处理方法
    my97 日历控件
    myeclipse8.6 注册码
    (46) odoo核心文档分享
    (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置
    (45) Manifest文件
    (44) odoo中的WebService
  • 原文地址:https://www.cnblogs.com/aknife/p/15209127.html
Copyright © 2020-2023  润新知