【发布时间】:2011-07-15 22:38:30
【问题描述】:
我正在构建一个以多列格式呈现给用户的菜单系统。 CSS3 中的 column-count 属性让我完成了 90% 的工作,但我在 Chrome 下无法对齐。
菜单比较简单:
- 由column-count 属性划分为多列的无序列表
- 列应该按顺序填充,所以 column-fill: auto
- 菜单项表示为列表项
- 每个列表项都有一个可点击的锚标记,通过 display:block 完全扩展
我遇到的对齐问题最明显的是每个列表项的上边框和一些背景颜色。在 Firefox 中,列表项总是在每一列中整齐地对齐,不会渗入上一列/下一列。在 Chrome 中,对齐是一个废话,会根据存在的列表项的数量和任何填充/边距属性而有所不同。
我在这里发布了一个简单测试用例的代码:http://pastebin.com/Ede3JwdG
问题应该立即显而易见:在 Chrome 中,第二列中的第一个列表项会渗入第一列。当您删除列表项(单击它们)时,您会看到对齐方式进一步分解。
我尝试调整列表项的填充/边距但无济于事:Chrome 似乎有一个有缺陷的算法来处理跨多列布局的内容流动。
我没有完全放弃列数(支持手动生成/列生成器等)的主要原因是菜单系统还涉及跨多个子菜单的拖放功能,并且具有菜单以基于列表的层次结构的内聚形式布局的数据使代码更简洁。
有没有办法解决 Chrome 中的对齐问题,还是我现在应该放弃 column-count?
添加:
- jsFiddle 原型:http://jsfiddle.net/VXsAU/
- JS Bin 原型:http://jsbin.com/ebode5/
【问题讨论】:
-
很高兴您发布了一个指向您的代码的链接,但如果您在此处粘贴原型会更有帮助:jsfiddle.net 这样人们就可以玩弄您的代码并为您提供工作原型。欢迎来到!
-
添加了 jsFiddle 和 JS Bin 链接。
标签: css alignment css-multicolumn-layout