Я создаю систему меню, представленную пользователю в многоколоночном формате. Свойство column-count в CSS3 получает мне 90% пути, но у меня возникают трудности с выравниванием в Chrome.
Меню относительно просто:
- неупорядоченный список, разделенный на несколько столбцов на свойство столбца-столбца
- столбцы должны заполняться последовательно, поэтому заполнение столбца: auto Элементы меню
- представлены в виде элементов списка
- каждый элемент списка имеет интерактивный тег привязки, который полностью расширяется через display: block
Проблема выравнивания, с которой я столкнулась, наиболее заметна с верхней границей и некоторой окраской фона в каждом элементе списка. В Firefox элементы списка всегда выравниваются чисто по каждому столбцу, никогда не истекающие кровью в предыдущий/следующий столбец. В Chrome выравнивание - это crapshoot, в зависимости от количества элементов списка и любых свойств отступов/полей.
Я разместил код для простого тестового примера здесь: http://pastebin.com/Ede3JwdG
Проблема должна быть немедленно очевидной: в Chrome первый элемент списка во втором столбце истекает обратно в первый столбец. Когда вы удаляете элементы списка (нажимаете на них), вы можете видеть, что выравнивание продолжается дальше.
Я пробовал настраивать прописку/поле для элементов списка безрезультатно: у Chrome, похоже, есть ошибочный алгоритм для того, как он передает содержимое в многоколоночном макете.
Основная причина, по которой я не перечеркнула количество столбцов (в пользу ручной генерации /Columnizer/etc.), заключается в том, что система меню также включает функции перетаскивания в нескольких подменю и наличие меню данные, выложенные как сплоченная иерархия на основе списков, обеспечивают чистый код.
Есть ли способ исправить проблему выравнивания в Chrome или я просто сейчас откажусь от столбца?
ДОБАВЛЕНО:
- jsFiddle прототип: http://jsfiddle.net/VXsAU/
- Прототип JS Bin: http://jsbin.com/ebode5/