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

摘要:
思考最好的办法就是换行,由于工具栏支持ToolbarFill将工具栏分成左右两部分,以及左中右三部分,因此我们首先考虑的做法就是:1.在ToolbarFill处换行。因此ToolbarFill处换行解决不了某个区域过长的问题。这样适用面很广,不论工具栏哪一个部分超长,都没问题。

前言

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

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

一般遇到这种情况,我们会让用户设置 ShowPagingMessage=false 来隐藏右侧的分页信息,示例如下:

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

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

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

思考

最好的办法就是换行,由于工具栏支持 ToolbarFill 将工具栏分成左右两部分,以及左中右三部分,因此我们首先考虑的做法就是:

1. 在ToolbarFill处换行。

随着思考的深入,我们发现这个方法有缺陷,那就是如果左侧部分本身很多控件,同样会超出窗体的可见区域。因此ToolbarFill处换行解决不了某个区域过长的问题。

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

2. 当子项总长度超出边界时,忽略ToolbarFill,将所有子项作为一个整体自动换行

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

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

实现

思路理顺了,实现起来就顺理成章了,关键代码如下所示:

//:: 多行之间的间隔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

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

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

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

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

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

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

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

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

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

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

不忘初心,方得始终!

免责声明:文章转载自《【新特性速递】工具栏自动换行,再也不会重叠了!》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS邮箱验证-正则验证tree,js的简单实现内容显示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker部署Zabbix+Grafana监控

Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前zabbix最新版3.4.7 ,grafana最新版5.0.4 #下载部署代码 cd /opt git clone https://gitee.com/a...

HTTPS学习之教你弄透到底什么是HTTPS

本文谈谈我的看法,主要分为以下几个方面: HTTPS 协议是什么? HTTPS 是如何工作的? HTTPS 真的安全吗? 一、什么是 HTTPS HTTPS,也称作 HTTP over TLS,TLS 前身是 SSL,会有各个版本。TLS 协议在 TCP/IP 协议栈中的关系如下: 上图描述了在 TCP/IP 协议栈中 TLS(各子协议)和 HTTP...

利用 Charles Proxy 下载旧版本 iOS App

一、软件准备 1、旧版本 iTunes1.IPSW Downloads:https://ipsw.me/2.百度网盘链接:https://pan.baidu.com/s/11kdHbhqP_6wvcMWDa3HZNg 提取码:hj81 2、抓包工具 Charles Proxy1.Charles官网链接:https://www.charlesproxy.co...

安卓渗透和审计工具整理

1.cSploit: https://github.com/cSploit/android/releases 2.DroidSheephttp://bbs.zhiyoo.com/thread-13249611-1-1.html 3.androrathttps://github.com/wszf/androrat 4.Network Spoofhttps:/...

libcurl+openssl实现https爬虫

https图解: 1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。 2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书 3、客户端使用服务端返回的信息验证服务器的合法性,包括: 证书是否过期 发型服务器证书的CA是否可靠 返回的公钥是否能正确解开返回证书中的数字签名 服务器证书上的...

【hbase】【windows】安装及启动

参考文章:https://www.jianshu.com/p/db33aaa566cd 由于担心这么好的文章可能被删除等原因,所有一下基本都复制内容过来 1、环境、安装包等 JDK1.8.0_192(下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads....