J'ai un petit problème. J'utilise FireFox 3.6 et j'ai la structure DOM suivante:
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
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 décolle, display:table-row
il apparaîtra correctement, avec view-row
une largeur de 100%. Si je le remets, il rétrécit. J'ai mis ceci sur JS Bin:
Que se passe-t-il?
Réponse testée:
Dans le css .view-row, modifiez:
à:
et débarrassez-vous de "float" . Tout fonctionnera comme prévu.
Comme cela a été suggéré dans les commentaires, il n'est pas nécessaire de disposer d'une table d'emballage. CSS permet d'omettre des niveaux de l'arborescence (dans ce cas, des lignes) qui sont implicites. La raison pour laquelle votre code ne fonctionne pas est que la "largeur" ne peut être interprétée qu'au niveau de la table, pas au niveau de la ligne de la table. Lorsque vous avez une "table" puis une "table-cellule" juste en dessous, elles sont implicitement interprétées comme étant assis dans une rangée.
Exemple de travail:
avec css:
la source
<table><td></td></table>
qui, à lui seul, serait un balisage HTML invalide selon le W3C. Pendant qu'il validera, pourquoi suggéreriez-vous de dire au navigateur d'imiter ce balisage?Notez que selon la spécification CSS3, vous n'avez PAS à envelopper votre mise en page dans un élément de style tableau. Le navigateur en déduira l'existence d'éléments contenant s'ils n'existent pas.
la source
donner en
.view-type
classefloat:left;
ou supprimer lefloat:right;
de.view-name
edit: Enveloppez votre div
<div class="view-row">
avec un autre div par exemple<div class="table">
et définissez le css suivant:
Vous devez utiliser la structure du tableau pour obtenir des résultats corrects.
la source
Vous pouvez imbriquer une cellule de tableau directement dans un tableau. Vous devez avoir une table. Le démarrage de chaque ligne de table ne fonctionne pas. Essayez-le avec ce HTML:
la source