这篇文章记录了我开发中遇到的问题和解决方法。

1、确定需要适配屏幕的大小,虽然我们前端默认大屏的1920*1080起步的,但是防止有人不懂开发前需要新搞清楚适配范围;

2、和UI说清楚字体大小尽量在12px以上,一是12px以下写起来麻烦;二是12px以下在大屏中展示效果不好;

3、不同大小屏幕的适配方法 我使用的是zoom,其中1920是设计稿的宽度

const s = window.innerWidth / 1920document.body.style.zoom = s + ''

当然transform scale 和rem等方式也行;

4、大屏中有很多样式很难实现,可能会使用很多图片代替,图片太多可以使用雪碧图来优化;

5、DataV组件库中的轮播表config数据更新后视图不发生变化的解决方法:

this.config.data = ['foo', 'foo']是无效的this.config = { data: ['foo', 'foo'] }才是有效的

6、3d柱形图的实现:模仿了
https://gallery.echartsjs.com/editor.html” />

使用背景图片

background-position: ${100 - item.‘百分比’}%;

8、 折线图渐变背景色:模仿https://echarts.apache.org/examples/zh/editor.html?c=line-tooltip-touch

9、点击屏幕左边在屏幕右边弹窗,点击屏幕右边在屏幕左边弹窗功能的实现(配合3中的zoom可适配不同屏幕),
使用下面代码可以获取点击的位置;

function getElementPos (elementId) {var ua = navigator.userAgent.toLowerCase()var el = document.getElementById(elementId)if (el.parentNode === null || el.style.display === 'none') {return false}var parent = nullvar pos = []var boxif (el.getBoundingClientRect) { // IEbox = el.getBoundingClientRect()var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop)var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft)return { x: box.left + scrollLeft, y: box.top + scrollTop }} else if (document.getBoxObjectFor) { // geckobox = document.getBoxObjectFor(el)var borderLeft = (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth) : 0var borderTop = (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth) : 0pos = [box.x - borderLeft, box.y - borderTop]} else { // safari & operapos = [el.offsetLeft, el.offsetTop]parent = el.offsetParentif (parent !== el) {while (parent) {pos[0] += parent.offsetLeftpos[1] += parent.offsetTopparent = parent.offsetParent}}if (ua.indexOf('opera') !== -1 || (ua.indexOf('safari') !== -1 && el.style.position === 'absolute')) {pos[0] -= document.body.offsetLeftpos[1] -= document.body.offsetTop}}if (el.parentNode) {parent = el.parentNode} else {parent = null}while (parent && parent.tagName !== 'BODY' && parent.tagName !== 'HTML') { // account for any scrolled ancestorspos[0] -= parent.scrollLeftpos[1] -= parent.scrollTopif (parent.parentNode) {parent = parent.parentNode} else {parent = null}}return { x: pos[0], y: pos[1] } // 返回点击位置的坐标}this.isLeft = getElementPos(idName).x > 960