Vue-Easytable列宽拖动效果修改

Vue-Easytable列宽拖动效果修改

        前一阵子俺们工地上来了几批歪脖开发人员,在与他们唠嗑过程中发现都在用一个叫Vue(读音:上排牙齿咬着下嘴唇说“呜优”)的前端框架,说是易上手、功能全,用起来贼带劲儿了,是目前国内最火的前端框架。尤其是相比于Facebook的React(读音:瑞爱科特)、Google的Angular(读音:俺哥有了),作者是个中国人,使用起来无所顾忌(这是什么鬼逻辑?)。

        俺一直想入坑歪脖前端,但又害怕搞不懂,问了个也在搞开发的同学Vue值不值得入坑,被鄙视了一番,好像俺是从哪个原始部落来的野蛮人,这么知名的东西都不知道,回复说“值,非常值,正适合你这种小白菜”。

        好嘛,上网搜了搜资料,折腾了几天,发现Vue果然对得起“上手容易、功能强大”这几个字。刚好手上有点数据库表,于是就想做个最俗套的小项目练练手——把数据显示在表格上。对于俺这种“拿来主义”的奉行者,当然要再找找有什么现成的表格插件啦,由于手上的数据不同字段的文本内容长短不一,发现用Vue写的插件中,只有一个叫Vue-Easytable的东西支持列宽拖动。经过一番代(fu)码(zhi)编(zhan)写(tie),麻溜的完工了,效果如下。

用Vue-Easytable制作的Web网页

        但俺马上就发现这个插件的列宽拖动效果有点别扭,与原来习惯了Word、Excel表格列拖动效果有点区别。

Word中的列宽拖动效果


Vue-Easytable中默认的列宽拖动效果

        可以看出,当拖动增加一列的宽度时,其他列的宽度不变,表格整体宽度增加,这时候在表格右侧、下方出现了滚动条,与表格极不谐调。当缩小一列的宽度时,表格右侧出现了一列空白区域,非常不好看。身为强迫症的俺,自然是看不下去,想着使用量这么广泛的表格插件应该有现成的解决方法吧,查了它的API后发现没有,这可咋整呢?以前没写过JavaScript(读音:加娃四科瑞普特),只能硬着头皮改啦。

        首先当然要找到拖动列宽的效果在哪个文件中定义,翻了node_modules下的Vue-Easytable文件夹,发现在“vue-easytable\libs\v-table\src”文件夹下有个drag-width-mixin.js文件,名字都起的这么直白自然就是你了。打开看了看,大致了解一下列宽拖动的原理。

        第一个函数handleTitleMouseMove中找到用户拖动的是哪个列,并将它写入全局变量this.draggingColumn中:this.draggingColumn = this.internalColumns.find(function (x) {return x.field === column;}),find这玩意儿的参数中套了个匿名函数,俺以前只搞过西佳佳,哪见过这种东东,可给俺整蒙了。后来整明白了,大致相当于西佳佳中的函数参数,只不过那里传入的是函数的地址,这里把整个函数都传进去了,这句话的意思是在internalColumns这个集合中,找到能使x.field === column成立的元素,就是俺们当前拖动的这列啦。

        最后一个函数handlDragMouseUp中根据鼠标up与开始down时的位置偏移,计算列宽新的大小。

var differ = this.draggingEndX - this.draggingStartX;

draggingColumn.width += differ;

        改完draggingColumn的列宽后,看表格总宽度是否小于this.internalWidth,如果大于的话,就要整点幺蛾子:rightViewBody.style.overflowX = 'scroll';把这个难看的滚动条显示出来。所以俺第一件事当然是把这句话注释掉啦。

        接下来俺引入了一个全局变量rightAdjacentColumn,用来保存当前被拖动的列的右边那列。俺再来改第一个函数handleTitleMouseMove。如果被拖动的列是最右边那列,就直接返回,避免表格整体宽度缩小,如下图。

        再把找到draggingColumn的代码改为如下所示。

        然后修改最后一个函数handleDragMouseUp,大致意思为draggingColumn列宽增加了多少,它右边的rightAdjacentColumn列宽就减少多少。

        最后发现还是有点不对劲儿,需要修改setDragLinePosition这个函数,让draggingColumn和rightAdjacentColumn的列宽不能小于最小值。

        完事之后的最终效果如下。

修改之后的Vue-Easytable列宽拖动效果

        终于完工啦,和Word、Excel中的表格效果一样,把俺的强迫症治好了。回想一下其实一大半的时间都花在读代码上了,弄懂每个变量和函数的意思后,改起来就不费劲了,作为一个国产的主流框架,俺们还是要多多支持。不过鉴于俺的审美比较独特,就不传到github上去了。

        改完后顺眼多了,再加上这几天工地上拿来了新的扫把,不再用以前的烧火棍扫地了,挥起扫把来呼呼的。接下来俺要把歪脖前端整明白,之后再搞搞后端,到时候俺也在村里开个培训班,带领俺们屯里的老少爷们奔小康。

        完结撒花!(*^__^*)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 用条件格式扮靓报表 1.基本用法.1.1条件格式--突出显示单元格规则(大于 等于 小于等等)。1.2查找重复值。...
    李素一阅读 153评论 0 0
  • 我爱玩,各种没体验过的都想玩。家门口有迪斯尼,那简直让我乐坏了! 试运行时,我有幸被小伙伴邀去体验。...
    绿野暖风阅读 282评论 0 2
  • 由于今年的情况比较特殊,为了春节期间的行程安排,不得已将家庭团年饭提前到腊月廿九日。虽然匆忙间那顿团年饭制作的比较...
    夏野阅读 882评论 0 0
  • 伊晨xl阅读 114评论 0 0
  • Day 1:拿起《女子幸福课》这本书,开篇的问题让我陷入了沉思。一直不断的在追求幸福和自我成长,却从来没有真正认真...
    fiona_3981阅读 302评论 2 6