大屏幕适配方法之:transform:scale()

CSS3新增的属性transform主要用于设置元素的变形,比如旋转、倾斜、缩放等。我们今天要用到的正式它的缩放功能transform:scale()

取值

  • 单一数值
    单一的数值即指定了一个缩放系数,同时作用于 X 轴和 Y 轴让该元素进行缩放,相当于指定了单个值的 scale()(2D 缩放) 函数。

  • 两个长度/百分比值
    两个数值即分别指定了 2D 比例的 X 轴和 Y 轴的缩放系数,相当于指定了两个值的 scale()(2D 缩放)函数。

  • 三个长度/百分比值
    三个数值即分别指定了 3D 比例的 X 轴、Y 轴和 Z 轴的缩放系数。相当于一个 scale3d() 函数。
    工作中遇到一个问题,页面中其他元素通过使用VW、VH实现了自适应。唯独两个echarts图无法设置VW和VH,导致鼠标滚轮滚动页面出现严重变形。

解决方式一

在拖动窗口或者鼠标滚轮在页面中滚动实现缩放时,监听window的resize事件,并在事件中调用echarts的resize()方法。

window.onresize = function () {echart1.resize()echart2.resize()
}

并无卵用~

解决方式二

同事建议使用vue-echarts,通过属性autoresize可以实现echarts图的自动缩放

<template><div style="width:100vw"><v-chart autoresize :option="option_column" style="height: 400px"></v-chart></div>
</template><script>
export default {data() {return {option_column: {title: { text: "Column Chart" },tooltip: {},xAxis: {data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],},yAxis: {},series: [{name: "销量",type: "bar",data: [5, 20, 36, 10, 10, 20],},],},};},
};
</script><style  scoped lang="scss">
</style>

可能是代码结构或者别的问题,依然无法实现echarts图缩放而不变形的效果。

最终解决方法

公司的项目使用了微前端架构,不同的小项目可以融合在一起,别的项目页面与我所开发的页面结构大致相同,它们已经实现了缩放功能。由于他们的代码是通过低代码平台实现的,我们无法查看它们的代码逻辑。但经过同事提醒,它们可能使用了transform:scale()这个属性来实现的,通过控制台观察它们元素属性,最后找到了最外层使用的transform:scale()的元素。最后经过一步步调整,终于靠transform:scale()实现了,页面整体的缩放。

步骤
  1. 首先要给页面的最外层设置一个宽高,一般是设计图的尺寸,并指定缩放的基准点。
	.app{	 width:1900px;height:1080px;transform-origin: top left;}
  1. 设置window.resize的监听事件,并在回调函数中计算出页面缩放的比例,并同步设置给外层app的transform:scale()上
