开发经验满满的前辈们,此篇文章或许对大家来说并不值得一提,这里说的主要面向对象是小白,或者欠缺点经验的开发者们(懂echarts的更佳)。这里聊得是引导你们如何去思考一个问题,以我所在项目为例子,阐述个人思考方式和思路,也许对于某些人来说,能给予一些启发。这里说的没有对与错之分,我说的也未必都是正解,纯粹地一个我的总结和分享,我也是一个小小白。若有错误请多见谅,不喜勿喷!css
以这界面中红框部分为例子,用echarts实现,图形都是比较基础的饼图和柱状图。想必你们都以为这个很好实现吧。假设你知道echart的这两种图的基本配置项,你们的第一感受是否是以为,这个so easy?canvas
假设你的老板叫你评估个时间作出来,可能你会凭感受地脱口而出,1-2个小时吧,甚至更短?echarts
若是我在这里加个提醒,叫你们尽量去考虑全面再去回答老板的问题,是否,直到这里,你跟刚刚的想法发生了较大的变化?布局
这是分界线,在这以前,你们仍是能够好好考虑全面一下,跟接下来,我要说的,对比一下测试
咱们知道,这里是有两个echart图,能够当作两个div,放在一行,能够用flex
div {
display: inline-block;
width: 50%;
}
/** or **/
div {
float: left;
width: 50%;
}
复制代码
来实现,想必各位第一反应也是这两个吧,反正我是的。ui
进一步去想,屏幕会变大缩小,若是缩小到很小的话,相比二者挤不下一行了,这时就要换行。那么,可能用flex布局,更加方便,都不用本身写媒体查询就能够智能的实现了。
然而,等到你真正去写的时候,会发现,布局乱糟糟,达不到预期,为什么?
缘由在echart图形自己的布局上,因为本来让echart正常展现的功能,会存在position等布局css样式,咱们都知道,使用flex布局,其子元素的一些布局样式会失效。 所以,这种方案不可行。 很遗憾,咱们仍是经过媒体查询去处理这种状况吧。编码
接下来,在图中看到spa
虽然说这是两个div,可是其实并无紧挨在一块儿的,从美观上讲,的确,须要用空白的间隔会更好看。那么怎么处理这个空白间隔呢? 想必你们都以为这个有什么好讲的,搞个margin或者padding不就行了嘛,emmm...我一开始也是这么想的,可是准备写代码的时候,就会以为好麻烦(- _ - 我懒):3d
思路很清晰,实现起来也是很是简单的。可是,我后来仍是放弃了,
第一我以为,少点类名,代码更漂亮;
第二,我以为起名字好烦啊,用伪类?能够啊,可是也要处理好可否真的定位好这个,撇去自己项目的代码的一个总体环境,其实也是很简单的,可是当置于一个复杂的代码环境里,各类命名错综复杂的状况下,少用伪类仍是较为保险;
第三,我不想计算;
第四,关键的关键是,我以为存在更好的办法。
更好的办法(仍是要类名,可是项目里我是统一了两个类名)
/** 这两个类名估计你们都很熟悉,可是我项目没有引用boostrap,这是我本身定义的全局类名 **/
.pull-left {
float: left!important;
}
.pull-right {
float: right!important;
}
复制代码
回到这个图里,我为第一个div设置了pull-left类名,第二个div设置了pull-right类名。
可是他们的宽度再也不是width: 50%了,改为更小的值,以便留出须要的空白空间。(固然,有些人可能一开始就想到用这个布局了,这里只是在引导一个思考方式,最终造成一个好的思路而已)
开发者们都深有体会,要实现一个ui图上的页面不难,难就难在,存在多种状况,多种未知因素,进而致使的个别特殊状况或极端状况。若是说,开发时间为100%,那么还原ui图的状况(正常的状况),占据了70%时间,30%就花在处理这些极端状况上了。内心面就以为很愤懑不平,明明这些特殊状况和极端状况出现几率那么小,缺花费了那么多时间去搞,甚至把代码都搞得更复杂,维护也很差。可是,这就是现实,没办法了,咱们能作的就是,在开始coding前,尽可能全面考虑,从中制定方案,避免开发到一半发现写不下去更换方案这就尴尬了。
废话很少说,这里会有什么特殊状况呢?以饼图为例子。
说一下大体背景需求,这里的饼图有多少组数据不是固定的,什么意思,图上不是有六组数据嘛(红书发布、搜狗搜索...),就是图上六中颜色的数据嘛。这些数据个数,都是未知的,可能不少可能不多。
了解基础背景后,你们有什么想法。
因为这些数据个数都是未知的,所以咱们要考虑好两个极端的状况,很是少数据的状况(也就是1组数据),一个是不少数据(无穷)。 会对图形有什么影响?变如今?
上面也说了,有多少组数据都是未知,那么这些数据的名称(小红书发布这些...)也是未知的,天然这些名称长度也是未知的。那么问题就来了,若是名字很长怎么办?
思路:
三) 既然数据的名称会有很长的状况,那么天然而然,对应的tooltip上的名称,也会很长。 这里的tooltip有两种,一种是悬浮在饼图上的tooltip,一个是悬浮在图例上的tooltip
不论哪一种tooltip,存在的问题性质上是同样的。
大概要想说的就这么点了,其实真要处理起来,细节的东西仍是不少的,不过我也很少说了。但愿你们之后在拿到ui图拿到需求后,不要过于着急立刻进行开发,仍是先理解好需求,考虑好各类状况下,在进行编码。此篇文章或许对你思考起到那么丁点做用,这样我也感到开心。 祝各位开发者愈来愈厉害~~~