Est une DIV à l'intérieur d'un TD d'une mauvaise idée?
Il semble que j'ai entendu/lu quelque part qu'un <div>
à l'intérieur d'un <td>
était un non-non. Non pas que ça ne marchera pas, juste quelque chose sur eux de ne pas être vraiment compatible en fonction de leur type d'affichage. Ne pouvez pas trouver aucune preuve à l'appui de mon intuition, j'ai donc peut-être totalement faux.
Vous devez vous connecter pour publier un commentaire.
À l'aide d'un
div
instide untd
n'est pas pire qu'une autre façon d'utiliser les tableaux pour la mise en page. (Certaines personnes ne jamais utiliser des tableaux pour la mise en page, et j'arrive d'être l'un d'entre eux.)Si vous utilisez un
div
dans untd
il vous sera toutefois dans une situation où il pourrait être difficile à prédire la façon dont les éléments sont de taille moyenne. La valeur par défaut pour un div est de déterminer la largeur de son parent, et la valeur par défaut pour une cellule de tableau est de déterminer sa taille en fonction de la taille de son contenu.Les règles de la façon dont un
div
doit être de taille est bien défini dans les normes, mais les règles de la façon dont untd
doit être de taille n'est pas aussi bien définie, de sorte que les différents navigateurs utilisent des algorithmes légèrement différents.Après vérification de la DTD XHTML j'ai découvert qu'un <TD>-élément est autorisé à contenir des éléments de bloc comme les titres, les listes et aussi <DIV>-éléments. Ainsi, à l'aide d'un <DIV>-élément à l'intérieur d'un <TD>-élément à ne pas enfreindre la norme XHTML. Je suis sûr que d'autres variations modernes de HTML ont un équivalent modèle de contenu pour les <TD>-élément.
Voici les DTD règles:
Pas. Pas nécessairement.
Si vous avez besoin de mettre un DIV dans un TD, assurez-vous que vous utilisez le TD correctement. Si vous ne se soucient pas de tableaux de données, et de la sémantique, alors vous en fin de compte se soucient pas de Divisions en TDs. Je ne pense pas qu'il y a un problème - si vous ont de le faire, vous êtes fine.
Conformément à la Spécification HTML
Un
<div>
peut être placé où de contenu de flux est prévuUn, qui est le<td>
modèle de contenuDeux.Une table-cell peut légitimement contenir des éléments de niveau bloc de sorte qu'il n'est pas, en soi, un faux-pas. Navigateur implentation, bien sûr, les feuilles de cette spéculative-position théorique. Il peut causer des problèmes de mise en page et de bugs.
Bien que les tables ont été utilisés pour la mise en page -et parfois encore - j'imagine que la plupart des navigateurs rendra le contenu correctement. Même IE.
Si vous souhaitez utiliser position: absolute; sur la div avec
position: relative;
sur la td, vous allez courir dans des problèmes. FF, safari et chrome (mac, pas de PC tout de même) ne sera pas la position de la div par rapport à la td (comme vous pouvez attendre) c'est aussi vrai pour les divs avecdisplay: table-whatever;
donc, si vous voulez faire cela, vous avez besoin de deux divisions, l'une pour le conteneurwidth: 100%;
height: 100%;
et pas de frontière afin qu'elle remplisse les td sans impact visuel. et puis l'absolu.autre que cela, pourquoi ne pas simplement diviser la cellule?
J'ai rencontré le problème en plaçant un
<div>
à l'intérieur de<td>
.J'ai été incapable d'identifier la div à l'aide de
document.getElementById()
si je la place à l'intérieur de la td. Mais à l'extérieur, il a été fonctionne correctement.Comme tout le monde l'a mentionné, il pourrait ne pas être une bonne idée pour la disposition. Je suis arrivé à cette question parce que je me demandais la même chose et je voulais seulement savoir si il serait valable code.
Depuis qu'il est valide, vous pouvez l'utiliser pour d'autres fins. Par exemple, ce que je vais l'utiliser pour est de mettre un peu de fantaisie "CSSed" les divisions à l'intérieur des lignes de la table et d'utiliser ensuite un rapide fonction jQuery pour permettre à l'utilisateur de trier les informations par prix, nom, etc. De cette façon, le seul tableau de présentation donnera à moi, c'est le "vertical", mais je vais le contrôle de la largeur, la hauteur, l'arrière-plan, etc de la balise div en CSS.
Deux façons de traiter avec elle
div
à l'intérieur detbody
tagdiv
à l'intérieur detr
tagLes deux approches sont valables, si vous voyez feference: https://stackoverflow.com/a/23440419/2305243
Il se casse la sémantique, c'est tout. Il fonctionne très bien, mais il y a peut être des lecteurs d'écran ou quelque chose en bas de la route qui n'en profitez pas de traitement de votre code HTML si vous "casser" sémantique.
<div>
éléments de l'offre ou de modifier toute information sémantique à tous. Ils ont à peu près la même sémantique de l'information comme un espace vide, seulement dans une direction différente.DIV
de diviser le contenu dans une cellule de tableau, alors vous devriez être en utilisant des cellules de tableau. Pensez-y comme une base de données, chaque cellule doit avoir un morceau de données.