大屏可视化:阿里 DataV 大屏怎么做自适应的?

你好,我是沐爸,欢迎点赞、收藏、评论和关注。

阿里 DataV 大屏是一款功能强大的数据可视化应用搭建工具,由阿里云提供,旨在帮助用户通过图形化的界面轻松搭建专业水准的可视化应用。

下面我们一起看下 DataV 大屏 是如何做自适应的?

了解 阿里 DataV 大屏,可注册账号免费试用,时长为1个月。随便打开一个大屏模板,点击画布,编辑器右侧会显示页面配置,其中“缩放方式”即为自适应方案,一共有5种。

一、全屏铺满

特点:
  • 铺满屏幕,不保持纵横比。
  • 页面元素可能被拉伸或压缩。

<template><div id="root-el" :style="{ transform: 'scale(' + x + ',' + y + ')' }">这里放一张图片</div>
</template><script>export default {data() {return {x: 1,y: 1}},mounted() {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080window.onresize = () => {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080}}}
</script>     

二、等比宽度铺满可滚动

特点:
  • 保持纵横比。
  • 缩小时可能会留白。
  • 屏幕内容被遮挡时显示滚动条,未被遮挡时无滚动条。

<style>html {width: 100% !important;height: 100% !important;overflow: hidden !important;}body {width: 100%;height: 100%;overflow: hidden;}body:hover ::-webkit-scrollbar-thumb{display: block;}::-webkit-scrollbar-thumb {display: none;background: #525252;border-radius: 2px}::-webkit-scrollbar-track {background: transparent;}::-webkit-scrollbar {display: block;width: 4px;height: 4px}::-webkit-scrollbar-corner {background-color: transparent}#app {width: 100%;height: 100%;}
</style>
<template><div id="root"><div class="preview-page"><div id="runtime"><div class="datav-common-hoc"><div class="datav-com-wrapper"><div class="datav-absolute-page-wp" :style="{ height: innerHeight + 'px' }"><div id="index" ref="appRef" :style="{ transform: 'scale(' + x + ')' }"><div class="bg">......</div></div></div></div></div></div></div></div>
</template><script>
export default {data() {return {x: 1,y: 1,innerHeight: 1080}},mounted() {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.innerHeight = 1080 * this.xwindow.onresize = () => {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.innerHeight = 1080 * this.x}}
}
</script><style lang="scss" scoped>#root {width: 100%;height: 100%;display: flex;flex-direction: column;.preview-page {width: 100%;height: 100%;overflow: auto;flex: 1 1;#runtime {width: 100%;height: 100%;.datav-common-hoc {height: 100%;width: 100%;position: relative;.datav-com-wrapper {height: 100%;width: 100%;position: relative;transform: translate(0, 0);box-sizing: border-box;transform-origin: left top;overflow: inherit;.datav-absolute-page-wp {width: 100%;height: 100%;position: relative;overflow: hidden;#index {width: 1920px;height: 1080px;background: rgb(255, 255, 255);transform-origin: left top;overflow: hidden;.bg {width: 100%;height: 100%;padding: 16px 16px 0 16px;background-image: url("../assets/pageBg.png");background-size: cover;background-position: center center;}}}}}}}}
</style>

三、等比高度铺满居中

特点:
  • 保持纵横比
  • 页面居中显示,两侧可能留白。宽度不够时,两侧可能被隐藏。


<template><div id="root"><div class="preview-page"><div id="runtime"><div class="datav-common-hoc"><div class="datav-com-wrapper"><!--datav-absolute-page-wp 不再动态设置高度--><div class="datav-absolute-page-wp"><div id="index" ref="appRef" :style="{ transform: 'scale(' + x + ')', 'margin-left': ml + 'px' }"><div class="bg">......</div></div></div></div></div></div></div></div>
</template><script>export default {data() {return {x: 1,y: 1,ml: 0 // 水平方向的左外边距}},mounted() {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.ml = (window.innerWidth - 1920 * this.y) / 2window.onresize = () => {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.ml = (window.innerWidth - 1920 * this.y) / 2}}}
</script><style lang="scss" scoped>/*保持不变*/
</style>

四、等比高度可滚动

特点:
  • 保持纵横比
  • 窗口宽度大于内容宽度时,右侧留白。窗口宽度小于内容宽度时,显示滚动条。


<template><div id="root"><div class="preview-page"><div id="runtime"><div class="datav-common-hoc"><div class="datav-com-wrapper"><div class="datav-absolute-page-wp" style="overflow-x: auto;"><div class="datav-absolute-page" :style="{width: scaleWidth + 'px', height: innerHeight + 'px'}"><div id="index" ref="appRef" :style="{ transform: 'scale(' + y + ')' }"><div class="bg">......</div></div></div></div></div></div></div></div></div>
</template><script>export default {data() {return {x: 1,y: 1,scaleWidth: 1920}},mounted() {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.innerHeight = window.innerHeightthis.scaleWidth = 1920 * this.ywindow.onresize = () => {this.x = window.innerWidth / 1920this.y = window.innerHeight / 1080this.innerHeight = window.innerHeightthis.scaleWidth = 1920 * this.y}}}
</script><style lang="scss" scoped>/*保持不变*/
</style>

五、居中

特点:
  • 保持纵横比
  • 无论页面怎么缩放,总保持居中显示

<template><div id="root"><div class="preview-page"><div id="runtime"><div class="datav-common-hoc"><div class="datav-com-wrapper"><div class="datav-absolute-page-wp"><div class="datav-absolute-page" :style="{transform: 'translateX(-50%) translateY(-50%) scale(' + dynamicScale + ')'}"><div id="index" ref="appRef"><div class="bg">......</div></div></div></div></div></div></div></div></div>
</template><script>export default {data() {return {x: 1,y: 1,dynamicScale: 1}},mounted() {if (window.innerWidth / window.innerHeight < 1920 / 1080) {this.dynamicScale = (window.innerWidth / 1920)} else {this.dynamicScale = (window.innerHeight / 1080)}window.onresize = () => {if (window.innerWidth / window.innerHeight < 1920 / 1080) {this.dynamicScale = (window.innerWidth / 1920)} else {this.dynamicScale = (window.innerHeight / 1080)}}}}
</script><style lang="scss" scoped>.datav-absolute-page {width: 1920px;height: 1080px;background: rgb(255, 255, 255);transform: translateX(-50%) translateY(-50%) scale(0.550521);left: 50%;top: 50%;position: absolute;}/*其他保持不变*/
</style>

六、堪称完美的适配

DataV 大屏的5种自适应方案,多多少少都有些缺陷,有没有更完美的适配方式呢?看看下图

上面这种自适应如何实现?我们明天接着唠。

好了,分享结束,谢谢点赞,下期再见。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 第 408 场周赛题解

Leetcode 第 408 场周赛题解 Leetcode 第 408 场周赛题解题目1&#xff1a;3232. 判断是否可以赢得数字游戏思路代码复杂度分析 题目2&#xff1a;3233. 统计不是特殊数字的数字数量思路代码复杂度分析 题目3&#xff1a;3234. 统计 1 显著的字符串的数量思路代码复杂度分析 题…

矮草坪渲染尝试

本来说写unity里的&#xff0c;由于three测试方便&#xff0c;先试试three 这个图片是目标效果 可以看见草很矮&#xff0c;很密集&#xff0c;如果用instance来绘制的话&#xff0c;遭不住的 忽然发现这个效果很像绒毛效果 于是找了博客康康 https://zhuanlan.zhihu.com/p/256…

Ubuntu | 安装 Truffle 框架(安装缓慢)

目录 预备工作具体步骤Step1&#xff1a;安装 nvma. 官方方式&#xff08;可能失败&#xff09;b. 压缩包安装方式 Step2&#xff1a;安装 node.js 和 npmStep3&#xff1a;安装 Truffle 参考博客 前言&#xff1a;昨天安装 Truffle 框架&#xff0c;结果缓冲条转了一晚上都没安…

企业全球组网有哪几种常用的组网方式?

为了实现全球范围内的高效通信和数据传输&#xff0c;企业需要选择适合自身需求的组网方式。企业全球组网的有哪几种主要方式&#xff1f;一般包括传统的MPLS网络、云网络、SD-WAN技术和全球VPN&#xff0c;以帮助企业在全球范围内建立稳定、高效的网络连接。 1、传统的MPLS网络…

探索AWS EC2:云计算的强大引擎

在数字化转型的浪潮中&#xff0c;企业对计算资源的需求不断增长。亚马逊弹性计算云&#xff08;EC2&#xff09;作为AWS&#xff08;亚马逊网络服务&#xff09;的核心产品之一&#xff0c;凭借其强大的功能和灵活性&#xff0c;成为了全球企业构建和扩展应用的首选平台。无论…

数据结构(邓俊辉)学习笔记】串 10——BM_BC算法:坏字符

文章目录 1.坏字符2. 特殊情况 1.坏字符 实际上&#xff0c;刚才的实例中我们所展示的那样一个计算过程&#xff0c;就是所谓 BM 算法所采用的策略之一&#xff0c;而这一策略&#xff0c;将我们刚才所说的教训称作坏字符。 在这里&#xff0c;不妨改为基于蛮力算法的第二个版…

设置电子签名

设置点赞签名代码 export class Signature {width: number 300height: number 300canvas!: HTMLCanvasElementctx!: CanvasRenderingContext2Dprivate drawing: boolean falsepreTask: string[] []nextTask: string[] []private allTask: { x: number; y: number; color: …

Leetcode - 周赛413

目录 一&#xff0c;3274. 检查棋盘方格颜色是否相同 二&#xff0c;3275. 第 K 近障碍物查询 三&#xff0c;3276. 选择矩阵中单元格的最大得分 四&#xff0c;3277. 查询子数组最大异或值 一&#xff0c;3274. 检查棋盘方格颜色是否相同 本题就是找规律&#xff0c;假设白…

EPLAN中如何将图纸导出为PDF文件并设置页边距?

EPLAN中如何将图纸导出为PDF文件并设置页边距? 如下图所示,在项目中选中需要导出的图纸页, 如下图所示,点击上方页-----导出------PDF, 如下图所示,在弹出的窗口中设置导出文件的名称、输出目录、输出颜色,这里建议勾选“使用打印边距”, 如下图所示,继续点击下方的设…

论文速读|重新审视奖励设计与评估:用于强健人型机器人站立与行走控制的方法

论文地址&#xff1a;https://arxiv.org/pdf/2404.19173 这篇论文为类人机器人站立和行走&#xff08;SaW&#xff09;控制器的持续可衡量改进奠定了基础。通过引入一套定量实际基准测试方法&#xff0c;作者展示了现有控制器的优缺点&#xff0c;并通过基准测试指导新控制器的…

论文速读|自然语言的最优控制合成:机遇与挑战

项目地址&#xff1a;Optimal Control Synthesis from Natural Language: Opportunities and Challenges 介绍了一种从自然语言自动生成最优控制器的框架&#xff0c;该框架主要包括以下几个步骤&#xff1a;首先&#xff0c;通过人类用户提供的初始文本和系统描述&#xff0c;…

源代码如何防泄露?做好这十条轻松应对

源代码防泄露是一个多方面的安全问题&#xff0c;涉及到技术、管理和物理等多个层面。以下是一些有效的策略和方法&#xff0c;结合深信达的SDC防泄密软件&#xff0c;来实现源代码的防泄露&#xff1a; 1. **访问控制**&#xff1a;实施基于角色的访问控制&#xff08;RBAC&am…

JUC-无锁之CAS

问题提出 (应用之互斥) package cn.itcast; import java.util.ArrayList; import java.util.List; interface Account {// 获取余额Integer getBalance();// 取款void withdraw(Integer amount);/*** 方法内会启动 1000 个线程&#xff0c;每个线程做 -10 元 的操作* 如果初始…

深度学习系列73:使用rapidStructure进行版面分析

1. 概述 项目地址https://github.com/RapidAI/RapidStructure?tabreadme-ov-file 2. 文档方向分类示例 安装$ pip install rapid-orientation import cv2 from rapid_orientation import RapidOrientation orientation_engine RapidOrientation() img cv2.imread(test_im…

C++笔记---string类(简单地使用)

1. string类介绍 string类是C标准库中给出的一种类类型&#xff0c;其目的是为了代替C语言中的字符串。 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是…

【时时三省】(C语言基础)指针进阶 例题

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 字符数组例题&#xff1a; arr后面放了六个字符 所以这个数组的元素个数就是6 第一个arr 因为他计算的是一整个数组的大小 就是打印6 第二个arr0 arr没有单独放在它的内部 所以它计算的就是…

深智城基于超融合数据库MatrixOne的一站式交通大数据平台改造

在智慧交通应用中&#xff0c;数据处理需求极为复杂&#xff0c;涉及人、车辆、道路和环境等多个方面&#xff0c;产生了大量异构数据。交通管理人员需要对这些数据进行实时分析和决策&#xff0c;以应对各种交通事件。然而&#xff0c;在实际生产中会发现数据处理缺陷、管理复…

智慧平台赋能政务管理,声通科技助力政务管理智能化

在智能时代的大潮中&#xff0c;政务管理也在不断寻求创新与突破&#xff0c;在这方面&#xff0c;涌现出了很多优秀的公司。比如声通科技的子公司西安金讯数智信息技术有限公司&#xff0c;就在AI政务热线领域有很多创新成果&#xff0c;为政务管理的智能化升级提供了新思路。…

windows安装php7.4

windows安装php7.4 1.通过官网下载所需的php版本 首先从PHP官网&#xff08;https://www.php.net/downloads.php&#xff09;或者Windows下的PHP官网&#xff08;http://windows.php.net/download/&#xff09;下载Windows版本的PHP安装包。下载后解压到一个路径下。 2.配…

爆改YOLOv8|利用yolov10的PSA注意力机制改进yolov8-高效涨点

1&#xff0c;本文介绍 PSA是一种改进的自注意力机制&#xff0c;旨在提升模型的效率和准确性。传统的自注意力机制需要计算所有位置对之间的注意力&#xff0c;这会导致计算复杂度高和训练时间长。PSA通过引入极化因子来减少需要计算的注意力对的数量&#xff0c;从而降低计算…