大屏开发需要知道哪些知识

news2024/11/27 10:29:34

大屏

大屏是什么呢?再我前几年刚接触这个词得时候很新颖,全名叫态势感知大屏,大屏得特点是炫酷、好看,给用户满满得科技感。 听一位前辈说当年再招标会上,再都用exel、word做界面图表文档得时候,有一家公司把可视化态势感知大屏展示出来了,直接秒杀其他厂家。 那么当我们开发一款大屏点的时候需要注意什么呢?

适配

再适配得技术概念上分为真适配伪适配。 那么什么叫做真适配伪适配呢?

伪适配

伪适配就是利用csstransform: scale(1); 达到一个界面适配。

优点:

  • 适配比较快,就使用正常px开发就好了,监听下分辨率做一个scale缩放。

缺点:

  • png、canvas 等要转成svg,不然就会模糊、不清晰。

真适配

真适配就是利用vw、vh、rem、%,达到一个界面得真适配。

  • vw 100vw 等于当前窗口屏幕得宽度;
  • vh 100vh 等于当前窗口屏幕得高度;
  • rem 主要根据根元素body得font-size:12px, 1rem 等于12px, 然后跟用窗口得大小赋值给body对应得fontSize;

优点:

  • 再开发阶段需要直接使用对应得尺寸单位,或者利用postcss-px-to-viewport、postcss-pxtorempostcss插件达到一个px得转换。(个人建议再开发阶段直接使用适配单位,插件还是有或多或少得问题)。

缺点:

  • 要针对性进行每个元素进行单位适配,稍微有些成本(可以利用vscode插件直接完成转化);
    • vscode插件:【px2vw】 针对css、less、sass 可以完成单位转化,但是他不支持.vue文件中style的转换。
    • vscode插件:【px2xx】这个插件能满足咱们开发单位转换。

真适配又分为 高度适配、宽度适配。

  • 宽度适配就是根据用户得屏幕窗口宽度发生变化做到一个界面适配,比如全部都使用vw
  • 高度适配是根据用户屏幕窗口发生变化达到一个界面适配,比如使用vh;

其实个人认为没必要做高度适配、都根据宽度vw达到一个界面适配就好了,主要是因为做高度适配得话使用vh,再小点得屏幕上 很容易就发生文本重叠、界面不美观、因为文字大小再浏览器最小是12px嘛。

大屏界面布局

其实一般大屏布局会又一个header(主标题、时间展示)side (副标题:屏幕的两侧可能会分为4块4个维度去展示当前屏的一些信息)、main(大屏主视图)、footer(底部)

  • 咱们再搭建容器使用的都是定位那么一定要分清定位权重。 下面是一个常见布局权重分布:

  • header 应该是position: absolute;top: 0; height: 60px(需要完成对应设计搞单位转换): z-index:2; 权重是2;

  • side 应该是position: absolute; top: 60px(header的高度);

    • leftSide 应该是position: absolute; top: 0; left: 0; z-index: 2; 权重2
      • leftTopSide 应该是 position: absolute; top: 10px(间距); z-index: 3; 权重3
      • leftBottomSide 应该是 position: absolute; bottom: 10px(间距); z-index: 3;权重3
    • rightSide 应该是position: absolute; top: 0; righht: 0; z-index: 2;权重2
      • rightTopSide 应该是 position: absolute; top: 10px(间距); z-index: 3; 权重3
      • rightBottomSide 应该是 position: absolute; bottom: 10px(间距); z-index: 3; 权重3
  • main 应该是position: absolute; top: 60px(header的高度);z-index: 1; 权重1

  • footer 应该是position: absolute; bottom: 0px; z-index: 2; 权重2

组件划分

其实再大屏中一般设计会遵循主标题(header)、副标题(side、footer)然后主视图这么去设计;

  • 那么其实副标题应该都是长一个样,咱们可以封成一个card组件供大屏使用(vue设计可以参考el-card)。
  • 空组件 每个模块应该都要考虑数据为空的情况;
  • loading 组件,每个模块都应该有loading加载的动作;

