【新特性速递】工具栏自动换行,不再会重叠了!

前言

不少网友都会遇到这个问题,在手机平板等小屏幕设备上,表格分页工具栏右侧的分页信息会和左侧的分页按钮重叠:css

 

通常遇到这种状况,咱们会让用户设置 ShowPagingMessage=false 来隐藏右侧的分页信息,示例以下:工具

https://pro.fineui.com/#/gridpaging/gridpaging_database.aspx布局

 

但这终究不是一个好办法,如何能同时兼顾大屏幕和小屏幕呢?ui

思考

最好的办法就是换行,因为工具栏支持 ToolbarFill 将工具栏分红左右两部分,以及左中右三部分,所以咱们首先考虑的作法就是:spa

1. 在ToolbarFill处换行。设计

随着思考的深刻,咱们发现这个方法有缺陷,那就是若是左侧部分自己不少控件,一样会超出窗体的可见区域。所以ToolbarFill处换行解决不了某个区域过长的问题。code

那不如就忽略ToolbarFill好了,这就是最终定下的换行策略:blog

2. 当子项总长度超出边界时,忽略ToolbarFill,将全部子项做为一个总体自动换行get

我在草纸上画了一个简略的设计草稿,不知道你是否能看出个大概意思:iframe

 

实现

思路理顺了,实现起来就瓜熟蒂落了,关键代码以下所示:

//:: 多行之间的间隔
var paddingBottom = parseInt(me._fjs_el.css('padding-left'));

var count = me.items.length;
var startIndex = 0, startTop = 0;
do {
    var result = me._fjs_adjustMultiLineItems(startIndex, count - 1, startTop);
    if(result[0] === count) {
        startTop += result[1];
        break;
    }
    
    startIndex = result[0];
    startTop += result[1] + paddingBottom;
} while(true);

将全部子项做为一个总体考虑,_fjs_adjustMultiLineItems 会一项一项的布局,遇到超出容器边界,就换到下一行。这样适用面很广,不论工具栏哪个部分超长,都没问题。

效果对比

1. https://pro.fineui.com/#/iframe/grid_iframe.aspx

 

2. https://pro.fineui.com/#/gridpaging/gridpaging_pagingtype.aspx

 

3. https://pro.fineui.com/#/gridpaging/gridpaging_pageitems_rowexpander.aspx

 

4. https://pro.fineui.com/#/gridpaging/gridpaging_pageitems_rowexpander.aspx

5. https://pro.fineui.com/#/toolbar/toolbar_multi.aspx

 

注: 本功能会在 FineUIPro/Mvc/Core v5.6.0 中支持,下载基础版请先加入知识星球:https://fineui.com/fans/ 

 

不忘初心,方得始终!

相关文章
相关标签/搜索