美文网首页
vue2中通过来适配大屏分辨率,做到自适应

vue2中通过来适配大屏分辨率,做到自适应

作者: 甘道夫老矣 | 来源:发表于2023-09-21 14:58 被阅读0次

    当前方法仅限于没有地图操作,一些定位的情况,,并且在没有适配中间的情况会有边距

    新建drawMixin.js

    // 屏幕适配 mixin 函数
    
    // * 默认缩放值
    const scale = {
      width: '1',
      height: '1'
    }
    
    // * 设计稿尺寸(px)
    const baseWidth = 1920
    const baseHeight = 1080
    
    // * 需保持的比例(默认1.77778)
    const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5))
    
    export default {
      data() {
        return {
          // * 定时函数
          drawTiming: null
        }
      },
      mounted() {
        this.calcRate()
        window.addEventListener('resize', this.resize)
      },
      unMounted() {
        window.removeEventListener('resize', this.resize)
      },
      methods: {
        calcRate() {
          const appRef = this.$refs['appRef']
          // console.log(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%)`
            }
          }
        },
        resize() {
          clearTimeout(this.drawTiming)
          this.drawTiming = setTimeout(() => {
            this.calcRate()
          }, 200)
        }
      }
    }
    
    

    使用

    <div class="main-box" ref="appRef">
    </div>
    import drawMixin from "@/components/drawMixin";
    export default {
      mixins: [drawMixin],
    }
    <style>
    .main-box {
        z-index: 3;
        position: absolute;
        width: 1920px;
        height: 1080px;
        top: 50%;
        left:50%;
        transform-origin: left top;
    
    }
    </style>
    

    相关文章

      网友评论

          本文标题:vue2中通过来适配大屏分辨率,做到自适应

          本文链接:https://www.haomeiwen.com/subject/ffthudtx.html