时间

提供一份时间的代码

import moment from 'moment';
// import days from 'days';

const WEEKLY_MAP = {
  1: '星期一',
  2: '星期二',
  3: '星期三',
  4: '星期四',
  5: '星期五',
  6: '星期六',
  7: '星期天',
};

export const getWeekly = () => WEEKLY_MAP[new Date().getDay()];

export const getDate = () => moment().format('YYYY-MM-DD');

// 这个应该是定时器循环去调用的
export const getTime = () => moment().format('HH:mm:ss');
复制代码

全屏

全屏功能再大屏中也是必要的功能,下面提供一份全屏相关的函数。

// fullscreen.js
// element 是尼的全屏的容器, 进入全屏
export function fullscreen(element) {
  if (element.requestFullscreen) {
    element.requestFullscreen();
  } else if (element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if (element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if (element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

// 退出全屏
export function exitFullscreen() {
  if (document.exitFullScreen) {
    document.exitFullScreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  } else if (element.msExitFullscreen) {
    element.msExitFullscreen();
  }
}

// 判断是否再全屏
export function isFullScreen() {
  return !!(
    document.fullscreen
      || document.mozFullScreen
      || document.webkitIsFullScreen
      || document.webkitFullScreen
      || document.msFullScreen
  );
}
复制代码

select 组件

Select 组件再大屏中用的时候需要注意 一定要:popper-append-to-body="false" 为 false。让插入到当前容器里面 不要让再body里,不然再全屏下就看不到下拉菜单了。

文本

其实再根据设计搞咱们用rem、vw、vh也很容易会让文字超出当前容器,那么咱们再开发阶段就应该考虑到文本超出的情况,做好文本省略,出现title。 不然测试会给尼提bug的;

动画

  • 针对数字滚动可以使用 vue数字滚动组件 react数字滚动组件

  • 我比较常用的css animate动画库; 里面比较丰富渐入、渐出等等;

     

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

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

相关文章

使用MyBatis实现条件查询

文章目录一,查询需求二,打开MyBatisDemo项目三,对学生表实现条件查询(一)创建学生映射器配置文件(二)在MyBatis配置文件里注册学生映射器配置文件(三)创建学生映射器接口…

kaggle数据集下载

一、首先需要安装kaggle winR→cmd→pip install kaggle 问题:安装到哪来?都说在c盘。可是我找不到,可能因为之前担心c负荷更改路径了,再安装一下发现已经安装成功,且给出了安装路径。 二、注册 (1387条消息) 最新k…

VS Code 最新 Java 编码体验更新

大家好,欢迎来到我们的三月更新!我们将为您带来一系列基础编码体验的改进,例如运行 Java 程序的更流畅体验、AWT 项目相关的代码补全优化以及更好的 Spring Boot 项目与 Azure 的集成,让我们开始吧! 运行 Java 程序的用…

开启虚拟机出现报错:“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录报错原因解决方式(这里以联…

Python办公自动化之PostgreSQL篇1——PostgreSQL安装(保姆级教程)

我们在办公中会经常用到数据量比较大的表,打开、保存都会相对比较卡顿。那么我们可以安装一个PostgreSQL,然后利用Python进行读取,或者再写入。最后可以将最终的数据表进行导出。 肯定会有小伙伴问,那么利用MySQL不行吗&#xff…

wps宏编辑器-js宏录制运行

WPS开放平台如下描述JS宏录制和运行。 WPS宏编辑器提供了一个自动生成JS代码的功能,即录制宏。录制宏功能通过宏录制器捕捉用户与WPS交互的操作,并以JS代码的形式记录下来,整个过程是自动的,不需要用户写代码。在实际的WPS二次开发…

D. Odd-Even Subsequence(二分 + 奇偶下标的取法)

Problem - D - Codeforces Ashish有一个大小为n的数组a。A的子序列被定义为一个序列,该序列可以通过删除一些元素(可能是不删除)从A中获得,而不改变剩余元素的顺序。考虑a的子序列s。他将s的代价定义为以下两者之间的最小值:在s的奇数指数下所有元素中的…

SAR ADC系列27:实践讲解1

Latch比较器Noise仿真 比较器后面加RS触发器,当比较器复位时,OUTP和OUTN输出为11,RS触发器锁存;当比较器比较时,OUTP和OUTN输出一正一负,RS触发器相当于反相器。 做法:改变Vin的值,…

SAM(Segment Anything Model)让CV走到尽头?学CV的研究生还能正常毕业吗?怎么使用SAM?

SAM(Segment Anything Model)让CV走到尽头?学CV的研究生还能正常毕业吗?怎么使用SAM? 1. 引言 最近无论是在B站、知乎还是论坛、微博,都看了一些有关SAM的讨论。这个号称“CV界ChatGPT”的模型从出生起就…

x86中断基础

x86中断基础 原文:Basic x86 interrupts 作者:Alex Dzyoba 原文发表日期:2016年4月2日 在我的关于多重引导内核的文章中,我们看到了如何加载内核、打印文本,然后停止。然而要让操作系统可用,需要支持键…

[chapter 26][PyTorch][MNIST 测试实战】

前言 这里面结合手写数字识别的例子,讲解一下训练时候注意点 目录 训练问题解决方案参考代码一 训练问题 训练的时候,我们的数据集分为Train Data 和 validation Data。 随着训练的epoch次数增加,我们发现Train Data 上精度 先逐步增加,但…

协议篇之以太网ARP协议

协议篇之以太网ARP协议一、什么是ARP协议?作用是什么?二、ARP请求与ARP应答三、以太网ARP数据报格式四、总结一、什么是ARP协议?作用是什么? ARP(Address Resolution Protocol),地址解析协议&am…

GUID分区与MBR分区有什么区别? 操作系统知识

GUID分区与MBR分区有什么区别? 操作系统知识 1、MBR分区表类型的磁盘 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要…

以ChatGPT为例进行自然语言处理学习——入门自然语言处理

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

Python办公自动化之PostgreSQL篇2——利用Python连接PostgreSQL并读取一张表

在上一篇我们已经安装好了最新的PostgreSQL,以及最方便的可视化工具,Navicat 如果错过的小伙伴,可以去上一篇查看:点我查看 今天我们来用Python连接一下PostgreSQL,然后准备一张测试表,导入PostgreSQL&am…

elasticsearch 拼音分词器 自动补全。

elasticsearch 拼音分词器 & 自动补全。 文章目录elasticsearch 拼音分词器 & 自动补全。2. 自动补全。2.1. 拼音分词器。2.2. 自定义分词器。2.3. 自动补全查询。2.4. 实现酒店搜索框自动补全。2.4.1. 修改酒店映射结构。2.4.2. 修改 HotelDoc 实体。2.4.3. 重新导入。…

Shader Graph10-Min, Max, Clamp, Saturate节点

打开UE,新建Material叫做DemoMinMaxClamp,双击打开 一、Minimum节点,两个值比较取较小的。 Min的含义是,红框的0.5为参数B的值,1.0为白色圆形的值,下面的0.5为背景颜色值。图片中每个像素值与0.5进行比较&a…

java基于mvc的停车收费系统mysql

系统需要解决的主要问题有: (1)车位管理模块 添加车位、查看车位状态、车位信息查询等。 (2)客户信息管理模块 客户基本信息录入、客户信息查询等。 (3)卡业务办理 添加卡信息、查余额查询、卡充值。 (4)车辆信息管理模块 车牌信息录入等。 (5)收费管理 可以调整相应…

【Java 数据结构】集合类 (精华篇)

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

一本通 3.4.3 图的连通性

1383:刻录光盘(cdrom) 【题目描述】 在FJOI2010夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习。组委会觉得这个主意不错!可是组委会一时没有足够的空光盘&#xff…