28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

Je fais appel à vous car je vais craquer car je ne trouve pas la solution malgrès mes essais, la lecture de tutos, de faq et de différents post.

Je développe un site pour un club. Une des pages doit faire apparaitre l'organigramme de l'association.

Et voila le pb, je n'arrive pas à faire la mise en page que je souhaite.

Avant de m'expliquer voici une image de ce que je suis arrivé :

upload/12292-organigram.JPG

Avec le code suivant :


<div class='organigramme' align="center">
	<div class='photo'>
	 	<h3>Pr&eacute;sident</h3>
		<img <?php if (file_exists($photo_president)) echo("src='$photo_president'"); echo("src='Photos/anonyme.jpg'")?> />
		<p><?php echo($president['nom'] . ' ' . $president['prenom'])?></p>
	</div>
	<hr />
	<div class='photo'>
		<h3>Tr&eacute;sorier</h3>
		<img <?php if (file_exists($photo_tresorier)) echo("src='$photo_tresorier'"); echo("src='Photos/anonyme.jpg'")?>/>
		<p><?php echo($tresorier['nom'] . ' ' . $tresorier['prenom'])?></p>
	</div>	
	<div class='photo'>
	 	<h3>Secr&eacute;taire</h3>
		<img <?php if (file_exists($photo_secretaire)) echo("src='$photo_secretaire'"); echo("src='Photos/anonyme.jpg'")?>/>
		<p><?php echo($secretaire['nom'] . ' ' . $secretaire['prenom'])?></p>
	</div>
	<hr />
	<div class='photo'>
		<h3>Responsable mat&eacute;riel</h3>
		<img <?php if (file_exists($photo_responsable_matériel)) echo("src='$photo_responsable_matériel'"); echo("src='Photos/anonyme.jpg'")?>/>
		<p><?php echo($responsable_matériel['nom'] . ' ' . $responsable_matériel['prenom'])?></p>
	</div>
	<div class='photo'>
		<h3>Responsable logistique</h3>
		<img <?php if (file_exists($photo_responsable_logistique)) echo("src='$photo_responsable_logistique'"); echo("src='Photos/anonyme.jpg'")?>/>
		<p><?php echo($responsable_logistique['nom'] . ' ' . $responsable_logistique['prenom'])?></p>
	</div>
	<div class='photo'>
		<h3>Responsable animation</h3>
		<img <?php if (file_exists($photo_responsable_animation)) echo("src='$photo_responsable_animation'"); echo("src='Photos/anonyme.jpg'")?>/>
		<p><?php echo($responsable_animation['nom'] . ' ' . $responsable_animation['prenom'])?></p>
	</div>
	<hr />
</div>


et le CSS suivant :


.organigramme {
	width:100%;
	margin:0px;
	padding:0px;
	background-color:#CC0000;
}

.organigramme hr {
	clear:both;
	visibility:hidden;
	padding:0px;
	margin:0px;
}

.photo {
	position:relative;
	float:left;
	width:33%;
	margin:0px;
	padding:0px;
	text-align:center;
	background-color:#3300FF;
}


.photo img{
	border:none;
	padding:0px;
	margin-top:0px;
	height:120px;
}


