大屏适配方法一(使用scale)

发布时间:2023年12月28日

当前是vue2

<template>
  <div id="container">
     <div id="screen" ref="screen" style="color:#fff ;">
      666666666666666666666666666666666666
     </div>
  </div>
</template>

<script>

export default {
 name: 'App',
 mounted () {
  let that=this
  // 界面一打开就获取当前的screen元素
  that.setScale()
  // 如何实现窗口的改变事件---因为次数是箭头函数,所以无法使用this,故用that转化一下
  window.addEventListener('resize', () => {
    that.setScale()
  })
 },
 methods:{
   // 获取当前的缩放比例是多少,取较小的一个值
  getScale(w = 1920, h = 1080) {
    const ww = window.innerWidth / w;
    const wh = window.innerHeight / h;
    return ww < wh ? ww : wh;
},
setScale(){
  let res=this.getScale()
  this.$refs.screen.style.transform =  `scale(${res}) translate(-50%,-50%)`
}
 }

}
</script>

<style lang="less">
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
#container{
  width: 100vw;
  height:100vh;
  background:url('./assets/images/bg.png') no-repeat;
  background-size: cover;
  #screen {
  position: fixed;
  width: 1920px;
  height: 1080px;
  left:50%;
  top:50%;
  background-color: aqua;
  transform-origin: left top;
}
}

</style>

实现的基本思路是:

screen主体部分以左上角为中心,先向右下角移动50% 50%(水平垂直)

在根据页面缩放比例,做scale伸缩变化,再向左上角移动50% 50%(水平垂直方向)

伸缩的具体scale取宽度以及高度深度的最小值

super easy 原始版,后续再来优化它吧

文章来源:https://blog.csdn.net/wuqudhen/article/details/135203547
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。