28122 sujets

CSS et mise en forme, CSS3

Bonjour,
je voudrais mettre deux images sur la même ligne, avec du texte au milieu, comme ceci:

J'ai essayé avec un <div class="floatleft">.....texte <div class="floatright">
Mais ça ne fonctionne pas.

Savez vous comment je peux faire?
Merci pour votre aide. upload/61389-kkkkkkkkkk.jpg
Modifié par abeille (04 Mar 2016 - 22:13)
<!DOCTYPE html>

<html lang="fr">

<head>
<meta charset="UTF-8">
<title>aide</title>
<link rel="stylesheet" type="text/css" href="site.css" />
</head>

<body>

<figure id="atome"><img src="atome.jpg"></figure>
<figure id="fusion"><img src="fusion.jpg"></figure>

<section>texte jjjj dddddddddddddddd ddddddddddffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffff fffffffffffffffffffff
<br>ffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffff
<br>:::::
texte suite ddddddddddddddddddddddddddfffffffffffffffff ffffffffffffffffff ffffffffffffffffff fffffffffffffffffff ffffffffffffffffffffffffffff ffffffffffffffffffffffffff fffffffffffffffffffffffffff ffffffffff ffffffffffffffffffffff fffffffffff ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff fffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff ffffffffffffffff
<br>fffffffffffffffffff fffffffffffffffffffff
ffffffffffffffff ffffffffffffff
<br>:::::
</section>

</body>
</html>


et pour le CSS


#atome{float: left; margin: 5px;}
#fusion{float: right; margin: 5px;}
section{text-align: justify;}
Bonjour Alain,
merci pour ton aide.
Je voudrais maintenant que l'image de droite soit placée en bas, au niveau de l'autre image.
J'ai essayé de mettre un "margin-top: 100px" dans le Css, mais ça ne fait rien.
Qu'est ce que tu me conseillerais?
upload/61389-mmmmmmmmmm.jpg

Merci bien.
J avoue que la solution que je vais te donner ne me convient pas.

J aurai prefere un "vertical-align=bottom" mais ca ne fonctionne pas. J ai essayé sur un "table-cell" et ca ne fonctionne pas. Il est probable qu il faille utiliser flex-box mais ca, je ne maitrise pas ! (j ai commandé le livre de Raphael, j ai hate de le recevoir).

Alors ma solution, ce sera de la bidouille ... mais ca fonctionne ponctuellement.

J ai mis les images dans des DIV. bien sur qu on mettra en inline-block. L'avantage, c'est que tu pourras mettre autre chose que des image dans ces block, au cas où. J ai dimensionné ces 2 DIV à 500 px de haut.

Et ca donne ca :

<body>

<div id="atome"><figure><img src="atome.jpg"></figure></div>
<div id="fusion"><figure><img src="fusion.jpg"></figure></div>

<section>texte jjjj dddddddddddddddd ddddddddddffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffff fffffffffffffffffffff
<br>ffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffff
<br>:::::

....etc

</body>

et pour le CSS :

#atome{display: inline-block; float: left;}

#fusion{display: inline-block; float: right;}
#fusion img{margin-top: 60px;}

section{text-align: justify;}

div{height: 500px;}
Dédolé, erreur de ma part. Mea Culpa !

Inutile de mettre "inline-block". Le code CSS devient donc ;

#atome{float: left;}
#fusion{float: right;}
#fusion img{margin-top: 60px;}
div{height: 500px;}
section{text-align: justify;}

Encore désolé.
Non, désolé, Alain, ça ne fonctionne pas!
Voici ce que j'obtiens: (j'ai changé les images).

upload/61389-image2222C.jpg
En plus, le texte chevauche l'image maintenant.

Le HTML
<div id="bombemaralinga"><figure><img src="C:\Users\lanor\Desktop\sitebombe\photosbombes\bombemaralinga.jpg" width="400" height="600"></figure></div> 
<div id="centralenucleaire"><figure><img src="C:\Users\lanor\Desktop\sitebombe\photosbombes\centralenucleaire.jpg" width="300" height="200"></figure></div>
<section>
<p class="paragraphe"><span class="gras">Selon la science, toute la matière est composée d'atomes:</span> cet ordinateur, cette montagne, ma main, l'air, sont composés d'atomes.<br />
Un atome est composé d'un noyau et d'électrons tournant très rapidement autour de ce noyau, lui même composé de diverses particules: protons, neutrons, bosons, gluons, quarks, mésons, pions...<br />
Un atome est tellement petit qu'il est invisible même avec les microscopes les plus puissants. Il faudrait plus de 1000 000 000 000 000 000 000 d'atomes pour remplir le volume d'une tête d'épingle</p>


Le code CSS:
#bombemaralinga{float: left;}
#centralenucleaire{float: right;}
#bombemaralinga img{margin-top: 60px;}
div{height: 500px;}
section{text-align: justify;}



Pas facile comme problème!
Merci quand même pour ton aide.
Modifié par abeille (05 Mar 2016 - 20:05)
Modérateur
bonjour,

pour faire descendre la seconde image, peut-être serait t-il judicieux de l’insérer dans le texte a un endroit ou tu y fait référence.

