CSS des éléments de bloc sur une ligne
Ce qui est la façon la plus commune pour faire face à une série de bloquer les éléments qui doivent être sur une ligne (si le javascript doit être en mesure de modifier leurs largeurs, par exemple)? Quels sont les avantages et les inconvénients de l'application float:left à chacun d'eux un rapport de positionnement pour les placer?
OriginalL'auteur Dan Monego | 2008-11-21
Vous devez vous connecter pour publier un commentaire.
Flottant serait mon choix, mais cela dépend vraiment de ce que vous souhaitez obtenir. Si vous pouvez fournir un exemple plus spécifique, je serais en mesure de vous donner une bonne raison pour quoi et pourquoi je pense que vous devriez utiliser. Cependant voici une brève liste des avantages et des inconvénients que j'ai trouvé (je suis en supposant que le positionnement de vous dire le positionnement absolu):
De positionnement pour:
Positionnement contre:
Flotteur pour:
Flotteur contre:
Comme pour le clear:both élément que Sebastian mentionné, Il y a un moyen simple de contourner cela. Disons que vous avez un div conteneur et 2 divs flottants à l'intérieur.
Html:
CSS:
si vous exécutez ce code, vous remarquerez que le div conteneur (le rose magenta) est d'un seul pixel de haut, tandis que les divs flottants ont été correcte - ce qui est le problème Sebastian mentionné. Vous pouvez maintenant suivre son conseil et ajouter un br ou flotter le récipient qui ne serait pas très sémantique - donc, ici, est un peu plus élégant. Juste ajouter overflow:hidden; pour le conteneur div comme ceci:
Maintenant votre conteneur doit envelopper les divs flottants correctement.
OriginalL'auteur Darko Z
Bien, si vous n'êtes pas trop préoccupé par les anciens navigateurs (je suis à la recherche à vous, IE6) la meilleure façon d'aller avec
Fondamentalement, il crée une boîte-modèle de l'élément sans compensation avant ou après lui, de sorte qu'il reste dans la ligne. Chaque navigateur interprète bien.
Juste aujourd'hui, j'ai fait quelques trucs de l'utiliser (FF3) et n'avait aucun problème que ce soit, il regarda même dans FF, Opera, Chrome et IE7
Mauvaise idée, il existe des moyens simples à mettre en œuvre ce dont il parle, sans l'aide de croquis des éléments qui ne sont pas pris en charge dans la plupart des navigateurs (IE6 est encore l'une des principales navigateur, malgré la façon dont nous nous sentons tous à ce sujet)
IE6 peut supoort correctement avec des adaptations mineures (quirksmode.org/css/display.html), mais comme beaucoup de choses dans le webdesign, le chemin choisi pour résoudre un problème est directement lié au public du site. C'est pourquoi j'ai dit qu'il pouvait l'utiliser si les anciens navigateurs ne le regardaient pas.
OriginalL'auteur Gabe
Le conteneur parent ne s'allonge pas avec eux, sauf si il est également attribué à un flotteur de balise ou il y a un br avec clear:both; en bas.
J'irais avec le float:left, au lieu de le positionnement. Le navigateur n'tous les alignant quand un objet s'étend. Donc il y a moins de vous intéresser.
OriginalL'auteur Sebastian Hoitz
Je pense que je n'aurais pas explicitement position les éléments, mais plutôt d'indiquer au navigateur d'utiliser une ligne de mise en page pour les éléments à l'aide de display:inline et laisser le navigateur gérer le positionnement.
concernant float vs positionnement, je pense que la seule façon de les mettre en ligne à l'aide de positionnement est d'utiliser le positionnement absolu, et cela signifie que vous avez besoin pour gérer re-tailles(de la vue navigateur de port) afin de maintenir les éléments en place.
Je pense que par l'aide de la flotte de la propriété le navigateur gère le re-dimensionnement des problèmes pour vous et re-rend l'élément au bon endroit.
OriginalL'auteur rhinof
Seul inconvénient de flotter dans des situations de ce genre pour moi a été que vous devrez justifier à gauche ou à droite les justifier -- le centrage n'est pas une option. Cependant, vous avez mentionné que vous êtes en utilisant des valeurs absolues pour les largeurs, vous pouvez donc le nid de tous les flottait éléments dans un élément DIV et ajouter la marge de droite ou de marge de gauche de la DIV parent pour simuler alignement au centre.
OriginalL'auteur Andrew G. Johnson