J'ai le code suivant:
<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>
Assez simple. Comment ajouter un colspan (ou l'équivalent de colspan) pour les éléments avec display: table-cell
?
display: table-cell
.Réponses:
Pour autant que je sache, le manque de colspan / rowspan n'est qu'une des limitations de
display:table
. Voir ce post:http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
la source
Étant donné qu'OP ne règle pas explicitement que la solution doit être du CSS pur, je serai têtu et j'ajouterai ma solution de contournement que j'ai trouvée aujourd'hui, d'autant plus qu'elle est beaucoup plus élégante que d'avoir une table à l'intérieur d'une table.
L'exemple équivaut à <table> avec deux cellules par ligne et deux lignes, où la cellule de la deuxième ligne est un td avec
colspan="2"
.J'ai testé cela avec Iceweasel 20, Firefox 23 et IE 10.
Action en direct (démo) ici .
EDIT: J'ai affiné le code pour qu'il soit plus convivial, car ils laissent les couleurs d'arrière-plan par défaut. J'ai également créé rowspan-demo , inspiré par une réponse tardive ici.
la source
<div class="cell"></div>
œuvres (au moins avec Firefox). Avec cette conception, vous devez remplir avec des cellules vides. Par exemple, si vous l'aviez pour que la cellule 7 soit colspan = 3 et que la cellule 8 était normale, alors vous auriez besoin de deux cellules vides entre les cellules 7 et 8. À moins que vous ne conceviez autre chose (marges? Div personnalisé unique?) . De plus, une largeur de 100 pixels et de 5 cellules rend les choses délicates, car les mots étirent les cellules css, les paramètres de débordement ne semblent pas faire de différence. Vous devez également recalculerwidth
pourdiv.colspan>div>div
.div.colspan{border-left:1px solid red}
. Il doit être placé quelque part sous la règle qui définit div.colspan borderless, sinon il sera annulé.Une solution plus simple qui fonctionne pour moi dans Chrome 30:
Colspan peut être émulé en utilisant
display: table
au lieu dedisplay: table-row
pour les lignes:Le seul inconvénient est que les cellules des lignes empilées ne s'alignent pas verticalement, car elles proviennent de tables différentes.
la source
Si vous recherchez un moyen CSS simple pour simuler un colspan, vous pouvez utiliser
display: table-caption
.la source
Utilisez simplement un fichier
table
.les tables ne sont mal vues que lorsqu'elles sont utilisées à des fins de mise en page.
Cela ressemble à des données tabulaires (lignes / colonnes de données). Par conséquent, je recommanderais d'utiliser un fichier
table
.Voir ma réponse à cette question pour plus d'informations:
créer la même chose avec des divs comme des tables
la source
tr
/td
spam n'est pas le plus joli html mais est-ce la seule raison? Tout le monde dit que les tableaux n'étaient pas «destinés» à être utilisés pour le formatage, mais que le HTML lui-même n'était pas «censé» faire la moitié des choses que nous considérons comme acceptables selon les normes actuelles, y compris les applications Web.Voici une façon de couvrir les colonnes de CSS que j'ai utilisées pour ma propre situation.
https://jsfiddle.net/mb8npttu/
la source
.colspan
avecwhite-space: nowrap;
pour obtenir le résultat que je voulais, mais cela a très bien fonctionné.Il existe une solution pour faire de la colonne la largeur de toute la table. Vous ne pouvez pas utiliser cette technique pour colspan une partie du tableau.
Code:
Explication:
Nous utilisons la position absolue sur le colspan pour en faire toute la largeur de la table. La table elle-même a besoin d'une position relative. On utilise une cellule factice pour maintenir la hauteur des lignes, la position absolue ne suit pas le flux du document.
Bien sûr, vous pouvez également utiliser flexbox et grid pour résoudre ce problème ces jours-ci.
la source
CSS
HTML
Code
la source
Cela peut être fait simplement avec du CSS pur et en centrant le texte sur le "faux" colspan.
L'astuce consiste à définir les lignes sur
position:relative
, puis à placer des "divs vides" à l'row
endroit où vous voulez faire lecolspan
(ils doivent avoirheight
pour fonctionner), à définircell
où se trouve le contenu en tant quedisplay:grid
, et enfin, à appliquerposition:absolute
à l'élément à l'intérieur de la cellule (et centrez-la comme vous pouvez centrer tout autre élément absolu).la source
En utilisant les classes div et les attributs CSS appropriés, vous pouvez imiter les effets souhaités du colspan et du rowspan.
Voici le CSS
Voici l'exemple HTML
D'après ce que je vois à la fois dans les questions et dans la plupart des réponses, les gens semblent oublier que dans toute div donnée qui agit comme une "cellule de table", vous pouvez insérer une autre div qui agit comme une table intégrée et démarrer le processus plus de.
*** Ce n'est pas glamour, mais cela fonctionne pour ceux qui recherchent ce type de formatage et qui veulent éviter les TABLE. Si c'est pour DATA LAYOUT, les TABLEs fonctionnent toujours en HTML5.
Espérons que cela aidera quelqu'un.
la source
<table>
- c'est juste que les gens devraient éviter de l' utiliser pour le formatage visuel . L'utiliser pour afficher des données structurées est l'endroit où il doit être utilisé , à moins que quelque chose d'autre (comme<ul>
, à titre d'exemple) corresponde mieux à la tâche. Deuxièmement, mec, 4 tables. Vous apportez une question intéressante sur la table (rowspan), mais votre réponse pleure pour l'utilisation à la<table>
place. Je dois voir comment ma solution fonctionne ici ...Vous pouvez définir la position du contenu colspan comme "relative" et la ligne comme "absolue" comme ceci:
la source
Vous ne pouvez pas y parvenir actuellement.
AFAIK cela serait couvert par les tables CSS , une spécification qui semble actuellement être à l'état "travail en cours".
la source
Vous pouvez essayer cette solution, où vous pouvez trouver comment appliquer colspan en utilisant div https://codepen.io/pkachhia/pen/JyWMxY
HTML:
CSS:
la source
Même si c'est une vieille question, je voudrais partager ma solution à ce problème.
Voici un violon . Ce n'est pas vraiment un span, et la solution est un peu piratée, mais elle est utile dans certaines situations. Testé sur Chrome 46, Firefox 31 et IE 11.
Dans mon cas, j'ai dû présenter certaines données non tabulaires de manière tabulaire, en gardant la largeur des colonnes et en donnant un titre aux sous-sections des données.
la source
Utilisez des tables imbriquées pour imbriquer les portées de colonnes
Ou utilisez 2 tables où la portée de la colonne couvre toute la ligne ...
la source