位置: IT常识 - 正文

常用的前端大屏 适配方案(常用的前端大屏软件)

编辑:rootadmin
常用的前端大屏 适配方案 方案实现方式优点缺点vm vh1.按照设计稿的尺寸,将px按比例计算转为vw和vh1.可以动态计算图表的宽高,字体等,灵活性较高 2.当屏幕比例跟 ui 稿不一致时,不会出现两边留白情况1.每个图表都需要单独做字体、间距、位移的适配,比较麻烦scale1.通过 scale 属性,根据屏幕大小,对图表进行整体的等比缩放1.代码量少,适配简单2.一次处理后不需要在各个图表中再去单独适配 3.文字,图片等大小均能自动适配1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况2.当缩放比例过大时候,字体会有一点点模糊,就一点点3.当缩放比例过大时候,事件热区会偏移。插件v-scale-screen是使用 css 属性 transform 实现缩放效果的一个大屏自适应组件,通过 scale 进行等比例计算,达到等比例缩放的效果可以通过api调整原稿的宽高方案一:vw vh

推荐整理分享常用的前端大屏 适配方案(常用的前端大屏软件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端 大屏,前端大屏解决方案,常用的前端大屏软件,前端大屏解决方案,常用的前端大屏 适配方案 原创,常用的前端大屏有哪些,常用的前端大屏手机,常用的前端大屏有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

1.当屏幕正好为16:9的时候

2.当屏幕的尺寸比例大于 16:9 (左右拉长)

3.当屏幕的尺寸比例小于 16:9 时(左右变窄或者上下拉高)

实现方法: css 方案 - sass utils.scss

// 使用 scss 的 math 函数,https://sass-lang.com/documentation/breaking-changes/slash-div@use "sass:math";// 默认设计稿的宽度$designWidth: 1920;// 默认设计稿的高度$designHeight: 1080;// px 转为 vw 的函数@function vw($px) { @return math.div($px, $designWidth) * 100vw;} // px 转为 vh 的函数@function vh($px) { @return math.div($px, $designHeight) * 100vh;}复制代码

路径配置只需在vue.config.js里配置一下utils.scss的路径,就可以全局使用了 vue.config.js

module.exports = {css: {loaderOptions: {sass: {prependData: `@import "@/assets/css/utils.scss";`}}},}在 .vue 中使用<template> <div class="box"> </div></template><script>export default{ name: "Box",}</script><style lang="scss" scoped="scoped">/* 直接使用 vw 和 vh 函数,将像素值传进去,得到的就是具体的 vw vh 单位 */.box{ width: vw(300); height: vh(100); font-size: vh(16); background-color: black; margin-left: vw(10); margin-top: vh(10); border: vh(2) solid red;}</style>

css 方案 - less

utils.less@charset "utf-8";// 默认设计稿的宽度@designWidth: 1920;// 默认设计稿的高度@designHeight: 1080;.px2vw(@name, @px) { @{name}: (@px / @designWidth) * 100vw;}.px2vh(@name, @px) { @{name}: (@px / @designHeight) * 100vh;}.px2font(@px) { font-size: (@px / @designWidth) * 100vw;}路径配置在vue.config.js里配置一下utils.less<style lang="less" scoped="scoped">/* 直接使用 vw 和 vh 函数,将像素值传进去,得到的就是具体的 vw vh单位 */.box{ .px2vw(width, 300); .px2vh(height, 100); .px2font(16); .px2vw(margin-left, 300); .px2vh(margin-top, 100); background-color: black;}</style>定义 js 样式处理函数// 定义设计稿的宽高const designWidth = 1920;const designHeight = 1080;// px转vwexport const px2vw = (_px) => { return (_px * 100.0) / designWidth + 'vw';};export const px2vh = (_px) => { return (_px * 100.0) / designHeight + 'vh';};export const px2font = (_px) => { return (_px * 100.0) / designWidth + 'vw';};

屏幕变化后,图表自动调整 这种使用方式有个弊端,就是屏幕尺寸发生变化后,需要手动刷新一下才能完成自适应调整

为了解决这个问题,你需要在各个图表中监听页面尺寸变化,重新调整图表,在 vue 项目中,也可以借助element-resize-detector,最好封装个 resize 的指令,在各图表中就只要使用该指令就可以了,毕竟作为程序员,能偷懒就偷懒。

解决方案一 1:安装 element-resize-detector

npm install element-resize-detector --save

2:封装成自定义指令使用

// directive.jsimport * as ECharts from "echarts";import elementResizeDetectorMaker from "element-resize-detector";import Vue from "vue";const HANDLER = "_vue_resize_handler";function bind(el, binding) { el[HANDLER] = binding.value ? binding.value : () => { let chart = ECharts.getInstanceByDom(el); if (!chart) { return; } chart.resize(); }; // 监听绑定的div大小变化,更新 echarts 大小 elementResizeDetectorMaker().listenTo(el, el[HANDLER]);}function unbind(el) { // window.removeEventListener("resize", el[HANDLER]); elementResizeDetectorMaker().removeListener(el, el[HANDLER]); delete el[HANDLER];}// 自定义指令:v-chart-resize 示例:v-chart-resize="fn"Vue.directive("chart-resize", { bind, unbind });常用的前端大屏 适配方案(常用的前端大屏软件)

3:main.js 中引入

import '@/directive/directive';

4:html 代码中使用

<template> <div class="linechart"> <div ref="chart" v-chart-resize class="chart"></div> </div></template>

这里要注意的是,图表中如果需要 tab 切换动态更新图表数据,在更新数据时一定不要用 echarts 的 dispose 方法先将图表移除,再重新绘制,因为 resize 指令中挂载到的图表实例还是旧的,就监听不到新的 chart 元素的 resize 了,更新数据只需要用 chart 的 setOption 方法重新设置配置项即可。

解决方案二 1.在echarts中可以echarts.init(chatDom).resize()来解决宽高的自适应问题

let chatDom = document.getElementById('main');let myChart = this.$echarts.init(chatDom);//根据父盒子的尺寸调整echarts的大小setTimeout(() => {window.addEventListener('resize', () => {this.$echarts.init(chatDom).resize();});}, 20);

2.在DataV中可以添加key来解决

<dv-water-level-pond :config="config2" :key="key" ref="pie2" />data(){ return { key: 1 } }, mounted() {this.pieOutlineFunc();}, methods: {pieOutlineFunc() {var _this = this;window.addEventListener('resize', function (e) {_this.$nextTick(() => {console.log(_this.$refs.pie2);_this.key++;});});}}

方案二:csale 通过 css 的 scale 属性,根据屏幕大小,用js监测屏幕的大小变化对图表进行整体的等比缩放,从而达到自适应效果 当屏幕的尺寸比例刚好是 16:9 时,页面能刚好全屏展示,内容占满显示器

当屏幕尺寸比例大于 16:9 时,上下左右留白,左右占满并居中,显示比例保持 16:9 当屏幕尺寸比例大于 16:9 时,页面左右留白,上下占满并居中,显示比例保持 16:9

代码 html

<template><div class="screen-root"><div class="screen" id="screen"><div class="div1"><h1>11111111111</h1></div><div class="div2"><h1>2222222222</h1></div><div class="div3"><h1>3333333333</h1></div></div></div></template>

js

<script>export default {mounted() {// 初始化自适应 ----在刚显示的时候就开始适配一次this.handleScreenAuto();// 绑定自适应函数 ---防止浏览器栏变化后不再适配window.onresize = () => this.handleScreenAuto();},deleted() {window.onresize = null;},methods: {// 数据大屏自适应函数handleScreenAuto() {const designDraftWidth = 1920; //设计稿的宽度const designDraftHeight = 1080; //设计稿的高度// 根据屏幕的变化适配的比例const scale =document.documentElement.clientWidth / document.documentElement.clientHeight <designDraftWidth / designDraftHeight? document.documentElement.clientWidth / designDraftWidth: document.documentElement.clientHeight / designDraftHeight;// 缩放比例document.querySelector('#screen').style.transform = `scale(${scale}) translate(-50%,-50%)`;return 1;}}};</script>

css

<style lang="scss" scoped>/* 除了设计稿的宽高是根据您自己的设计稿决定以外,其他复制粘贴就完事*/h1 {color: red;font-size: 50px;}.screen-root {height: 100vh;width: 100vw;.screen {display: inline-block;width: 1920px; //设计稿的宽度height: 1080px; //设计稿的高度transform-origin: 0 0;position: absolute;left: 50%;top: 50%;border: 2px solid rgb(31, 210, 145);box-sizing: border-box;display: flex;.div1 {background-color: #fff;height: 100%;text-align: center;flex: 0 1 30%;}.div2 {background-color: rgb(133, 14, 14);height: 100%;text-align: center;flex: 0 1 40%;}.div3 {background-color: rgb(61, 6, 188);height: 100%;text-align: center;flex: 0 1 30%;}}}</style>

方案三:插件v-scale-screen 它其实也是通过 scale 进行等比例计算放大和缩小的,和方案二的原理是一样的,还可以通过api调整样式,源码地址和对应的API。

使用方法: 1.vue2请使用v-scale-screen@1.0.0版本,vue3请使用v-scale-screen@2.0.0版本

npm install v-scale-screen@1.0.0 -save# oryarn add v-scale-screen

2.使用-vue2中使用插件导入,vue3以组件导入

vue2// main.jsimport VScaleScreen from 'v-scale-screen'Vue.use(VScaleScreen)组件内使用//html<v-scale-screen width="1920" height="1080" :boxStyle="boxStyle"> <div> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> </div></v-scale-screen>//jsdata() {return {boxStyle: {backgroundColor: 'green'},}vue3<v-scale-screen width="1920" height="1080"> <div> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> <v-chart>....</v-chart> </div></v-scale-screen><script>import VScaleScreen from 'v-scale-screen'export default { components:{ VScaleScreen }}</script>

——————————————— 本文为CSDN博主「鲁少聚」的原创文章,遵循CC 4.0 BY-SA版 原文链接:https://blog.csdn.net/L1147484597/article/details/128443705

本文链接地址:https://www.jiuchutong.com/zhishi/287967.html 转载请保留说明!

上一篇:vue3+Naive UI数据表格基本使用方式(vue ui怎么用)

下一篇:若依框架(前后端分离)打war包部署到linux(若依框架前后端分离手机号登录)

  • python合并多个excel

    python合并多个excel

  • 支付宝系统时间设置在哪里

    支付宝系统时间设置在哪里

  • 苹果xr有几种截屏方法(苹果xr有几种截屏方式)

    苹果xr有几种截屏方法(苹果xr有几种截屏方式)

  • 华为荣耀20青春版屏幕尺寸多大(华为荣耀20青春版换屏幕多少钱)

    华为荣耀20青春版屏幕尺寸多大(华为荣耀20青春版换屏幕多少钱)

  • 小英文字母怎么打出来(小英文字母怎么拼)

    小英文字母怎么打出来(小英文字母怎么拼)

  • 苹果11通话设置在哪(苹果11手机通话怎么录音)

    苹果11通话设置在哪(苹果11手机通话怎么录音)

  • 可以删除字符串尾部空格的函数(删除字符串中的指定字符,字符串和要删除)

    可以删除字符串尾部空格的函数(删除字符串中的指定字符,字符串和要删除)

  • 抖音直播字是反的怎么办(抖音直播间字是反的)

    抖音直播字是反的怎么办(抖音直播间字是反的)

  • 华为mate30呼叫转移在哪里(华为mate30呼叫转移网络响应异常)

    华为mate30呼叫转移在哪里(华为mate30呼叫转移网络响应异常)

  • 抖音有浏览足迹吗(抖音有浏览足迹怎么删除)

    抖音有浏览足迹吗(抖音有浏览足迹怎么删除)

  • 美团拼单能送两个地址吗(美团外卖好友拼单可以送两个地方吗)

    美团拼单能送两个地址吗(美团外卖好友拼单可以送两个地方吗)

  • 钉钉在苹果手机上闪退(钉钉在苹果手机怎么下载不了)

    钉钉在苹果手机上闪退(钉钉在苹果手机怎么下载不了)

  • 流式传输hdr视频有什么用(流式传输hdr视频开不开)

    流式传输hdr视频有什么用(流式传输hdr视频开不开)

  • 小米手环4和华为手环4区别是什么(小米手环4和华为手环4)

    小米手环4和华为手环4区别是什么(小米手环4和华为手环4)

  • 爱奇艺会员时间怎么计算(爱奇艺会员时间叠加吗)

    爱奇艺会员时间怎么计算(爱奇艺会员时间叠加吗)

  • 金羚洗衣机e2是什么故障(金羚洗衣机e2是什么故障维修视频)

    金羚洗衣机e2是什么故障(金羚洗衣机e2是什么故障维修视频)

  • 南方cass标注样式设置(南方cass标注样式管理器快捷键)

    南方cass标注样式设置(南方cass标注样式管理器快捷键)

  • 抖音号没绑定怎么登录(抖音号没绑定怎么登录不了)

    抖音号没绑定怎么登录(抖音号没绑定怎么登录不了)

  • 歌曲怎么上酷我音乐(歌曲怎么上酷我音乐会员)

    歌曲怎么上酷我音乐(歌曲怎么上酷我音乐会员)

  • 小米6支持多少w充电(小米6支持多少W快充)

    小米6支持多少w充电(小米6支持多少W快充)

  • 华为手机保修期是多久(华为手机保修期多长时间)

    华为手机保修期是多久(华为手机保修期多长时间)

  • 华为mate20pro能用水洗吗(华为mate20pro能用6a数据线吗)

    华为mate20pro能用水洗吗(华为mate20pro能用6a数据线吗)

  • 1660ti配什么显示器(1660ti要配什么cpu)

    1660ti配什么显示器(1660ti要配什么cpu)

  • p30什么时候上市(p30什么时候上市时间)

    p30什么时候上市(p30什么时候上市时间)

  • 华为p30与p20对比(华为p30与p20对比有什么不同)

    华为p30与p20对比(华为p30与p20对比有什么不同)

  • 德拉海滩Wakodahatchee湿地的大蓝鹭,佛罗里达州 (© Marie Hickman/Getty Images)(海滨德拉海滩庄园别墅)

    德拉海滩Wakodahatchee湿地的大蓝鹭,佛罗里达州 (© Marie Hickman/Getty Images)(海滨德拉海滩庄园别墅)

  • 房地产企业利息资本化的条件
  • 疫情期间生活服务业免征增值税截止时间
  • 网络贷款需要缴纳保证金吗
  • 支付增值税税控系统技术维护费用500元
  • 车辆购置税计税依据包括消费税吗
  • 融资租赁营改增时间
  • 个人独资交什么税?
  • 电子设备税费
  • 红冲暂估原材料如何做会计分录
  • 虚开发票企业所得税怎么补缴税?
  • 中小微企业优惠政策落实措施
  • 对方电子承兑发出多长时间可以到账
  • 收到的抵债资产属不属于所有者权益
  • 出口退税的企业范围
  • 稳岗补贴需要交个税吗
  • 财产收购的税务处理
  • 工会发放慰问品总金额超过多少需要比价
  • 增值税预缴税款表项目编号是什么
  • 建筑完税怎么计算
  • 税前扣除税后扣除
  • 监控工程付款方式
  • mysql的minus
  • 系统更新到win11后还可以调回win10吗
  • php字符串型数据的定义方式
  • win10telnet不是内部或外部命令教程
  • 增值税发票月末怎么账务处理
  • mplugin.exe是什么
  • PHP aes (ecb)解密后乱码问题
  • php image
  • wordpress文章主题
  • 会计账务处理年限规定
  • 新能源企业所得税税率是多少
  • php redis秒杀高并发解决方案
  • 基于网络创新形成的大数据的最突出特征是什么?( )
  • 用友固定资产折旧方法
  • 职工医保报销后病情会泄露给单位吗
  • 自建厂房流程
  • 合同印花税可以年底报一次
  • 资产负债表投资性房地产怎么填
  • 固定资产净残值账务处理
  • 发票超额怎么办
  • 血液制品增值税税率
  • 免税黄金什么意思
  • 财务往来账对账总结
  • 我有朋友吗朋友圈说说
  • mysql分片sql
  • 避税的形式
  • 开票有误重新开票怎么做分录
  • 生日卡和过节卡一样吗
  • 员工报销医药费怎么做会计分录
  • 销售返现如何做账务处理
  • 出差补贴如何账务处理
  • 销项税小于进项税怎么结转
  • 会计凭证审核标准有哪些
  • mysql5.6怎么用
  • win10预览版21277
  • win2000系统
  • 360 sesvc.exe
  • 让Windows Server 2008系统安全更上一层楼
  • docker安装位置
  • ubuntu kde gnome
  • centos 3
  • sata驱动怎么装
  • xp系统在新建账户怎么弄
  • xp电脑桌面图片显示缩略图
  • win7怎么查看
  • win10开机提示xwz
  • win7系统垃圾手动清理
  • win10如何打开hlp文件
  • 如何修改windows密码策略
  • unity3d4个脚本
  • javascript XMLHttpRequest对象全面剖析
  • 比较常见的电子商务模式
  • jquery console.log
  • 现在德国的普通话怎么样
  • 湖北税务登不上去是怎么了
  • 外经证办理流程在哪个网站申请
  • 税费算管理费用还是财务费用
  • 下抓两级抓深一层的工作机制的要求包括什么
  • 公寓限购是好事吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设