Premièrement, je ne comprend l'espace que j'ai en dessous de la première image sous FF(que je n'ai pas sous IE7)

De plus, je voudrait que les photos/groupe de photos (et les textes qui vont avec) soient centrer.

J'avais réussie sous FF en déclarant les div "photos" en table-cell, ce qui me permettait de me dispenser des float donc possibilité de centrage, mais méthode non reconnu sous IE.

Doit-je placé tout cela dans un tableau ? Ce que je voudrais essayé car je vais reproduire la même méthode pour faire un organigramme de tous les membres.

Merci par avance de me soulager de ce mal de tête.
Modifié par tay3112 (26 Jun 2007 - 00:03)
Salut

Pour ton problème de centrage, il faudrais connaitre la largeur ta page, ensuite tu appliques des marges latéral automatiques.

Exemple

.organigramme {

	width:50%;

	margin:0px auto;

	padding:0px;

	background-color:#CC0000;

}


Ainsi ton contenu sera centrer dans ta page, après pour aligner tout, il faut aligner horizontalement ton texte (text-align) et tes images pourront l'être de la même manière que ton div organigramme.

Si tu veux centrer tes div verticalement, alors il faudras passer en tableaux car certains navigateur ne reconnaisse pas la règle css vertical-align ...
Modifié par Super_baloo8 (26 Jun 2007 - 00:51)
Cela ne correspond pas exactement à ce que je souhaite faire,

Je m'explique un peu mieux : je voudrait que les photos soit sous forme pyramidale, comme ceci

upload/12292-ORGANIGRAM.JPG

Je me rèpète, ma méthode (table-cell) n'est pas compatible IE et je n'arrive pas à expliquer l'espace sous la première photos.

De plus, la largeur disponible est dynamique et dépend de la résolution de l'écran.

Merci quand même et encore plus merci pour les futurs post
Modifié par tay3112 (26 Jun 2007 - 01:02)
tay3112 a écrit :
Malheureusement, le site n'est pas encore en ligne ...

Ce qui n'interdit pas de faire une page statique reproduisant le problème, page anonymisée si besoin, et de la placer sur un hébergement de test. Smiley cligne
Modérateur
bonjour,

Le table-cell est incompatible IE , pourtant en jouant avec le layout on peut obtenir des resultats assez proches.

En raccourcie , en dotant les elements d'un display:inline (pour ceux qui ne le sont pas par défaut) , puis en leur conferant le layout avec la regle zoom:1; de Microsoft IE . on peut obtenir des "boites" qui contiendront des elements de type block sans forcer le retour a la ligne a l'exterieur de celle-ci , mais en cloissonnant les elments qu'elle contient, comme le ferait un display:table-cell.

exemple avec ton probleme:
J'ai pris l'option de me servir de listes , du table cell et des commentaires conditionnels pour appliquer le display:inline;zoom:1; dans IE.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>XHTML 1.0 Strict< : Organigramme</title>
<style type='text/css'>
html {
	background:#E56967;
}
dl , dt , dd , ul , li{
	text-align:center;
	margin:0;
	padding:0;
}
h1 , h2 {
	border-bottom:1px solid;
	background:#C1D1EA;
}
ul {
	display:table;
	width:100%;
}
li {
	display:table-cell;
}

</style>
 <!--[if IE]>
<style type="text/css">
/* regles simulant en partie le comportement "tableau" a l'affichage */
li {
	display:inline;
	zoom:1;
	padding:0 5%;
}
</style>
<![endif]--> 
</head>
<body>
<dl>
 <dt>Organigramme
 </dt>
 <dd>
	<h1>Pr&eacute;sident</h1>
	<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
	<br / > Nom Prenom Tel
 </dd>
 <dd>
	<h2>Bureau</h2>
	    <ul>
		<li>Tr&eacute;sorier
			<br />
			<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
			<br / > Nom Prenom Tel
		</li>
		<li>Secr&eacute;taire
			<br />
			<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
			<br / > Nom Prenom Tel
		</li>

	    </ul>
 </dd>
 <dd>
	<h2>Chefs de services</h2>
	    <ul>
		<li>Responsable mat&eacute;riel
			<br />
			<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
			<br / > Nom Prenom Tel
		</li>
		<li>Responsable logistique
			<br />
			<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
			<br / > Nom Prenom Tel
		</li>
		<li>Responsable animation
			<br />
			<img src="http://forum.alsacreations.com/upload/12292-organigram.JPG" />
			<br / > Nom Prenom Tel
		</li>
	   </ul>
 </dd>
</dl>
</body>
</html>


Le resultat est assez proches dans IE et firefox et la pyramide est visuellement comprehensible.
Se servir de liste permet aussi de retrouver une architecture ( visuelle en tout cas ) si les styles ne sont pas appliqués.

GC

<edit>exemple en ligne (taille des images fixée a 140px de largeur )
http://gcyrillus.free.fr/essai/organigramme.html
</>
Modifié par gcyrillus (26 Jun 2007 - 15:32)
Bonjour et merci paour l'astuce, c'est exactement ca qu je souhaite.

Petite précision, est-il possible de faire des commentaires conditionnelles dans une feuille CSS?

Merci par avance
Modifié par tay3112 (26 Jun 2007 - 19:36)