Прежде всего - использование таблицы в этой ситуации некорректно: структура таблицы определяет связь между данными в одной строке и данными в одном столбце. Поскольку второй столбец относится к тому же типу данных, что и первый, здесь нет табличных отношений.
Вам не следует использовать таблицу, потому что вы определяете свой макет в разметке, поэтому у вас может быть только два столбца. Например, если клиент решает, что ему нужно три столбца, или вы хотите отобразить список из одного столбца для мобильного представления или таблицы стилей печати, вам нужно изменить разметку (или даже иметь несколько наборов разметки для разных целей).
Гибкая разметка
ОК - давайте посмотрим на вашу разметку. На данный момент у вас почти есть структура таблицы, потому что вы упаковываете каждую строку в DIV. Опять же, это означает, что вы не можете иметь один столбец или 3 или 4 столбца рядом.
Более гибким решением является разметка ваших данных в виде списка. Поскольку это отсортировано, упорядоченный список является правильным выбором:
<ol id="list_properties">
<li class="property">
<h3 class="propertyTitle"><a href="#">08-CA-001731</a></h3>
<dl class="details">
<dt>Plantiff</dt>
<dd>Bob's Mortgages</dd>
<dt>Defendant</dt>
<dd>Harry Skinflint</dd>
</dl>
</li>
<li class="property">
<h3 class="propertyTitle"><a href="#">08-CA-001731</a></h3>
<dl class="details">
<dt>Plantiff</dt>
<dd>Bob's Mortgages</dd>
<dt>Defendant</dt>
<dd>Harry Skinflint</dd>
</dl>
</li>
</ol>
У вас будет один <li class="property">
на элемент в вашей «сетке». Я также предложил более приятную разметку для деталей - если хотите, помогите себе в этом.
Теперь, чтобы закончить: к сожалению, это не может быть сделано кросс-браузерным способом без некоторой окончательной настройки с Javascript. Тем не менее, JS является ненавязчивым, так что в конце концов он действует только как немного отполированный.
Базовое моделирование
Ваши базовые стили будут выглядеть так:
#list_properties {
list-style:none;
margin:0;
padding:0;
width:960px;
float:left;
}
#list_properties li.property{
width:430px;
float:left;
margin:0 50px 50px 0;
min-height:16em; /* For FF, Safari, Opera, IE8 */
_height:16em; /* For IE6 */
*height:16em; /* For IE7 */
}
Это воссоздает столбцы - на этом этапе, если все ящики имеют высоту менее 16em, это все, что вам нужно.
Javascript польский
Чтобы убедиться, что все отлично, я бы использовал плагин равных высот для jQuery: http://www.cssnewbie.com/equalheights-jquery-plugin/ По сути, вы передаете ему свой контейнер (#list_properties), и он сканирует каждого из дочерних элементов (li.property). ) и устанавливает высоту каждого из них на высоту самого высокого элемента.
Так, например, один элемент имеет дополнительную информацию и ему требуется высота в 18 ems, для всех остальных элементов также установлено значение 18em.
На связанном сайте есть документация, чтобы начать работу, но как только у вас есть jquery и готовый плагин, вам нужно всего лишь сделать:
$(function(){
$('#list_properties').equalHeights();
});
Как только вы настроите его таким образом, вы можете изменить количество элементов в столбце, просто изменив ширину li.property.
Последняя мысль ...
Я просто думаю, в чем преимущество отображения этого списка в столбцах? В конце концов, пользователь может отсортировать список - не будет ли проще сканировать список из одной колонки? Я предполагаю, что пользователь будет искать определенный элемент, а не просто просматривать полуслучайно.