Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Flottant à droite récalcitrant

15 réponses
Avatar
Pascale
Bonjour,

Je me doute que c'est une question de débutant, mais enfin, je suis
enquiquinée avec ça.

Soit une page avec un menu (flottant à gauche), un corps de texte, et une
petite boîte flottante à droite.

Le menu a les caractéristiques suivantes (j'ai viré bien sûr ce qui n'était
pas nécessaire à la compréhension) :
div.gauche
{
float: left;
position: absolute;
top: 150px;
left: 60px;
width: 250px;
}

div.corps
{
margin-left: 250px;
padding: 40px;
max-width: 800px;
}

Cette partie fonctionne correctement, mais lorsque j'essaie de placer ma
boîte à droite, de la manière suivante :

div.droite
{
clear: left;
max-width: 100px;
text-align: center;
margin: 60px 10px 10px 10px;
float: right;
}

La boîte « flotte » bien mais je constate deux problèmes :

- Si j'ouvre mon navigateur en plein écran, la boîte est calée à droite, ce
qui ne me va pas du tout : je préfèrerais qu'elle soit, à la marge près,
collée contre le corps de texte. Là, il y a un énorme blanc entre le corps
de texte et cette boîte.

- Si je réduis la taille de mon navigateur, cette boîte et le corps de
texte se chevauchent, c'est très moche.

Je ne suis même pas sûre d'employer la bonne technique pour faire ce que je
désire, donc si quelqu'un pouvait m'aider, ce serait bien...
--
Pascale
http://www.la-grille-verte.net

10 réponses

1 2
Avatar
SAM
Le 18/04/12 19:28, Pascale a écrit :
Bonjour,

Je me doute que c'est une question de débutant, mais enfin, je suis
enquiquinée avec ça.

Soit une page avec un menu (flottant à gauche), un corps de texte, et une
petite boîte flottante à droite.

Le menu a les caractéristiques suivantes (j'ai viré bien sûr ce qui n'était
pas nécessaire à la compréhension) :
div.gauche
{
float: left;
position: absolute;



Je suis assez certain que le positionnement absolu n'est pas requis
(ou alors il y a une erreur de conception en amont)

top: 150px;
left: 60px;
width: 250px;
}

div.corps
{
margin-left: 250px;
padding: 40px;
max-width: 800px;



Pourquoi une largeur maxi ici ?
(normalement ce div doit s'étendre sur toute la largeur libre à droite
du div-gauche, c'est le contenant général qui devrait avoir une
limitation de largeur)

}

Cette partie fonctionne correctement, mais lorsque j'essaie de placer ma
boîte à droite, de la manière suivante :



on ne comprend rien à rien !

les css c'est une chose
mais ...
sans le html correspondant
sans dons divinatoires
là ça va pas le faire ...

elle doit être à la droite de quoi ?
et, quel est son contenant ?

div.droite
{
clear: left;
max-width: 100px;
text-align: center;
margin: 60px 10px 10px 10px;
float: right;
}

La boîte « flotte » bien mais je constate deux problèmes :

- Si j'ouvre mon navigateur en plein écran, la boîte est calée à droite,



---> "float: right;"

ce qui ne me va pas du tout : je préfèrerais qu'elle soit, à la marge près,
collée contre le corps de texte.



alors on ne l'éclaircit pas à gauche
ni on ne la flottaille à droite

Là, il y a un énorme blanc entre le corps
de texte et cette boîte.

- Si je réduis la taille de mon navigateur, cette boîte et le corps de
texte se chevauchent, c'est très moche.

Je ne suis même pas sûre d'employer la bonne technique pour faire ce que je
désire, donc si quelqu'un pouvait m'aider, ce serait bien...



Je ferais :

- un div de menu à gauche
- avec largeur fixée
- en float: left
- sans positionnement (sauf si utile aux items-liens)
- un div conteneur
- marge gauche ≥ largeur du menu
- éventuellement avec largeur max
- positionnement relatif
- un div de sous-menu dans le conteneur
- en float right
- de largeur fixée
- un div de contenu dans le conteneur
- avec marge droite ≥ largeur sous-menu de droite


<h1 style="height:150px">titre et logo</h1>
<div id="tout_le_contenu">
<div id="menu">
<ul>
...
</div>
<div id="conteneur">
<div id="sous-menu">
...
</div>
<div id="contenu">
<p> blabla
</div>
</div>
</div>
<div id="pied_page">
merci de votre visite
</div>
</body>



(pas testé)

--
Stéphane Moriaux avec/with iMac-intel
Avatar
SAM
Le 18/04/12 19:55, SAM a écrit :

(pas testé)



test :
<http://cjoint.com/?BDtmn1PFL8f>

--
Stéphane Moriaux avec/with iMac-intel
Avatar
SAM
Le 19/04/12 12:14, SAM a écrit :
Le 18/04/12 19:55, SAM a écrit :

test :
<http://cjoint.com/?BDtmn1PFL8f>




Ooops ! ce n'est pas le bon !

voici :
<http://cjoint.com/?BDtmvaOUkpv>


