Tengo el siguiente código:
<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>
Muy claro. ¿Cómo agrego un colspan (o el equivalente de colspan) para los elementos con display: table-cell
?
display: table-cell
.Respuestas:
Hasta donde yo sé, la falta de colspan / rowspan es solo una de las limitaciones de
display:table
. Ver esta publicación:http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
fuente
Dado que OP no establece explícitamente que la solución debe ser CSS puro, seré obstinado y ofreceré mi solución que descubrí hoy, especialmente porque es mucho más elegante que tener una mesa dentro de una tabla.
Ejemplo es igual a <tabla> con dos celdas por fila y dos filas, donde la celda de la segunda fila es un td con
colspan="2"
.He probado esto con Iceweasel 20, Firefox 23 e IE 10.
Acción en vivo (demostración) aquí .
EDITAR: Ajusté el código para que sea más fácil de imprimir, ya que dejan los colores de fondo de forma predeterminada. También creé rowpan-demo , inspirado en la respuesta tardía aquí.
fuente
<div class="cell"></div>
funciona (al menos con Firefox). Con este diseño, debe rellenar con celda (s) vacías. Por ejemplo, si lo tuviera de modo que la celda 7 fuera colspan = 3 y la celda 8 fuera normal, entonces necesitaría dos celdas vacías entre las celdas 7 y 8. A menos que diseñe algo más (¿márgenes? ¿Div personalizado único?) . Además, el ancho de 100px y 5 celdas dificulta las cosas, porque las palabras estiran las celdas css, la configuración de desbordamiento no parece hacer la diferencia. También es necesario volver a calcularwidth
paradiv.colspan>div>div
.div.colspan{border-left:1px solid red}
. Debe colocarse en algún lugar debajo de la regla que establece div.colspan sin bordes, o se anulará.Una solución más simple que me funciona en Chrome 30:
Colspan se puede emular usando en
display: table
lugar dedisplay: table-row
para las filas:El único inconveniente es que las celdas de las filas apiladas no se alinean verticalmente, ya que son de tablas diferentes.
fuente
Si está buscando una forma CSS directa de simular un colspan, podría usar
display: table-caption
.fuente
Simplemente use un
table
.las tablas solo están mal vistas cuando se utilizan con fines de diseño.
Esto parece datos tabulares (filas / columnas de datos). Por lo tanto, recomendaría usar un archivo
table
.Consulte mi respuesta a esta pregunta para obtener más información:
creando lo mismo con divs como tablas
fuente
tr
/td
spam no es el html más bonito, pero ¿es esa la única razón? Todo el mundo dice que las tablas no estaban "destinadas" a ser utilizadas para formatear, pero el html en sí no estaba "destinado" a hacer la mitad de las cosas que consideramos aceptables según los estándares actuales, incluidas las aplicaciones web.Aquí hay una forma de abarcar columnas en CSS que usé para mi propia situación.
https://jsfiddle.net/mb8npttu/
fuente
.colspan
conwhite-space: nowrap;
para obtener el resultado que quería, pero funcionó muy bien.Existe una solución para hacer que el colspan tenga el ancho de toda la mesa. No puede utilizar esta técnica para colspan una parte de la mesa.
Código:
Explicación:
Usamos la posición absoluta en el colspan para que sea el ancho completo de la mesa. La mesa en sí necesita una posición relativa. Hacemos uso de una celda ficticia para mantener la altura de las filas, la posición absoluta no sigue el flujo del documento.
Por supuesto, también puede usar flexbox y grid para abordar este problema en estos días.
fuente
CSS
HTML
Código
fuente
Se puede hacer simplemente con CSS puro y centrando el texto en el colspan "falso".
El truco es establecer las filas en
position:relative
, luego colocar "divs vacíos" en el lugarrow
donde desea hacercolspan
(deben tenerheight
para funcionar), establecercell
dónde está el contenido comodisplay:grid
, y finalmente, aplicarposition:absolute
al elemento dentro de la celda (y céntrela como puede centrar cualquier otro elemento absoluto).fuente
Al usar las clases div y los atributos CSS adecuados, puede imitar los efectos deseados de colspan y rowspan.
Aquí está el CSS
Aquí está el HTML de muestra
Por lo que veo tanto en las preguntas como en la mayoría de las respuestas, la gente parece olvidar que en cualquier div que actúe como una "celda de tabla", puede insertar otro div que actúa como una tabla incrustada y comenzar el proceso. encima.
*** No es glamoroso, pero funciona para aquellos que buscan este tipo de formato y quieren evitar las TABLAS. Si es para DISEÑO DE DATOS, las TABLAS aún funcionan en HTML5.
Espero que esto ayude a alguien.
fuente
<table>
, es solo que la gente debe evitar usarlo para formato visual . Usarlo para mostrar datos estructurados es donde debe usarse , a menos que algo más (como<ul>
, como un mero ejemplo) se ajuste mejor a la tarea. En segundo lugar, amigo, 4 mesas. Traes una pregunta interesante a la mesa (rowpan), pero tu respuesta clama por usarla en su<table>
lugar. Tengo que ver cómo funciona mi solución aquí ...Puede establecer la posición del contenido de colspan como "relativa" y la fila como "absoluta" de esta manera:
fuente
No puedes lograr esto en este momento.
AFAIK, esto estaría cubierto por CSS Tables , una especificación que parece estar actualmente en estado de "trabajo en progreso".
fuente
Puede probar esta solución, donde puede encontrar cómo aplicar colspan usando div https://codepen.io/pkachhia/pen/JyWMxY
HTML:
CSS:
fuente
Incluso si esta es una pregunta antigua, me gustaría compartir mi solución a este problema.
Aquí hay un violín . No es realmente un lapso, y la solución es un poco complicada, pero es útil en algunas situaciones. Probado en Chrome 46, Firefox 31 e IE 11.
En mi caso, tuve que presentar algunos datos no tabulares de forma tabular, manteniendo el ancho de las columnas y dando título a las subsecciones de los datos.
fuente
Utilice tablas anidadas para anidar los espacios de las columnas ...
O use 2 tablas donde el espacio de la columna cubra toda la fila ...
fuente