在vue3中使用scale对大屏幕做自适应处理

scale 的使用

  • 在做大屏或者是需要用到多个定位的情况下,屏幕的大小会改变布局,这种情况下可以使用 scale 对屏幕做自适应处理
<div class="login-container">
  <div class="login-main" ref="dataScreenRef"></div>
</div>
.login-container {
  width: 100%;
  height: 100%;
  transform-origin: 0 0;
  position: relative;
}
.login-main {
  width: 100%;
  height: 100%;
  position: absolute;
}
const dataScreenRef = ref(null);
const width = 1920;
const height = 1080;

/* 根据浏览器大小推断缩放比例 */
const getScale = (w = width, h = height) => {
  let ww = window.innerWidth / w;
  let wh = window.innerHeight / h;
  return ww < wh ? ww : wh;
};
/* 浏览器监听 resize 事件 */
const resize = () => {
  if (dataScreenRef.value) {
    dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
  }
};

onMounted(() => {
  // 初始化时为外层盒子加上缩放属性,防止刷新界面时就已经缩放
  if (dataScreenRef.value) {
    dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
    dataScreenRef.value.style.width = `${width}px`;
    dataScreenRef.value.style.height = `${height}px`;
  }
  window.addEventListener("resize", resize);
});
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3,可以通过监听窗口大小变化事件,动态计算需要缩放的比例,从而实现根据屏幕大小自适应宽高缩放的效果。具体实现方法可以参考以下代码: ```html <template> <div :style="{transform: `scale(${scaleRatio})`}"> <!-- 需要自适应缩放的内容 --> </div> </template> <script> import { reactive, onMounted, onUnmounted } from 'vue' export default { setup () { const state = reactive({ scaleRatio: 1 // 默认缩放比例为1 }) // 监听窗口大小变化事件 const onResize = () => { const { innerWidth, innerHeight } = window const screenWidth = 1920 // 设计稿的宽度 const screenHeight = 1080 // 设计稿的高度 const scaleX = innerWidth / screenWidth const scaleY = innerHeight / screenHeight state.scaleRatio = scaleX > scaleY ? scaleY : scaleX // 取较小的缩放比例 } onMounted(() => { window.addEventListener('resize', onResize) }) onUnmounted(() => { window.removeEventListener('resize', onResize) }) return state } } </script> ``` 在上面的代码,我们使用Vue3的reactive函数创建了一个响应式对象state,用来保存当前的缩放比例。在setup函数,我们使用onMounted和onUnmounted函数分别在组件挂载和卸载时监听和移除窗口大小变化事件。在事件处理函数onResize,我们根据窗口大小和设计稿的宽高计算出需要缩放的比例,并将其保存到state对象。在模板,我们使用:style绑定将缩放比例应用到需要自适应缩放的内容上,实现根据屏幕大小自适应宽高缩放的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值