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

大屏

大屏是什么呢?再我前几年刚接触这个词得时候很新颖,全名叫态势感知大屏,大屏得特点是炫酷、好看,给用户满满得科技感。 听一位前辈说当年再招标会上,再都用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.mfbz.cn/a/13966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打包后dist包中app.**.js文件暴露大量接口信息,webpack-obfuscator对打包后的js代码混淆加密

问题描述 打包后dist包中app.**.js文件暴露大量接口信息,而webpack-obfuscator可以对打包后的js代码混淆加密 版本信息 webpack: 4.x.x node: 14.18.0 webpack4环境下使用webpack-obfuscator不能使用最新版本 我的下载版本是: npm install --save-de…

玩转ChatGPT:论文翻译润色

一、写在前面 首先还是让小Chat推销下自己: 嘿!你是否在写论文的过程中感到头疼,无从下手?你是否在担心自己的语言表达不够专业、不够流畅,影响了论文的质量?不要担心,ChatGPT的润色服务可以帮…

Redis 持久化八股文

目录 Redis的持久化机制 持久化方式对比 RDB RDB 持久化 RDB 的优缺点 优点 缺点 RDB 快照时运行修改数据吗 RDB 快照时修改数据过程 写时复制技术 RDB 的执行频率 增量快照 AOF 如何开启AOF AOF 为什么要采用后写日志呢? 后写日志的弊端 AOF 的优…

pdf转成word | ppt | jpg图片,免费一键转换教程

我不允许真的还有人不知道如何免费将pdf转成 ppt、word 或者 jpg图片! 职场小伙伴是不是会经常遇到pdf怎么转成word,pdf怎么转成word,pdf怎么jpg图片等问题?别再为pdf转化格式难、而且还要付费而发愁了!这份pdf免费一…

Python OpenCV3 计算机视觉秘籍:6~9

原文:OpenCV 3 Computer Vision with Python Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候&…

IDAPython入门基础语法

文章目录 参考文章IDAPython简介常用函数获取界面地址的函数数值获取函数数值判断函数patch操作函数去除花指令实例 参考文章 IDAPython入门教程 基于IDA7.5_Python3 第一讲 简介与地址获取 IDAPython简介 IDAPython拥有强大的功能,在使用IDA分析程序时非常有用,可以简化许多…

QT 插件通信接口调用 CTK开发(四)

CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。为医学成像提供一组统一的基本功能;促进代码和数据的交互及结合;避免重复开发;在工具包(医学成像)范围内不断扩展到新任务,而不会增加现有任务的负担;整合并适应成功的解决方案。 本专栏文章较为全面…

信息安全复习三:古典密码之设计好的密码算法

一.章节梗概 讨论以下算法,理解怎么设计好的密码算法的关键问题 1.Caesar cipher 2.单字母表密码 3.Playfairmima 4.维吉尼亚密码 5.自动生成密码 二.Caesar cipher 2.1 穷举攻击 穷举攻击定义:尝试所有密钥直到有一个合法密钥能够把密文还原成明文&…

Docker私有仓库Harbor搭建及使用

文章目录 一、Harbor简介二、Harbor仓库部署三、Harbor仓库使用 一、Harbor简介 官网地址:https://github.com/goharbor/harbor Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等…

如何在Web上实现激光点云数据在线浏览和展示?

无人机激光雷达测量是一项综合性较强的应用系统,具有数据精度高、层次细节丰富、全天候作业等优势,能够精确测量三维现实世界,为各个行业提供了丰富有效的数据信息。但无人机激光雷达测量产生的点云数据需要占用大量的存储空间,甚…

SpringSecurity之权限模块设计

目录 前言 实现思路 代码结构 使用说明 前言 前面我们了解了关于微服务权限设计方案以及J W T的相关介绍,今天我们来聊一下,如何避免自己重复的写相同的代码,一次代码实现,即可完美复制到任何项目中实现权限相关的功能。 实现…

RK3568平台开发系列讲解(驱动基础篇)SMP(Symmetrical Multi-Processing)

🚀返回专栏总目录 文章目录 一、linux SMP 和 AMP二、linux SMP的启动流程三、CPU的描述:cpumask四、CPU之间的关系沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 SMP(Symmetrical Multi-Processing)。 一、linux SMP 和 AMP 目前支持多核处理器的实时操…

CxImage学习使用1:环境搭建

目录 前言 一、CxImage相关介绍 二、编译源码 三、将CxImage使用到自己的工程中 前言 CxImage是一个可以用于MFC 的C图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TI…

300元的蓝牙耳机什么牌子好?300内无线蓝牙耳机推荐

感受过无线的自在舒适后,越来越多的小伙伴爱上了蓝牙耳机白天出街更潇洒,目前市面上蓝牙耳机琳琅满目可选择性较多价格从几十、几百元到数千元不等然而蓝牙耳机的安全性、舒适性如何?连接稳吗?下面整理了几款300元价位的耳机分享给…

【CSDN周赛】第46期题解

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【CSDN周赛】 本篇文章目录 🌏一、吃吃吃🌸题目描述🌸题解 🌏二、n …

Java核心技术 卷1-总结-12

Java核心技术 卷1-总结-12 具体的集合链表数组列表 具体的集合 下表中除了以 Map结尾的类之外, 其他类都实现了 Collection 接口,而以 Map结尾的类实现了 Map 接口。 集合类型描述ArrayList一种可以动态增长和缩减的索引序列LinkedList一种可以在任何位…

MySQL高级篇——索引的创建与设计原则

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 一、索引的分类与使用 1.1 索引的分类 1.1.1. 普通索引 1.1.2. 唯一性索引 1.1.3. 主键索引(唯一非空) 1.1.4…

百度ai智能写作工具-百度ai自动写文章

百度AI智能写作工具:让创作更快捷、高效! 在当今竞争激烈的文化创意市场中,创作一篇高质量的文章需要投入大量时间和精力。然而,有了百度AI智能写作工具,创作变得更快捷、高效了。 百度AI智能写作工具采用最先进的人…

数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一,它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士,Matplotlib都是…