我正在构建一个以多列格式呈现给用户的菜单系统。CSS3 中的column-count属性让我完成了 90% 的工作,但在 Chrome 下对齐时我遇到了困难。
菜单比较简单:
- 由column-count 属性划分为多列的无序列表
- 列应按顺序填充,因此column-fill: auto
- 菜单项表示为列表项
- 每个列表项都有一个可点击的锚标签,通过display: block完全扩展
我遇到的对齐问题最明显的是每个列表项的顶部边框和一些背景颜色。在 Firefox 中,列表项总是在每一列中整齐地对齐,不会渗入上一列/下一列。在 Chrome 中,对齐是一个废话,随列表项的数量和任何填充/边距属性而变化。
我在这里发布了一个简单测试用例的代码:http: //pastebin.com/Ede3JwdG
问题应该立即显而易见:在 Chrome 中,第二列中的第一个列表项会渗入第一列。当您删除列表项(单击它们)时,您可以看到对齐方式进一步分解。
我尝试调整列表项的填充/边距,但无济于事:Chrome 似乎有一个有缺陷的算法,用于在多列布局中流动内容。
我没有完全放弃列数(支持手动生成/列生成器等)的主要原因是菜单系统还涉及跨多个子菜单的拖放功能,并布置了菜单数据作为一个有凝聚力的基于列表的层次结构使得代码干净。
有没有办法解决 Chrome 中的对齐问题,还是我现在应该放弃列数?
添加:
- jsFiddle 原型:http: //jsfiddle.net/VXsAU/
- JS Bin 原型:http: //jsbin.com/ebode5/