window.onresize = function () {echart1.resize()echart2.resize()setTimeout(() => {						let currentWidth = window.innerWidth;// let scale = currentWidth / idealWidth;// const currentSize = { width: window.innerWidth, height: window.innerHeight };// const scale = Math.min(initialSize.width / currentSize.width, initialSize.height / currentSize.height); // 取较小的比例,以防止页面变形var scaleW = window.innerWidth / 1900; // 假设1200px是设计稿的原始宽度var scaleH = window.innerHeight / 1080; // 假设1200px是设计稿的原始宽度// document.body.style.transform = 'scale(' + scale + ')'; // 缩放比例// document.body.style.transformOrigin = 'top left'; // 确保缩放从左上角开始console.log(currentWidth,'currentWidth....')console.log(scaleW,'scaleW....')console.log(scaleH,'scaleH....')//document.getElementById('app').style.transform = `scale(${scale}, ${scale})`;document.getElementById('app').style.transform = `scale(${scaleW}, ${scaleH})`;}, 500);}},

最终完美实现了,与其他项目一样的缩放效果!完结!散花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Java中的异步编程与CompletableFuture

在现代的软件开发中&#xff0c;异步编程已经成为处理并发和提升性能的重要手段之一。Java作为一门流行的编程语言&#xff0c;提供了多种异步编程的方式。其中&#xff0c;CompletableFuture是Java 8引入的一个强大的工具&#xff0c;用于简化异步编程并提高代码的可读性和可维…

Python快速提取局域网在线IP及对应MAC地址

在网络管理和安全监控中,了解局域网内的在线设备及其对应的IP和MAC地址是非常重要的。本文将介绍如何使用Python快速提取局域网内所有在线设备的IP地址及其对应的MAC地址。我们将使用Python的第三方库和一些简单的网络扫描技术,使这一过程变得高效且自动化。无论你是网络管理…

SAPUI5基础知识2 - 手动创建一个SAPUI5的项目

1. 前言 在本篇文章中&#xff0c;我们将手动一步一步建立出第一个SAPUI5的 ‘Hello World!’ 项目。 2. 步骤详解 2.1 在BAS中建立Dev Space 进入SAP Business Application Studio的Dev Space Manger&#xff0c;选择创建Dev Space。 勾选HTML5 Application Template插件…

[Linux] shell程序编写

一、shell是什么 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。 …

数据读取及分隔方法

文章目录 读取数据1. 读取文本文件2.pandas库读取数据3.读取JSON文件 数据分隔方法1.split()2.re.split()3.splitlines() 读取数据 1. 读取文本文件 读取文本文件&#xff1a;可以使用内置的open()函数来打开文本文件&#xff0c;并使用read()或readlines()方法读取文件内容。…

Linux:网页的各种状态码及其解释

Linux&#xff1a;网页的状态码 定义&#xff1a;状态码由三位数值组成&#xff0c;第一位数值定义了响应的类别&#xff0c;且有五种可能取值 状态码含义详解1xx指示信息&#xff08;信息性状态码&#xff09;表示请求已接受&#xff0c;继续处理2xx成功表示请求已被成功接受…

overflow:scroll不生效解决

参考 问题 在给组织架构组件的外框设置overflow:scroll的时候不生效&#xff0c;没有显示滚动条 原因 这个组件里面实在是包裹太多层了&#xff0c;得找到离内容层最近的那层包裹层设置overflow才有效 解决 找到离内容层最近的那层包裹层设置overflow

OpenWrt改网桥模式(AP模式)

OpenWrt改网桥模式&#xff08;AP模式&#xff09; 点击“接口” 删掉所有 wan 接口 点击“设备”&#xff0c;配置“br-lan" 点击网桥接口&#xff0c;勾选所有接口 点击保存 添加新接口&#xff08;不添加的话路由器自身系统没网&#xff09; 返回 “网络” - “接…

k8s部署presto

&#xff08;作者&#xff1a;陈玓玏&#xff09; 一、前提条件 已部署k8s&#xff1b;已部署hadoop和hive&#xff0c;可参考以下链接&#xff1a; https://blog.csdn.net/weixin_39750084/article/details/136750613?spm1001.2014.3001.5502 https://blog.csdn.net/wei…

Linux-挂盘-分区-卸盘

Linux-挂盘-分区-卸盘 1. 添加硬盘 2. 查看硬盘 [rootlocalhost /]# lsblk # 查看我们新添加的磁盘 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 …

pdf使用pdfbox切割pdf文件MultipartFile

引入依赖&#xff1a; <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.25</version></dependency>测试代码&#xff1a; import io.choerodon.core.iam.ResourceLevel; impo…

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

1 中国信通院联合业界制定、发布多项标准化成果&#xff0c;推动产业发展 大模型开启了 AI 原生时代&#xff0c;云边端协同 AI 构建了「集中式大规模训练」、「边缘分布式协同推理」新范式&#xff0c;有效降低推理时延和成本&#xff0c;提升数据安全和隐私性&#xff0c;也…

微服务技术框架-注册中心-能解决的问题

在微服务架构中&#xff0c;注册中心是一个关键组件&#xff0c;它解决了许多微服务通信和管理中的问题。以下是注册中心能够解决的主要问题&#xff1a; 1. 动态服务发现 问题&#xff1a;微服务实例动态增加或减少&#xff0c;手动配置服务地址非常繁琐且容易出错。 解决方案…

python的Serial 串口缓存区数据处理

没头脑很久没有处理串口数据&#xff0c;今日测试一个测距传感模块&#xff0c;用简单的serial.read没十几秒就屏幕冻住了&#xff0c;不往下print了。后来反应过来是不停访问串口&#xff0c;导致串口数据缓存区溢出了。有一个比较保险的方式如下&#xff0c;简单而言是成块读…

【C++面试100问】第八十五问:有了const,C++11为什么还要引入constexpr

B站讲解视频 在大部分实际场景中&#xff0c;const 和 constexpr 是可以混用的&#xff1b;但是在创建数组用修饰的变量指定size的时候&#xff0c;只能用constexpr&#xff1b;总的来说&#xff0c;在 C 11 标准中&#xff0c;const 用于为修饰的变量添加“只读”属性&#xf…

AtCoder ABC352 A-D题解

比赛链接:ABC352 Problem A: 签到题。 #include <bits/stdc.h> using namespace std; int main(){int N,X,Y,Z;cin>>N>>X>>Y>>Z;if((X<Z && Z<Y) || (Y<Z && Z<X))cout<<"YES"<<endl;else…

数据采集与AI分析,亮数据+通义千问助力跨境电商前行

文章目录 前言工具介绍数据采集工具亮数据Web Scraper IDE亮点 AI数据分析工具 实战电商数据采集与AI分析电商平台选取数据采集完全托管数据集自定义数据集 AI分析 价格总结 前言 随着信息技术的飞速发展&#xff0c;数据采集与AI分析在跨境电商中扮演着越来越重要的角色。通过…

用ControlNet+Inpaint实现stable diffusion模特换衣

用ControlNetInpaint实现stable diffusion模特换衣 ControlNet 训练与架构详解ControlNet 的架构用于文本到图像扩散的 ControlNet训练过程Zero卷积层的作用解释 inpaintInpaint Anything 的重要性Inpaint Anything 的功能概述 在现代计算机视觉领域&#xff0c;稳定扩散&#…

微信小程序开发 tabbar组件常见问题

一、 tabbar不显示问题 问题 刚开始我在app.json中配置了下面的代码&#xff0c;但tabbar并没有显示。代码如下&#xff1a; "tabBar": {"custom": true,"color": "#7A7E83","selectedColor": "#3cc51f","…

【机器学习-08】 | Scikit-Learn工具包进阶指南:Scikit-Learn工具包之决策树算法实战分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…