2009-12-24 7 views
1

J'ai la marque suivi:CSS: Méthode alternative à positon absolue

<div id="playArea" style="position: relative;"> 
    <div style="position: absolute; left: 295px; top: -1px; width: 313px; height: 269px;">Hello</div> 
    <div style="position: absolute; left: 63px; top: 35px; width: 80px; height: 42px;">World</div> 
    <div style="position: absolute; left: 534px; top: 329px; width: 183px; height: 251px;">Bye</div> 
</div> 

Mais je voudrais avoir un paragraphe de texte sous la div « playarea », mais parce que tous les divs intérieur playarea est absolue , le texte n'apparaît pas au bas du dernier div positionné absolu. J'ai examiné cette option et trouvé une alternative en utilisant float: left et clear: left mais après avoir utilisé cette méthode sur la première div, vous ne pouvez pas positionner la div correctement car le point de départ de la seconde div est sous la première div et pas à (0,0). Toutes les idées de comment je peux obtenir par cela.

Merci

+1

avez-vous un exemple de travail? ou au moins ceci comme exemple. –

+0

Je n'ai pas, vu que je travaille actuellement sur localhost. désolé, Voir le commentaire que je viens d'ajouter ci-dessous à BalusC, cela décrit le problème plus – phpNutt

Répondre

0

Si je comprends bien, il vous suffit de donner le « playarea » div la bonne hauteur.

Editer: Je veux dire, la hauteur combinée de tout ce qu'il contient.

0

Mais je voudrais avoir un paragraphe de texte sous la div « playarea », mais parce que tous les divs intérieur playarea est absolu, ne marche pas de texte apparaissent au bas du dernier div positionné absolu.

Comme vous semblez connaître toutes les dimensions et les positions déjà, il suffit d'ajouter un autre div en position absolue et à mettre le contenu relatif en elle.

J'ai regardé cette question et trouvé une alternative en utilisant float: left et clair: gauche mais après avoir utilisé cette méthode sur la première div, vous ne pouvez pas placer le div correctement comme point de départ de la deuxième div est sous la première div et pas à (0,0). Toutes les idées de comment je peux obtenir par cela.

Vous devez retirer position: absolute pour obtenir les flotteurs droit. Juste la largeur et la hauteur sont assez.

+0

J'ai supprimé la position: absolue, et a changé le haut et à gauche pour être margin-top et margin-left. Mais sur la deuxième et les autres divs suivantes, la position de départ n'est pas en haut à gauche de playArea (0,0), c'est la position sous la première div. Donc, si le premier div était à (30,0) et la hauteur était de 100px, alors le div secon commencerait à (30,100) mais je veux qu'il soit (0,0) Note: Ces parenthèses sont des coordonnées en termes de (X, Y) – phpNutt

+0

Après tout, il est effectivement difficile de comprendre exactement où vous aimez avoir le texte. Dans un élément de bloc en dessous du div le plus bas des trois divs? Vous pourriez juste ajouter un autre div positionné exactement là et mettre les paragraphes dedans. – BalusC

+0

Oui, je voudrais avoir le texte dans un élément de bloc ci-dessous le plus bas des trois divs. Si je devais le positionner en absolu, je crois que cela soulève deux problèmes. 1. Je ne peux jamais les choses futures à la page sans les positionner 2. Mon pied est positionné absolu, donc je ne veux pas avoir à changer à chaque fois et calculé où cela devrait être – phpNutt

0

Float les trois divs internes gauche, mettre overflow: hidden; sur la playarea div et mettre votre <p> sous les trois divs internes avec clear: both;

0

Après avoir lu le fil de commentaires entre vous et « BalusC », il semble que vous avez modifié votre CSS et essayez maintenant de faire flotter vos articles, et utilisez margin-top et margin-left pour le positionnement. Vous êtes totalement capable de le faire de cette façon, mais vous oubliez que vous pouvez également utiliser des marges négatives pour positionner vos éléments. Par exemple si vous utilisez margin-top: -10px; puis il va tirer l'élément vers le haut (au lieu de le pousser vers le bas, comme une marge de valeur positive normale). La même chose vaut pour toutes vos autres marges.

Cela semble être l'ingrédient manquant pour vous maintenant.

+0

Hey, je me rends compte que vous pouvez utiliser Marges négatives mais cela signifie simplement prendre la hauteur de la précédente div loin de la marge de la div actuelle en premier et c'est une mauvaise façon de faire les choses je pense – phpNutt

+0

La façon la plus propre et la plus simple d'effectuer ce que vous devez faire est de ne pas laisser flotter . Ajoutez simplement une hauteur à #playArea, comme mentionné par Kaze no Koe. D'après l'information que vous avez donnée, je ne peux pas imaginer qu'il existe un moyen meilleur ou plus facile de le faire que ce qu'il a suggéré. –