#html #css #html-table
#HTML #css #html-таблица
Вопрос:
Возможно ли определить столбцы для таблицы определенного класса и повторно использовать ее?
Например, у меня есть две таблицы на странице, и я хочу, чтобы их столбцы были выровнены, поэтому в настоящее время у них обеих есть определения типа:
<table class='grid'>
<col class='col-name' />
<col class="col-access-type" />
<col class="col-auto-grant" />
<col class="col-auto-revoke" />
<col class="col-can-assign" />
<col class="col-actions" />
но в идеале я хочу повторно использовать теги col, определив их один раз, скажем, в CSS, чтобы я просто писал:
<table class='grid'>
и в CSS:
table.grid
{
columns: {erm ok so what is it?}
}
Возможно ли это?
Комментарии:
1. Не в HTML и CSS, нет (в любом случае, это не было бы задачей для CSS, потому что то, что вы хотите сделать, связано с контентом, а не с презентацией.) Это может быть возможно с использованием одного из предварительно скомпилированных псевдоязыков (например, HAML), хотя — готовы ли вы использовать что-то подобное?
2. Да, вы можете. Но это вопрос того, что работает, а что нет.
3. @Pekka, уверен, что HAML сохранит код СУХИМ, и я люблю HAML, но, увы, это невозможно для этого проекта.
Ответ №1:
Мне кажется, что ответ, который вы ищете, — это CSS3 s
селектор nth-of-type()`.
Это позволило бы вам сделать что-то вроде этого:
table.grid td:nth-of-type(1) { .... }
table.grid td:nth-of-type(2) { .... }
table.grid td:nth-of-type(3) { .... }
и т.д.
Однако основная проблема заключается в том, что это не поддерживается в IE8 или ниже, поэтому, если демография вашего пользователя сильно не отличается от нормы, вы не сможете его использовать.
Я не знаю ни одного другого решения, которое позволит вам избежать повторения вашей структуры столбцов. Извините.
[ПРАВИТЬ]
На самом деле, вероятно, nth-of-type()
было бы лучше, чем nth-child()
в этом случае.
Смотрите http://www.quirksmode.org/css/contents.html для диаграммы совместимости браузера и http://www.quirksmode.org/css/nthchild.html для использования (охватывает оба nth-of-type
и nth-child
)
Ответ №2:
Для этого вы могли бы использовать немного скрипта jQuery, чтобы для каждой таблицы с grid
классом if применялись требуемые классы к cols, например
$(function() {
$("table.grid col:eq(0)").addClass("col-name");
$("table.grid col:eq(1)").addClass("col-access-type");
// etc.
});
Комментарии:
1. Это работает, и это СУХО, но не разлагаемо и выглядело бы довольно уродливо в браузере с отключенным js…