j'ai pu trouver un "pas de tables HTML nécessaires" solution basée sur une technique par Stu Nicholls à CSS Play et je l'aime personnellement car non seulement cela fonctionne dans IE6 + et FF2 +, c'est aussi CSS valide qui ne nécessite aucun hacks. Pour mon argument sur pourquoi une mise en page CSS est préférable aux tableaux HTML, voir ci-dessous. D'abord, je recommande que lors de la conception de nouvelles pages avec CSS, vous le faites avec conforme aux normes mode navigateur. Pour une explication du mode quirksmode et des normes, consultez this article depuis l'un de mes sites de ressources CSS préférés. Tout ce que vous avez à faire est d'ajouter un élément DOCTYPE spécifique en haut de vos pages. Le CSS sera alors forcé de rendre en mode conforme aux normes, résultant en moins de bogues et d'idiosyncrasies de navigateur. Dans le cas où vous ne pouvez pas passer en mode conforme aux normes, il existe une solution de largeur minimale pour les navigateurs dans quirksmode, également disponible sur CSS Play. Deuxièmement, vous devez ajouter un wrapper supplémentaire autour de votre balisage existant. Cette enveloppe est utilisée pour définir la largeur minimale pour les navigateurs qui comprennent min-width (pas IE). Vous pouvez ensuite utiliser l'astuce * html pour cibler spécifiquement IE 6 et appliquer la technique de Stu Nicholl aux wrappers internes.La technique est détaillée ici et l'exemple spécifique utilisé est « # 2 Pour les normes en mode compatible IE »:
http://www.cssplay.co.uk/boxes/minwidth.html
Le résultat final est assez simple. Il crée 2 colonnes de 50% en utilisant la technique 2-column ALA style mentionnée dans la question initiale, qui ont une largeur minimale globale (de 500px dans cet exemple) où les colonnes cessent de redimensionner et la colonne de droite ne tombe pas en dessous de la colonne de gauche. J'espère que ça aide!
Éditer: Cette même technique peut être utilisée pour appliquer une largeur minimale compatible avec tous les navigateurs. Par exemple, les colonnes n'ont pas besoin d'être à 50% chacune et n'importe quel nombre de colonnes peut être utilisé. http://www.glish.com/css/ est une excellente ressource pour les mises en page CSS et lorsqu'il est combiné avec cette technique de largeur minimale, il existe de nombreuses mises en page qui peuvent être créées avec CSS minimal et valide.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
/* For browsers that understand min-width */
.width {
width: 100%;
min-width: 500px;
}
/* IE6 Only */
* html .minwidth {
border-left: 500px solid white;
position: relative;
float: left;
}
/* IE6 Only */
* html .wrapper {
margin-left: -500px;
position: relative;
float: left;
}
.left {
float: left;
width: 50%;
}
.right {
float: left;
}
</style>
</head>
<body>
<div class="width">
<div class="minwidth">
<div class="wrapper">
<div class="left">
Left
</div>
<div class="right">
Right
</div>
</div>
</div>
</div>
</body>
</html>
Maintenant, mon incitation pour la mise en place d'un compte débordement de pile est d'être capable de répondre à la suggestion ci-dessous: « Si vous voulez deux colonnes, utilisez une table, plutôt que d'essayer de forcer la division de se comporter comme une table ". Puisque je suis trop nouveau pour commenter ou rejeter, j'augmente cette discussion.
Vraiment?
Quelqu'un pose une question sur les mises en page CSS et répond en leur disant d'utiliser des tables HTML? Permettez-moi de commencer en disant que je ne crois pas que les tableaux HTML sont complètement inutiles. En fait, chaque fois que j'ai besoin d'afficher des données tabulaires, , c'est-à-dire des données relationnelles, j'utilise un tableau HTML. Les propriétés d'affichage des tables CSS ne sont pas encore totalement supportées (bientôt sous IE8!) Et l'utilisation d'un tableau HTML à un seul niveau est une solution efficace. Regardez le balisage pour l'une des pages Web de Google et vous verrez qu'ils seraient d'accord. Comme quelqu'un qui a passé beaucoup de temps à écrire des mises en page CSS qui sont compatibles avec les navigateurs croisés alors qu'elles auraient pu le faire en 10 minutes en utilisant une table, je suis d'accord pour trouver une solution plus simple à ce problème. Cependant, juste parce que vous pouvez utiliser de la dynamite pour rénover votre cuisine, ne signifie pas que vous devriez. L'article suivant fournit une explication détaillée pour laquelle les dispositions basées sur CSS sont plus souhaitables.
http://www.chromaticsites.com/web-design-blog/2008-04-03/13-reasons-why-css-is-superior-to-tables-in-website-design/
se fait-il dans tous les navigateurs? J'ai une mise en page de portail qui est obnubilée par IE parce qu'elle ignore minwidth. –
J'ai essayé de changer votre à & nbsp; mais l'analyseur n'a pas aimé ça. Cela ressemble à un bug dans StackOverflow. – Neall
Ed.T: Seulement dans IE je crois. – Mike