less+vw+vh实现可视化大屏适配

1. 安装less和less-loader

npm install -D less less-loader

2. 封装less工具函数 实现px转vw、vh;创建utils.less文件

	@charset "utf-8";

	// 默认设计稿的宽度(根据开发UI稿更改)
	@designWidth: 1920;

	// 默认设计稿的高度(根据开发UI稿更改)
	@designHeight: 1080;

	.vw(@name, @px) {
  		@{name}: (@px / @designWidth) * 100vw;
	}

	.vh(@name, @px) {
  		@{name}: (@px / @designHeight) * 100vh;
	}

	.font(@px) {
  		font-size: (@px / @designWidth) * 100vw;
	}

3.1 在vue.config.js配置less预处理器文件(2中的utils.less文件)

module.exports = defineConfig({
  css: {
    loaderOptions: {
      	less: {
        	additionalData: `@import "~@/styles/utils.less";`, // less工具函数的目录文件 一定要加分号
      	},
    },
  },
});

3.2 在vite.config.js配置less预处理器文件(2中的utils.less文件)

export default defineConfig({
  css: {
    preprocessorOptions: {
      less: {
        additionalData: '@import "./src/styles/utils.less";', // less工具函数的目录文件 一定要加分号
      }
    }
  },
})

4. 在页面中使用less工具函数

div {
  .vw(width, 500);
  .vh(height, 300);
  .font(14);
  .vw(padding-left, 5);
  .vh(padding-top, 12);
  .vh(line-height, 12);
}
### Vue3 项目电视数据适配的方法 #### 使用 Less 实现响应式设计 为了使 Vue3 的可视化能够适应不同尺寸的幕,可以采用基于 Less 的方法来处理样式。Less 是一种 CSS 预处理器,允许开发者编更简洁、可维护性强的样式表文件[^1]。 ```css /* 定义变量 */ @baseWidth: 1920px; @baseHeight: 1080px; .container { width: (@vw * @baseWidth / 100); height: (@vh * @baseHeight / 100); } ``` 这种方法通过设置基础宽高作为参照物,再利用 vwvh 单位动态调整容器小,从而达到自适应效果。 #### 动态监听窗口变化并重置布局 为了让页面能够在加载完成后以及浏览器窗口改变时自动重新计算和应用新的样式规则,在组件挂载阶段添加事件监听器是一个不错的选择: ```javascript // mounted 生命周期钩子内注册 resize 事件 mounted() { window.addEventListener('resize', this.handleResize); }, methods: { handleResize() { const scale = Math.min( document.documentElement.clientWidth / 1920, document.documentElement.clientHeight / 1080 ); // 更新根元素字体小以影响全局缩放 document.documentElement.style.fontSize = `${scale * 10}px`; } } ``` 上述代码片段展示了如何根据当前视窗的实际尺寸与预设的标准分辨率对比得出合适的缩放因子,并将其应用于整个文档流中的所有元素上[^3]。 #### 计算最佳缩放比例 考虑到实际应用场景中可能存在多种多样的显示设备规格差异较,因此还需要考虑按照特定逻辑选取最优解来进行缩放操作。通常情况下会选择较小的那个比率值,即保证无论是在横向还是纵向都能完全容纳内容而不溢出边界之外[^4]。 ```javascript const getScaleFactor = (targetW, targetH) => { let wRatio = window.innerWidth / targetW; let hRatio = window.innerHeight / targetH; return Math.min(wRatio, hRatio); // 返回两者之间最小的一个作为最终使用的缩放系数 }; ``` 此函数接收目标宽度和高度参数,分别求得相对于现有可视区域内的两个方向上的放倍数之后取其较低者用于后续渲染过程之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值