--
Stéphane Moriaux avec/with iMac-intel
Avatar
Pascale
Tout d'abord, je te remercie pour ton aide, SAM !

SAM écrivait
news:4f8efffa$0$21461$:

Je suis assez certain que le positionnement absolu n'est pas requis
(ou alors il y a une erreur de conception en amont)



C'est une erreur de ma part ! En fait le code est :

div.gauche
{
float: left;
width: 250px;
margin-left: 30px;
padding-top: 50px;
}

Pourquoi une largeur maxi ici ?
(normalement ce div doit s'étendre sur toute la largeur libre à droite
du div-gauche, c'est le contenant général qui devrait avoir une
limitation de largeur)



Jusqu'à présent, il n'y avait pas de contenant général, vu qu'il n'y avait
pas de boîte à droite : la largeur du menu de gauche étant fixée, il me
suffisait de préciser la largeur maxi du corps de texte, histoire de ne pas
avoir un texte étalé sur toute la largeur d'un écran géant (:

on ne comprend rien à rien !

les css c'est une chose
mais ...
sans le html correspondant
sans dons divinatoires
là ça va pas le faire ...
elle doit être à la droite de quoi ?



Du corps de texte (le corps de texte est donc encadré à gauche par le menu,
à droite par la fameuse boîte).

et, quel est son contenant ?



Il n'y en a pas, et je me doute bien que c'est là la plus grosse erreur !

Donc j'en ai mis un qui englobe le corps de texte ET la boîte flottante à
droite.

J'ai simplement précisé :
<div class="gauche">
Menu
</div>
<div class="corps">
<div class="droite>
Boîte flottant à droite
</div>
<div class="milieu">
<div class="intro">
Introduction
</div>
<div class="annonces">
Annonces
</div>
</div>
</div>
(il y a aussi une div en-tête et une div pied-de-page).

Et naturellement, cela marche tout de suite mieux comme on peut le voir
ici :

http://ecuriesdelancelot.fr

Par contre, j'ai encore un problème de « flottaison » sur cette page :
http://ecuriesdelancelot.fr/equipe

Normalement, chaque photo flotte à droite ou à gauche du texte de
présentation. Le problème est que je n'ai pas trouvé de solution vraiment
propre pour faire ça correctement.

Je peux insérer chaque ensemble texte + photo dans une div (à partir de la
2ème photo seulement, sinon, le corps de texte démarre sous le menu), et
appliquer un clear: both; à cette div. Je peux aussi, après chaque texte,
insérer un paragraphe vide ayant la propriété clear: both; Mais outre que
ça ne me paraît pas très propre comme procédé, si je fais ça, il y a un
espace anormalement grand entre les deux premières photos, puisque le
clear: both; est placé après le premier ensemble photo + texte.
En résumé, dès que je mets un clear: both; le corps de texte apparaît plus
bas que le menu, ce qui est évidemment tout à fait inadapté.

Actuellement le code est le suivant :

<div class="gauche">
Menu flottant à gauche
</div>
<div class="corps">
<h1>Titre 1</h1>
<h2>Sous-titre</h2>
<h3>Nom 1</h3>
<img class="photogauche" src="photos/photo1.jpg" title="titre1"
alt="titre1">
<p class="pres">1er texte de présentation.</p>
<h3>Nom 2</h3>
<img class="photodroite" src="photos/photo2.jpg" title="titre2"
alt="titre2">
<p class="pres">2ème texte de présentation.</p>
...
</div>

Les classes "photodroite" et "photogauche" correspondent évidemment à un
float: left; et à un float: right;

Je me doute bien que je me noie encore dans un verre d'eau, mais si
quelqu'un a une bouée...

--
Pascale
http://www.la-grille-verte.net
Avatar
SAM
Le 19/04/12 16:39, Pascale a écrit :

Par contre, j'ai encore un problème de « flottaison » sur cette page :
http://ecuriesdelancelot.fr/equipe

Normalement, chaque photo flotte à droite ou à gauche du texte de
présentation. Le problème est que je n'ai pas trouvé de solution vraiment
propre pour faire ça correctement.

Je peux insérer chaque ensemble texte + photo dans une div (à partir de la
2ème photo seulement, sinon, le corps de texte démarre sous le menu), et
appliquer un clear: both; à cette div. Je peux aussi, après chaque texte,
insérer un paragraphe vide ayant la propriété clear: both; Mais outre que
ça ne me paraît pas très propre comme procédé, si je fais ça, il y a un
espace anormalement grand entre les deux premières photos, puisque le
clear: both; est placé après le premier ensemble photo + texte.
En résumé, dès que je mets un clear: both; le corps de texte apparaît plus
bas que le menu, ce qui est évidemment tout à fait inadapté.

Actuellement le code est le suivant :



Là aussi j'aurais mis un conteneur pour chaque "fiche"

essaie avec :

.corps { position: relative; }
.corps h3 { clear: both; }

et peut-être aussi :

.corps img { width: 50%; }


