前端实现大屏缩放自适应屏幕

news/2025/3/14 14:18:35/

前端实现大屏缩放自适应屏幕
思路:

  1. 页面初始化获取屏幕的原始比例
  2. 将自适应元素的scale变量设置为当前比例
  3. 监听浏览器窗口大小,获取新的比例值重新给元素scale赋值

vue2—封装的代码组件

<template><divclass="ScaleBox"ref="ScaleBox":style="{width: width + 'px',height: height + 'px'}"><slot></slot></div>
</template>
<script>
export default {props: {// 标准内容宽度uiContentWidth: {type: Number,default: 1920},// 标准内容高度uiContentHeight: {type: Number,default: 0},// 其他内容的宽度otherWidth: {type: Number,default: 300 //左侧菜单栏默认宽度,如果没有则忽略}},data () {return {width: 1920, // 初始宽height: 1080, // 初始高zoom: 1 // 计算要缩放的 宽度比(浏览器可视宽度与设计稿的宽度比)}},mounted () {this.setScale()window.addEventListener('resize', this.debounce(this.setScale, 100))},beforeDestroy () {window.removeEventListener('resize', this.debounce)},methods: {getScale () {// 当前屏幕下需要适配内容的宽度 = 屏幕的宽度 - 其他不需要适配的内容的宽度const innerWidth = window.innerWidth - this.otherWidth// 内容元素需要改变的大小比例 = 当前屏幕尺寸需要变化到标准尺寸的比例 / 标准比例this.zoom = Number(innerWidth / this.uiContentWidth)// 设置缩放后的宽高this.width = innerWidth},setScale () {this.getScale()if (this.$refs.ScaleBox) {this.$refs.ScaleBox.style.setProperty('--scaleww', this.zoom)this.$refs.ScaleBox.style.setProperty('--scalewh', this.zoom)}},debounce (fn, delay) {const delays = delay || 500let timerreturn function () {const th = thisconst args = argumentsif (timer) {clearTimeout(timer)}timer = setTimeout(function () {timer = nullfn.apply(th, args)}, delays)}}}
}
</script><style lang="scss">
body {&::-webkit-scrollbar {display: none;}
}
#ScaleBox {--scaleww: 1;--scalewh: 1;
}
.ScaleBox {transform: scale(var(--scaleww), var(--scalewh));display: flex;flex-direction: column;transform-origin: 0 0;transition: 0.3s;z-index: 3;
}
.no-zoom {transform: scale(var(1 / --scaleww), var(1 / --scalewh));
}
</style>

http://www.ppmy.cn/news/1106389.html

相关文章

京东API接入说明(京东商品详情+关键词搜索商品列表)商品详情数据,店铺所有商品

随着电子商务的飞速发展&#xff0c;京东作为国内领先的电商平台&#xff0c;提供了丰富的API接口&#xff0c;帮助开发者轻松集成电商功能&#xff0c;扩展业务范围。本文将介绍京东API接口的作用和价值&#xff0c;探讨适用场景&#xff0c;操作步骤&#xff0c;优势分析及应…

优漫动游 常见的AI视频生成网站的官方网站:

1、Lumen5 Lumen5是一款在线视频制作工具&#xff0c;利用人工智能技术能够迅速将文本、和音乐转换为视频。它可以帮助你把博客文章、社交媒体内容等转化为吸引人的视频&#xff0c;从而提高你的品牌曝光率和社交媒体的参与度。 2.Animoto Animoto是一个视频制作平台&…

鸿蒙应用开发(基础篇)之列表组件

一、简介 在我们常用的手机应用中&#xff0c;经常会见到一些数据列表&#xff0c;如设置页面、通讯录、商品列表等。下图中两个页面都包含列表&#xff0c;“首页”页面中包含两个网格布局&#xff0c;“商城”页面中包含一个商品列表。 上图中的列表中都包含一系列相同宽度的…

JVM-垃圾回收器详解、参数配置

相关概念 并行和并发 并行&#xff08;Parallel&#xff09; 指多条垃圾收集线程并行工作&#xff0c;但此时用户线程仍然处于等待状态。 并发&#xff08;Concurrent&#xff09; 指用户线程与垃圾收集线程同时执行&#xff08;但不一定是并行的&#xff0c;可能会交替执行…

基于51单片机实现W25Q64-FLASH读写

一、前言 STC89C52是一款8位单片机,具有强大的功能和灵活性,广泛应用于各种嵌入式系统中。W25Q64是一款容量为64Mb的串行闪存芯片,采用SPI接口进行通信。本项目利用STC89C52单片机实现对W25Q64闪存芯片的读写操作,实现数据的读取和存储。 在本项目中,通过模拟SPI(Seria…

SpringBoot项目--电脑商城【收货地址列表展示和设置默认地址】

1.收货地址列表展示 1.1 持久层[Mapper] a. 规划需要执行的SQL语句 数据库数据的查询操作 select * from t_address where uid ? order by is_default DESC,created_time DESC其中order by is_default DESC是为了让默认收货地址展示在最上面,order by可以有多个字句,中间用…

如何进行错误处理和异常处理?

错误处理和异常处理是编程中非常重要的概念&#xff0c;它们允许我们在程序运行时处理各种问题和异常情况&#xff0c;以确保程序的稳定性和可靠性。在C语言中&#xff0c;错误处理和异常处理通常通过条件语句和函数来实现。本文将详细讨论C语言中的错误处理和异常处理的方法&a…

centos 下 Makefile 独立模块编译ko

1、安装编译内核环境包 编译需要用到kernel 源码&#xff0c;centos 下需先安装 kernel-devel 包&#xff0c;要下与自己kernel 对应版本 yum install kernel-devel 2、首先从内核或自己写的模块&#xff0c;发到编译环境中 注&#xff1a;就像我自己拷贝一个 bcache 驱动的目…