У меня такой код:
<div class="table">
<div class="row">
<div class="cell">Cell</div>
<div class="cell">Cell</div>
</div>
<div class="row">
<div class="cell colspan2">Cell</div>
</div>
</div>
<style>
.table {
display: table;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
.colspan2 {
/* What to do here? */
}
</style>
Довольно просто. Как добавить colspan (или эквивалент colspan) для элементов с display: table-cell
?
display: table-cell
.Ответы:
Насколько мне известно, отсутствие colspan / rowspan - лишь одно из ограничений
display:table
. См. Этот пост:http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
источник
Поскольку OP явно не предписывает, что решение должно быть чистым CSS, я буду упрям и предложу обходной путь, который я нашел сегодня, тем более что он намного элегантнее, чем таблица внутри таблицы.
Пример равен <table> с двумя ячейками в строке и двумя строками, где ячейка во второй строке - это td с
colspan="2"
.Я тестировал это с Iceweasel 20, Firefox 23 и IE 10.
Живое действие (демо) здесь .
РЕДАКТИРОВАТЬ: я доработал код, чтобы он был более удобным для печати, поскольку они по умолчанию оставляют фоновые цвета. Я также создал rowspan-demo , вдохновленный поздним ответом здесь.
источник
<div class="cell"></div>
работает (по крайней мере, с Firefox). В этом дизайне вам нужно заполнить пустыми ячейками. Например, если бы у вас было так, что ячейка 7 была colspan = 3, а ячейка 8 была нормальной, тогда вам понадобились бы две пустые ячейки между ячейками 7 и 8. Если вы не разработали что-то еще (поля? Один настраиваемый div?) . Кроме того, ширина 100 пикселей и 5 ячеек усложняют задачу, потому что слова растягивают css-ячейки, настройки переполнения, похоже, не имеют значения. Кроме того, необходимо пересчитатьwidth
дляdiv.colspan>div>div
.div.colspan{border-left:1px solid red}
. Его нужно разместить где-нибудь под правилом, которое устанавливает div.colspan без полей, иначе оно будет отменено.Более простое решение, которое работает для меня в Chrome 30:
Colspan можно эмулировать, используя
display: table
вместоdisplay: table-row
строк:Единственная ошибка заключается в том, что ячейки уложенных строк не будут выровнены по вертикали, так как они из разных таблиц.
источник
Если вы ищете простой способ CSS для имитации colspan, вы можете использовать
display: table-caption
.источник
Просто используйте
table
.таблицы не одобряются только тогда, когда они используются для целей макета.
Это похоже на табличные данные (строки / столбцы данных). Поэтому я бы рекомендовал использовать
table
.См. Мой ответ на этот вопрос для получения дополнительной информации:
создание того же самого с div как таблицы
источник
tr
/td
спам - не самый красивый html, но это единственная причина? Все говорят, что таблицы не «предназначались» для форматирования, но сам html «не предназначался» для выполнения половины того, что мы считаем приемлемым по сегодняшним стандартам, включая веб-приложения.Вот один из способов объединения столбцов в CSS, который я использовал в своей ситуации.
https://jsfiddle.net/mb8npttu/
источник
.colspan
с ,white-space: nowrap;
чтобы получить результат , что я хотел, но он работал большой.Есть решение сделать colspan шириной всей таблицы. Вы не можете использовать эту технику для разворачивания части таблицы.
Код:
Объяснение:
Мы используем абсолютную позицию для colspan, чтобы сделать его во всю ширину таблицы. Сама таблица требует относительного положения. Мы используем фиктивную ячейку для поддержания высоты строк, абсолютная позиция не соответствует потоку документа.
Конечно, в наши дни вы также можете использовать flexbox и grid для решения этой проблемы.
источник
CSS
HTML
Код
источник
Это можно сделать с помощью чистого CSS и центрирования текста по «фальшивому» столбцу.
Хитрость заключается в том, чтобы установить строки
position:relative
, затем разместить «пустые блоки div» в том месте,row
где вы хотите создатьcolspan
(они должны бытьheight
для работы), установить,cell
где находится контентdisplay:grid
, и, наконец, применитьposition:absolute
к элементу внутри ячейки (и центрируйте ее, как вы можете центрировать любой другой абсолютный элемент).источник
Используя соответствующие классы div и атрибуты CSS, вы можете имитировать желаемые эффекты colspan и rowspan.
Вот CSS
Вот образец HTML
Из того, что я вижу как в вопросах, так и в большинстве ответов, люди, кажется, забывают, что в любой данный div, который действует как «ячейка таблицы», вы можете вставить другой div, который действует как встроенная таблица, и запустить процесс над.
*** Это не гламурно, но это действительно работает для тех, кто ищет этот тип форматирования, и они хотят избежать ТАБЛИЦ. Если это для DATA LAYOUT, ТАБЛИЦЫ все еще работают в HTML5.
Надеюсь, это кому-то поможет.
источник
<table>
- это просто , что люди должны избегать его использования для визуального форматирования . Использование его для отображения структурированных данных, где она должна быть использована , если что - то другое (например<ul>
, просто как пример) лучше подходит для выполнения этой задачи. Во-вторых, чувак, 4 стола. Вы вносите интересный вопрос в таблицу (rowspan), но ваш ответ требует его использования<table>
. Я должен посмотреть, как здесь работает мое решение ...Вы можете установить положение содержимого colspan как «относительное», а строку как «абсолютное» следующим образом:
источник
Вы не можете этого добиться в настоящее время.
AFAIK это будет охвачено таблицами CSS , спецификацией, которая, похоже, в настоящее время находится в состоянии «незавершенная работа».
источник
Вы можете попробовать это решение, где вы можете узнать, как применить colspan с помощью div https://codepen.io/pkachhia/pen/JyWMxY
HTML:
CSS:
источник
Даже если это старый вопрос, я хотел бы поделиться своим решением этой проблемы.
Вот скрипка . На самом деле это не промежуток времени, и решение немного взломано, но в некоторых ситуациях оно полезно. Протестировано в Chrome 46, Firefox 31 и IE 11.
В моем случае мне пришлось представить некоторые нетабличные данные в табличной форме, сохраняя ширину столбцов и давая заголовок подразделам данных.
источник
Используйте вложенные таблицы для вложения промежутков столбцов ...
Или используйте 2 таблицы, в которых диапазон столбцов охватывает всю строку ...
источник