Apprend a contrôler les effets de bords des flottants (mots clés : contexte de formatage pour les parents/adjacent).

exemple : http://codepen.io/anon/pen/QNjzJq
Modifié par gcyrillus (05 Mar 2016 - 20:31)
gcyrillus a écrit :
bonjour,

pour faire descendre la seconde image, peut-être serait t-il judicieux de l’insérer dans le texte a un endroit ou tu y fait référence.

Apprend a contrôler les effets de bords des flottants (mots clés : contexte de formatage pour les parents/adjacent).

exemple : http://codepen.io/anon/pen/QNjzJq

Salut gcyrillus.
Oui, c'est le plus simple en fait!
On se complique parfois trop la vie.
Merci pour ton conseil!
A plus.
NB :

Il semble que tu te sois trompé dans le CSS. tu as mis le "margin-top" sur l'image de gauche alors qu'elle doit etre sur l image de droite.

Tu as ecrit

Le code CSS:
#bombemaralinga{float: left;}
#centralenucleaire{float: right;}
#bombemaralinga img{margin-top: 60px;}
div{height: 500px;}
section{text-align: justify;}

mais le margin-top devait etre sur l'image "centrale" qui fait 200 px de hauteur et non sur l'image "bombe" qui elle fait 600 px de hauteur.

Comme tu as changé d image, ta nouvelle image de gauche (600 px de haut) devient superieure au conteneur de 500 px. (il faudrait mettre le "div" à 610 px pr exemple au lieu de 500).
Bonjour Alain, merci pour ton travail de correction.
C'est bien maintenant, j'arrive à positionner l'image en bas à droite, mais petit souci....
dans le Css,
#bombemaralinga{float: left;}
#centralenucleaire{float: right;}
#centralenucleaire img{margin-top: 410px;}
div{height: 610px;}
section{text-align: justify;}

Le "div{height: 610px;}" change aussi tous les autres DIV de ma page. Et ailleurs c'est la jungle maintenant!
Je te remets le Html:
<div id="bombemaralinga"><figure><img src="C:\Users\lanor\Desktop\sitebombe\photosbombes\bombemaralinga.jpg" width="400" height="600"></figure></div> 
<div id="centralenucleaire"><figure><img src="C:\Users\lanor\Desktop\sitebombe\photosbombes\centralenucleaire.jpg" width="300" height="200"></figure></div>
<section>
<p class="paragraphe"><span class="gras">Selon la science, toute la matière est composée d'atomes:</span> cet ordinateur, cette montagne, ma main, l'air, sont composés d'atomes.<br />
Un atome est composé d'un noyau et d'électrons tournant très rapidement autour de ce noyau, lui même composé de diverses particules: protons, neutrons, bosons, gluons, quarks, mésons, pions...<br />
Un atome est tellement petit qu'il est invisible même avec les microscopes les plus puissants. Il faudrait plus de 1000 000 000 000 000 000 000 d'atomes pour remplir le volume d'une tête d'épingle</p></section>


Merci pour ton aide!!!
alain_47 a écrit :
J avoue que la solution que je vais te donner ne me convient pas.

J aurai prefere un "vertical-align=bottom" mais ca ne fonctionne pas. J ai essayé sur un "table-cell" et ca ne fonctionne pas. Il est probable qu il faille utiliser flex-box mais ca, je ne maitrise pas !


Je ne suis pas sûr que ça simplifie les choses : il est effectivement très facile d'aligner les deux images de tailles différentes en alignant les deux sur le bas. Il suffit pour cela de les mettre dans un conteneur
. Le CSS :
 .conteneur{ 
			display: flex;  flex: 1 1 auto;
			flex-flow: row nowrap;
			justify-content: center;
			align-items: baseline;
			margin: auto;
			border: none;
			}

et le html du genre :
 <div class="contenu"><figure "><img  src="premièreimage.jpg" alt="image 1" height="250" /> 													<figcaption>première image</figcaption>
</figure>
		&amp;

<figure class>	<img src="deuxièmeimage.jpg" alt="image 2" height="50" /> 
<figcaption>Deuxième image</figcaption>
</figure>
</div> 


(le &amp au milieu pour un lien par exemple).

Mais le problème est que le début du texte central, qui est un flex-item va s'aligner sur la ligne de base (donc sur les figcaption). Donc, sauf si un expert (ce que je ne suis pas) montre une solution assez simple dans un contexte flexible, je crois qu'il vaut mieux s'en tenir aux solutions plus classiques et qui marchent.

En ce qui concerne la désorganisation de toutes les div, est-ce qu'il ne faut pas appliquer la hauteur de 610px à une seule div désignée par son id ou sa classe?

Bon courage.
André
Bonjour André,

Tu as raison pour les DIV. J'avais mis une taille par rapport aux données initiales du probleme posé. Mais bien sur, il faut l'integrer au reste du site. C'est de ma faute, j'aurai du y penser.

Pour les FLEX,, ok.

Abeille, la solution de Gcyrillus reste la plus pertinente
Ok Alain, merci pour l'aide, ainsi que Gcyrillus.
Je vais faire comme il a dit: le plus simple.
Je place mon image avec un float à l'endroit où je veux qu'elle soit. Et basta.

Merci à tous.
A +