窗口大小改变时,保持div宽高比不变,并居中

本文介绍了一个使用Vue实现的自适应布局方案,通过监听窗口大小变化调整元素宽高比,确保不同分辨率下布局的一致性和美观性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


<template>
  <RendererVideoVue />
  <div id="content-wrapper">
    <RouterView />
  </div>
</template>

<script setup lang="ts">
import { watch, onMounted, onUnmounted, computed } from "vue";
const w = window.innerWidth;
const h = window.innerHeight;
const initAspectRatio =  Number((w / h).toFixed(2))
const resize = () => {
  const w = window.innerWidth;
  const h = window.innerHeight;
  var controlsWrapper = document.getElementById('content-wrapper') as any
  const aspectRatio = Number((w/h).toFixed(2))
  if(aspectRatio>initAspectRatio){
    controlsWrapper.style.width = Math.round(initAspectRatio*h) + 'px'
    controlsWrapper.style.height = h + 'px'
  }else{
    controlsWrapper.style.width = w + 'px'
    controlsWrapper.style.height = Math.round(w/initAspectRatio) + 'px'
  }
}
onMounted(() => {
 window.addEventListener("resize", function () {
      resize()
    }, false);
})
onUnmounted(() => {
  window.removeEventListener('resize', resize);
});

</script>
<style scoped lang="less">
#content-wrapper {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: auto;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值