Page 1 sur 1

Un cas problèmatique de positionnement de trois éléments sur

Posté : 10 août 2007, 00:56
par MainMa
J'ai beau à chercher, je ne trouve pas de solution :roll:. Voilà le problème :


Sur une même ligne sont positionnés trois objets. Tout d'abord, tout à gauche se trouve une zone d'une largeur fixe (100 pixels) et avec un arrière plan spécifique. Puis vient le texte d'une largeur inconnue et avec un arrière plan transparent. Finalement, la ligne est terminée par une zone avec encore une fois un arrière plan spécifique. Cette dernière zone commence là où se termine le texte et se prolonge jusqu'à la fin de la page (ou plus précisément de l'élément parent).

On ne peut pas faire ça :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> <div style="float:left; background:red; width:100px;">100 pixels</div> <div style="float:left; padding:0 10px;">Text of undefined size</div> <div style="background:lime;">Right</div> <div style="float:left; background:red; width:100px;">100 pixels</div> <div style="float:left; padding:0 10px;">Text of undefined size</div> <div style="float:left; background:lime;">Right</div> </body> </html>
car dans la premier cas, la zone du texte se trouve par dessus l'arrière plan de la zone de droite, et dans le deuxième cas la zone de droite ne se prolonge pas suffisamment à droite.


Est-ce que quelqu'un a une idée comment faire ?


Remarque : bien entendu, il n'est pas question d'utiliser ni du JavaScript (pour calculer dynamiquement la largeur de la zone de droite par exemple) ni des tables, ni les position:absolute. Voilà. :wink:

Posté : 10 août 2007, 14:52
par Invité
bonjour tu peux faire ça:

Code : Tout sélectionner

<div style="float:left; background:red; width:100px;">100 pixels</div> <div style="float:left; padding:0 10px;background:#FFFFFF;">Text of undefined size</div> <div style=" background:lime;">Right</div>
[/quote]

Posté : 10 août 2007, 15:27
par MainMa
Et bien non, je ne peux pas. :? C'est ce que j'ai fait avant, sauf que maintenant j'ai besoin, comme je l'ai dit, d'un arrière plan transparent pour le texte (car derrière le texte, il y a une image).

Donc ça marche pas.

Merci en tout cas d'avoir répondu !

Posté : 10 août 2007, 15:36
par Calimero
As-tu essayé avec un float:left; pour ta zone de gauche et un float:right; pour ta zone de droite (et rien pour le texte du milieu) ?

Posté : 10 août 2007, 16:30
par Hubert Roksor
Si il fait ça, c'est sa zone du milieu qui prendra la largeur restante, et apparemment ce n'est pas le but recherché. J'avoue ne pas avoir la moindre idée pourquoi le div du milieu utilise le background du div de droite...

Si tu ne trouves pas de solution ici, va voir du côté de chez http://forum.alsacreations.com/forum.php en mettant un lien de chaque côté pour éviter que 2 personnes différentes répondent au même sujet sur 2 forums différents, merci.

Posté : 10 août 2007, 18:01
par MainMa
Si il fait ça, c'est sa zone du milieu qui prendra la largeur restante, et apparemment ce n'est pas le but recherché.
Exactement ! :D
J'avoue ne pas avoir la moindre idée pourquoi le div du milieu utilise le background du div de droite...
En tout cas, c'était toujours comme ça. Les float:left/right ne font que décaler le contenu des objets qui se trouvent après, pas les objets même. A propos, j'ai également pensé à mettre l'arrière plan de droite au contenu du <div></div> de droite, mais je ne vois pas trop comment faire pour prolonger se contenu jusqu'à la fin de la ligne.
Si tu ne trouves pas de solution ici, va voir du côté de chez http://forum.alsacreations.com/forum.php en mettant un lien de chaque côté pour éviter que 2 personnes différentes répondent au même sujet sur 2 forums différents, merci.
D'accord. Merci beaucoup pour le conseil !



Par ailleurs, j'ai remarqué qu'il est possible de faire la chose suivante :

Code : Tout sélectionner

<div style="float:left; background:red; width:100px;">100 pixels</div> <div style="float:left; padding:0 10px;">Text of undefined size</div> <div> <hr style="background:lime; padding:0; margin:0; border:none; height:20px;" /> </div>
Par contre, cela a plusieurs inconvénients : on ne peut plus mettre du texte dans la zone de droite, cette zone se retrouve avec une hauteur fixe et le code est un peu tiré par les cheveux...