J’ai un petit problème. J’utilise FireFox 3.6 et possède la structure DOM suivante:
Type Name
Et le CSS suivant:
.view-row { width:100%; display:table-row; } .view-name { display: table-cell; float:right; } .view-type { display: table-cell; }
Si je supprime l’ display:table-row
apparaîtra correctement, la ligne de view-row
affichant une largeur de 100%. Si je le remets, il rétrécit. Je l’ai mis sur JS Bin:
Que se passe-t-il?
Si vous utilisez display:table-row
etc., vous avez besoin d’un balisage correct, qui inclut une table contenant. Sans elle, votre question initiale fournit essentiellement le mauvais marquage équivalent de:
Type Name
Où est la table ci-dessus? Vous ne pouvez pas simplement sortir une rangée de rien (il faut que ce soit dans une table
, un thead
, un tbody
, etc.)
Ajoutez plutôt un élément externe avec display:table
, placez la largeur de 100% sur l’élément contenant. Les deux cellules internes vont automatiquement aller 50/50 et aligner le texte directement sur la deuxième cellule. Oubliez les floats
avec des éléments de table. Cela causera tant de maux de tête.
balisage:
Type Name
CSS:
.view-table { display:table; width:100%; } .view-row, { display:table-row; } .view-row > div { display: table-cell; } .view-name { text-align:right; }
Testé réponse:
Dans le fichier .view-row, modifiez:
display:table-row;
à:
display:table
et se débarrasser de “float” . Tout fonctionnera comme prévu.
Comme cela a été suggéré dans les commentaires, il n’ya pas besoin de tableau d’emballage. CSS permet d’omettre les niveaux implicites de l’arborescence (dans ce cas, les lignes). La raison pour laquelle votre code ne fonctionne pas est que “width” ne peut être interprété qu’au niveau de la table, pas au niveau des lignes de la table. Lorsque vous avez une “table” puis une “table-cellule” directement en dessous, elles sont implicitement interprétées comme étant alignées.
Exemple de travail:
Type Name
avec css:
.view { width:100%; display:table; } .view > div { width:50%; display: table-cell; }
Notez que selon la spécification CSS3, vous n’avez PAS à envelopper votre mise en page dans un élément de type tableau. Le navigateur déduira l’existence d’éléments contenant s’ils n’existent pas.
donner sur la classe .view-type
float:left;
ou supprimer le float:right;
de .view-name
edit: Enveloppez votre div
avec un autre div par exemple
et définissez le css suivant:
.table { display:table; width:100%;}
Vous devez utiliser la structure de la table pour obtenir des résultats corrects.
Vous pouvez imbriquer une cellule de table directement dans la table. Vous devez avoir une table. Le démarrage de chaque table ne fonctionne pas. Essayez-le avec ce HTML:
X X X X X X X X X