<div class="gauche">
Menu flottant à gauche
</div>
<div class="corps">
<h1>Titre 1</h1>
<h2>Sous-titre</h2>
<h3>Nom 1</h3>
<img class="photogauche" src="photos/photo1.jpg" title="titre1"
alt="titre1">
<p class="pres">1er texte de présentation.</p>
<h3>Nom 2</h3>
<img class="photodroite" src="photos/photo2.jpg" title="titre2"
alt="titre2">
<p class="pres">2ème texte de présentation.</p>
...
</div>

Les classes "photodroite" et "photogauche" correspondent évidemment à un
float: left; et à un float: right;

Je me doute bien que je me noie encore dans un verre d'eau, mais si
quelqu'un a une bouée...





--
Stéphane Moriaux avec/with iMac-intel
Avatar
Pascale
SAM écrivait
news:4f902fd0$0$12516$:

Là aussi j'aurais mis un conteneur pour chaque "fiche"



Fait : pour chaque « fiche », j'ai mis un div (pas pris la peine de le
nommer, vu que je ne lui ai pas ajouté de caractéristiques).

essaie avec :

.corps { position: relative; }



Fait, mais j'avoue que je ne comprends pas très bien le rôle de
« relative » quand on ne lui ajoute pas de paramètres pour indiquer
le décalage.

.corps h3 { clear: both; }



Fait.

et peut-être aussi :

.corps img { width: 50%; }



Oui, c'est pas plus mal comme ça (:

Mais pour l'ensemble de la page, grmbl, j'ai encore dû faire quelque chose
de travers, je suppose...
http://ecuriesdelancelot.fr/equipe

--
Pascale
http://www.la-grille-verte.net
Avatar
SAM
Le 19/04/12 18:50, Pascale a écrit :
SAM écrivait
news:4f902fd0$0$12516$:

Là aussi j'aurais mis un conteneur pour chaque "fiche"



Fait : pour chaque « fiche », j'ai mis un div (pas pris la peine de le
nommer, vu que je ne lui ai pas ajouté de caractéristiques).

essaie avec :

.corps { position: relative; }



Fait, mais j'avoue que je ne comprends pas très bien le rôle de
« relative » quand on ne lui ajoute pas de paramètres pour indiquer
le décalage.



Un contenu se réfère à son plus proche contenant qui est positionné

En fait, c'est un problème inverse

Je ne sais pas trop si ici on en a réellement besoin ?
Ha! ben si, pour les images réduites à la 1/2 de la largeur de "corps".

.corps h3 { clear: both; }



Fait.

et peut-être aussi :

.corps img { width: 50%; }



Oui, c'est pas plus mal comme ça (:

Mais pour l'ensemble de la page, grmbl, j'ai encore dû faire quelque chose
de travers, je suppose...
http://ecuriesdelancelot.fr/equipe



non, pas vraiment

Il faut juste que le 1er H3 ne soit pas en clear: both;

<h3 style="clear:none">Laetitia</h3>

par exemple

sinon, et comme de juste, il s'affiche après le menu qui doit être
flottant, non ?


--
Stéphane Moriaux avec/with iMac-intel
Avatar
Pascale
SAM écrivait
news:4f9061b3$0$21489$:

Un contenu se réfère à son plus proche contenant qui est positionné

En fait, c'est un problème inverse

Je ne sais pas trop si ici on en a réellement besoin ?
Ha! ben si, pour les images réduites à la 1/2 de la largeur de
"corps".



Je viens de tester sans le position: relative, je ne vois pas de
différence.

non, pas vraiment

Il faut juste que le 1er H3 ne soit pas en clear: both;

<h3 style="clear:none">Laetitia</h3>

par exemple



Oui, c'est quelque chose que j'avais essayé, mais du coup, c'est la 2ème
« fiche » qui se retrouve un peu trop bas.

sinon, et comme de juste, il s'affiche après le menu qui doit être
flottant, non ?



Exactement !

En fait, n'ayant pas bossé depuis un moment sur ce site (hormis des mises à
jour simples), je ne me souvenais plus pourquoi j'avais mis ce position:
absolute; dans ma CSS : et bien maintenant, je me souviens, c'était
précisément pour résoudre ce problème de mise en page, pour cette page là
spécifiquement.

Là, je viens de remettre ce fameux position: absolute; ça marche, mais je
serais bien en peine de justifier la logique de ce position couplé à un
float... J'ai conscience que ça ressemble plus à un infâme bricolage qu'à
du travail propre.

--
Pascale
http://www.la-grille-verte.net
Avatar
SAM
Le 19/04/12 23:15, Pascale a écrit :

Là, je viens de remettre ce fameux position: absolute; ça marche, mais je
serais bien en peine de justifier la logique de ce position couplé à un
float... J'ai conscience que ça ressemble plus à un infâme bricolage qu'à
du travail propre.



Je suis quasi certain que tu n'as plus besoin du float
(en tous cas pour cette page)


--
Stéphane Moriaux avec/with iMac-intel
Avatar
Pascale
SAM écrivait
news:4f914f19$0$12498$:

Je suis quasi certain que tu n'as plus besoin du float
(en tous cas pour cette page)



Je vais essayer sans, mais le corps de texte ne va-t-il pas passer en-
dessous du menu ? Je vais voir ça !

--
Pascale
http://www.la-grille-verte.net
1 2