自打很久很久以前,Flarum 的导航栏就存在着项目堆得过多而溢出的现象。当然,现在好得多了,站长们也不想看到丑丑的溢出,通常就会使用两个手段,一个是手动控制项目数量,另一个是分组收纳到下拉菜单里面(对,我说的是 fof-links)。这两个方法都可行,不过既不能充分利用导航栏空间,也不够灵活。
作为对现有导航栏的一个扩展增强,我在 Fluent 中为导航栏实现了动态折叠功能,行为上类似于一个知名库 okayNav。这个导航栏可以把溢出的项目自动移动到一个下拉菜单中,因此就不会再有任何项目被挤到外面,还能尽可能地填满导航栏上的可用空间。
虽然是给 Fluent 做的,不过先看看效果……
(目前不知道为什么上传文件会报 HTTP 500 错误,先放个外床吧)
(……或者直接去看我原本发的地方)
作为对 DaleZ 中所作的承诺,这个功能之后也会拆分为一个独立的扩展发布。不过光拆出来不够……Fluent 另外还大改了导航栏布局,如果是在普通 Flarum 上安装的话,很多人应该还是希望尽可能保留原始外观的。所以,我们来看看有哪些差异,然后您可以来说说,如何处理这些差异可能会较为合适。
- 应该如何管控可用的空间?
在 Fluent 中,导航栏上的搜索框被单独拎出来放在了正中间,把导航栏的剩余空间一分为二,正好分给左右两侧的项目。这样,对于两边的项目来说,有多少空间可用,要折叠多少项目,都是确定的,我们分配的时候就比较容易了。
而原始的导航栏则不然。左右两侧的项目实际上共享同一个空间,应该给左边和右边分别分配多少就不确定了。
- 怎么处理搜索框?
- 搜索框本身面积就很大,地位又很重要,如果把它折叠到下拉菜单里面,那看着就很奇怪了。在 Fluent 中,用于容纳折叠项目的“更多”下拉菜单在一堆右侧的项目中排在第一位(对于左侧则是最后一位),如果调整窗口大小使可用空间变小,就会逐个隐藏第二、三、四(等)个项目直到无溢出。如果我们不想把搜索框也一块折叠掉,把“更多”下拉菜单放在搜索框的右边视觉逻辑上可能更合理些,不过逻辑是不是就没法再沿用上面提到的那样了呢?
- 在小窗口中,搜索框本身会收缩到一个图标大小,只在点开的时候会扩大成一个搜索框。但是在扩大这个过程中,是有一个宽度的过渡动画的,这个动画对于检测实际可用空间存在影响。在给 Fluent 写这个功能的时候,导航栏本身也有一个宽度过渡动画,窗口大小改变的时候功能就没法正常工作,最后我们直接拿掉了这个过渡动画。对于一般的 Flarum,搜索框的过渡动画需要拿掉吗?如果拿掉,之后又应该怎么显示搜索框?
目前我就只想到这些。如果您看完之后也有一些想法,欢迎分享。
如果想看看具体是怎么实现的这个功能,在这查看。