Трудно извлечь код и опубликовать его здесь, поэтому я отправляю образец сайта, который демонстрирует мою проблему. Я думал об этом, и есть несколько способов решить эту проблему (модификация HTML, модификация CSS + HTML, модификация CSS + JS), но поскольку я являюсь n00b в веб-кодировании, я хочу знать, что такое лучший план атаки здесь.
В любом случае проблема:
Посмотрите здесь: http://321cart.com/sellya/
Откройте меню "Навигация по категориям", и вы получите следующее:
Все эти ссылки по категориям - это ul
содержащие много li
. Я хочу разбить список и развернуть список из нескольких столбцов, чтобы в одном столбце было всего 3 li
. Вот пример того, что я хочу сделать:
Это то, что я хочу:
Это приведет к увеличению ширины меню (практически теоретически, в двух словах), но для меня это нормально. Я могу справиться с этим самостоятельно.
Есть несколько способов сделать это, но я бы предпочел, если есть способ сделать это, используя только модификацию CSS. Если нет, то, может быть, через CSS и модификацию JavaScript? Я хочу внести изменения в фактический HTML-код в качестве последнего средства, потому что это оригинальный код HTML Open Generation PHP, который я не хочу изменять.
Обратите внимание, что я попытался решить эту проблему самостоятельно, но это оказалось немного сложным. Поэтому не думайте, что я не пытался. Во-вторых, опубликовать это в JSFiddle было бы сложно, и он бы действительно не представил реальную проблему полностью, поэтому я размещаю ссылку на образец сайта.
Пожалуйста, посмотрите, ребята. Сайт: http://321cart.com/sellya/
Поэтому мне нужны ответы на эту проблему, которая меня озадачила.
РЕДАКТИРОВАТЬ:
Забыл указать это. В приведенном выше примере все ul
имели более 3 li
каждый, но в моем фактическом случае только несколько ul
имеют более 3 li
каждый, и я хочу только расширить их до 2 столбцов, а не 1, 2 или 3 li
каждый.
CSS3 представил столбцы, которые должны делать то, что вы хотите. Теоретически просто примените высоту и column-width
к вашей ul
. На практике вам может потребоваться использовать префиксы поставщиков по column-width
, предоставляя вам -webkit-column-width
, -moz-column-width
и т.д. Попробуйте это.
Взгляни на это:
var $columns = $("#columns");
var $longlist = $("#longlist");
var columnscount = 3;
//calculate sigle column size
var columnsize = Math.ceil($("p", $longlist).size() / columnscount);
//iterate number of columns, take [columnsize] elements, move them to div#columns and wrap with div.column
for (var i = 0; i < columnscount; i++) {
$("p:lt(" + columnsize + ")", $longlist).appendTo($columns).wrapAll("<div class='column'/>")
}
вам нужно будет добавить какое-то условие, чтобы избежать сокращения списка сокращений на 3 элемента.
и вот как это работает: http://jsfiddle.net/hGWjd/
Вы можете установить ширину внешних divs (те, у которых класс "span2" в предоставленной ссылке), примерно на 350px и установить ширину LI до 100px и директив float: left. Это самый простой подход, который вы можете использовать.
ul
имели более 3li
каждый, но в моем случае только несколькоul
имеют более 3li
, и я хочу расширить их только на 2 столбца, а не на один. будет 1, 2 или 3li
каждый.