28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

Je suis actuellement en train de développer une interface web de planning.
J'ai un problème de mise en page de mes div, en fait certaines actions du planning se chevauchent donc quand c'est le cas je souhaiterai qu'une ligne soit créée en dessous. En ce moment j'utilise un
position:absolute;
et je pense que le chevauchement est dû à ça cependant je ne vois pas comment résoudre ce soucis. Pouvez-vous m'aider ?
Voici une partie de mon code CSS :

/*div d'affichage du marqueur de temps*/
.marqueurHeure{
	position: absolute;
	width : 3px;
	z-index: 2;
	height:20px;
	background-color: red;
}

/*marqueur de fin de plan d'action prévu*/
.marqueurToDte{
	position: absolute;
	width : 2px;
	height: 20px;
	z-index: 2;
	background-color: blue;
	top: 0px;
}

.marqueurSync{
	position: absolute;
	width : 3px;
	height: 20px;
	z-index: 2;
	background-color: #D50A9F;
	top: 0px;
}

/*div d'en tête de la région (nom)*/
.planningRegionHeader{
	position: relative;
	left: 0%;
	line-height: 20px;
	font-weight:bold;
}

/*div d'en tête de l'agence (nom)*/
.planningAgenceHeader{
	position: relative;
	top: 0px;
	line-height: 20px;
}

/*div globale d'un planning d'un technicien*/
.planningTech{
	position: relative;
	top: 0px;
}

/*div d'en tête du technicien (nom +prénom)*/
.planningTechHeader{
	position: relative;
	top: 0px;
	line-height: 20px;
	font-style:italic;
}

/*div d'affichage quand il n'y a rien à afficher*/
.planningRien{
	background-image : url(../ressources/bg_rien.jpg);
	background-repeat : repeat;
	text-align : center;
	height: 18px;
	position: absolute;
	top: 0px;
}

.planningAGDPrevue,.planningAGDTerm,.planningPresenceAgence,.planningRetraitAgence,.planningAGDAgencePrevue,.planningAGDAgenceTerm,.planningEnCours,.planningRetardRqt,.planningRetardAgd,.planningIndicFinRqt,.poubelle,.replanifier,.planningArriveeSurSite,.planningDepartVersSite{
	position: absolute;
	top: 0px;
	text-align: center;
	height: 18px;
	border-left: 1px solid black;
	border-top: 1px solid black;
	border-bottom: 1px solid black;
}

/*div d'affichage d'un congé, absence*/
.planningConges{
	position: absolute;
	top: 0px;
	text-align: center;
	height: 18px;
	background-image: url(../ressources/absence.jpg);
	border: 1px solid black;
}


Merci d'avance pour votre aide
donne nous du code html, des screenshots et voir meme une version demo en ligne. Parceque la on ne peut rien te répondre Smiley smile
Modifié par ptitvincent (27 Jul 2011 - 14:05)
Voilà j'ai préparé un bout de code représentatif (il est trop long pour que je puisse le joindre, je mets donc une capture toujours).
Comment puis-je envoyer un fichier sur le forum ?

upload/39174-capture3.jpg
Modifié par drake (27 Jul 2011 - 14:53)
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>SEMAPHORE</title>
		<link href="css/cssv2.css" type="text/css" rel="StyleSheet" />
		<SCRIPT TYPE="text/javascript" SRC="js/function.js"> </SCRIPT>
		<script type="text/javascript" src="js/prototype.js" ></script>
		<script type="text/javascript" src="js/scriptaculous.js" ></script>	
	</head>
	<body>
		<div id='planningRegionHeader_Sud-Ouest' class='planningRegionHeader' style='width:15%;'><img src="ressources\bullet_add.png"\ onclick="affCache('divRegion_Sud-Ouest')">Sud-Ouest</div>

		<div id='divRegion_Sud-Ouest' style="display:none" >
			<div id='planningAgenceHeader_SAINT_ETIENNE' class='planningAgenceHeader' style='left:2%;width:13%;'>
			<img src="ressources\bullet_add.png"\ onclick="affCache('divAgence_SAINT_ETIENNE')">SAINT ETIENNE</div>
			<div id='divAgence_SAINT_ETIENNE' style="display:none" >
				<div id='planningTech_10038047' class='planningTech' >
					<div class='marqueurHeure' style='left:55.31688034188%;'></div>
					<div id='planningTechHeader_10038047' class='planningTechHeader' style='left:4%;width:11%;color:grey;'>DUPONT Martin</div>
					<div class='planningRien' style='left:15%;width:85%;'>?</div>
				</div><!-- Fin Technicien -->
				
				<div id='planningTech_10038069' class='planningTech' >
					<div class='marqueurHeure' style='left:55.31688034188%;'></div>
					<div class='marqueurSync' style='left:27.027136752137%;'></div>
					<div id='planningTechHeader_10038069' class='planningTechHeader' style='left:4%;width:11%;color:black;'>MARTIN Jacques</div>
					<div class="planningDepartVersSite" style="left:17.826068376068%;width:3.7323717948718%"></div>
					<div class="planningArriveeSurSite" style="left:21.55844017094%;width:4.3389957264957%"></div>
					<div class="planningDepartVersSite" style="left:25.897435897436%;width:6.071688034188%"></div>
					<div class="planningArriveeSurSite" style="left:31.969123931624%;width:2.6462606837607%"></div>
					<div class='marqueurToDte' style='left:41.153846153846%;'></div>
					<div class="planningRetardAgd" style="left:34.615384615385%;width:6.5384615384615%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
					<div class='marqueurToDte' style='left:67.307692307692%;'></div>
					<div class="planningEnCours" style="left:54.230769230769%;width:13.076923076923%;"></div>
				</div><!-- Fin Technicien -->
				
				<div id='planningTech_10037887' class='planningTech' >
					<div class='marqueurHeure' style='left:55.31688034188%;'></div>
					<div class='marqueurSync' style='left:52.844978632479%;'></div>
					<div id='planningTechHeader_10037887' class='planningTechHeader' style='left:4%;width:11%;color:black;'>GRAND Pascal</div>
					<div class='marqueurToDte' style='left:27.532051282051%;'></div>
					<div class="planningAGDTerm" style="left:25.679487179487%;width:1.8525641025641%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
					<div class="planningDepartVersSite" style="left:25.752136752137%;"></div>
					<div class="planningArriveeSurSite" style="left:25.775747863248%;width:5.570405982906%"></div>
					<div class='marqueurToDte' style='left:37.884615384615%;'></div>
					<div class="planningIndicFinRqt" style="left:31.346153846154%;width:6.5384615384615%;"></div>
					<div class="planningDepartVersSite" style="left:49.419551282051%;width:3.5089743589744%"></div>
					<div class="planningArriveeSurSite" style="left:52.928525641026%;width:1.3022435897436%"></div>
					<div class='marqueurToDte' style='left:64.038461538462%;'></div>
					<div class="planningEnCours" style="left:54.230769230769%;width:9.8076923076923%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
				</div><!-- Fin Technicien -->
				
				<div id='planningTech_10037886' class='planningTech' >
					<div class='marqueurHeure' style='left:55.31688034188%;'></div>
					<div class='marqueurSync' style='left:45.342094017094%;'></div>
					<div id='planningTechHeader_10037886' class='planningTechHeader' style='left:4%;width:11%;color:black;'>DELARUE Justine</div>
					<div class="planningDepartVersSite" style="left:24.81858974359%;width:0.076282051282051%"></div>
					<div class="planningDepartVersSite" style="left:29.971260683761%;width:0.067200854700855%"></div>
					<div class='marqueurToDte' style='left:34.288461538462%;'></div>
					<div class="planningAGDTerm" style="left:30.038461538462%;width:4.25%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
					<div class="planningArriveeSurSite" style="left:30.080235042735%;"></div>
					<div class="planningDepartVersSite" style="left:34.658974358974%;width:3.225641025641%"></div>
					<div class='marqueurToDte' style='left:44.423076923077%;'></div>
					<div class="planningRetardAgd" style="left:37.884615384615%;width:6.5384615384615%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
					<div class='marqueurToDte' style='left:44.967948717949%;'></div>
					<div class="planningAGDTerm" style="left:41.153846153846%;width:3.8141025641026%;"><img src="ressources/action_refresh.gif"  alt="<<" title="synchro" /></div>
					<div class="planningArriveeSurSite" style="left:41.219230769231%;"></div>
					<div class="planningPresenceAgence" style="left:45.385683760684%;width:9.1429487179487%"></div>
					<div class="planningPresenceAgence" style="left:54.528632478632%;width:-2382484.9132479%"></div>
				</div><!-- Fin Technicien -->
			</div><!-- Fin Agence -->
			
			<div id='planningAgenceHeader_SAINTES' class='planningAgenceHeader' style='left:2%;width:13%;'><img src="ressources\bullet_add.png"\ onclick="affCache('divAgence_SAINTES')">SAINTES</div>
			<div id='divAgence_SAINTES' style="display:none" >
				<div id='planningTech_10033520' class='planningTech' >
					<div class='marqueurHeure' style='left:55.31688034188%;'></div>
					<div id='planningTechHeader_10033520' class='planningTechHeader' style='left:4%;width:11%;color:grey;'>LEROY Marc</div>
					<div class='marqueurToDte' style='left:34.615384615385%;'></div>
					<div class="planningAGDTerm" style="left:31.891025641026%;width:2.724358974359%;"></div>
				</div><!-- Fin Technicien -->
			</div><!-- Fin Agence -->
</body>

</html>
C'est un peu le bordel en effet, j'ai pas arrondi les chiffres pour être le plus précis possible ! Et encore c'est rien là Smiley biggrin , c'est du html généré via php
Modifié par drake (27 Jul 2011 - 16:10)
Bonjour à toutes et à tous,
drake a écrit :
Voilà j'ai préparé un bout de code représentatif (il est trop long pour que je puisse le joindre, je mets donc une capture toujours).
Comment puis-je envoyer un fichier sur le forum ?


Si tu nous avais mis un lien vers ton site et en particulier vers ton problème, cela nous aurait été profitable à toutes et à tous !

Dans le cas contraire, tu ne risques pas d'avoir une réponse satisfaisante.

@+
"Le temps ne semble pas gommer tes fautes,
J’essaie mais rien n’y fait,
Je ne peux pas, je ne veux pas, je n’y arrive pas… "
Citation par Vitaa

C'est un peu ce que je ressens en voyant ce code !
Modifié par FlorianCardin (27 Jul 2011 - 17:43)
Artemus24 a écrit :
Bonjour à toutes et à tous,

Si tu nous avais mis un lien vers ton site et en particulier vers ton problème, cela nous aurait été profitable à toutes et à tous !

Dans le cas contraire, tu ne risques pas d'avoir une réponse satisfaisante.

@+


Bonjour,

Ce n'est pas un site mais une application web (interface de planning), elle n'est donc pas hébergée. En plus, je ne peux pas diffuser les informations qu'elle contient. Je vais voir si on peut me dépanner en interne du coup car je ne sais pas du tout par où recommencer.

Merci d'avoir prit le temps de me répondre Smiley smile
Modifié par drake (28 Jul 2011 - 10:45)
Ton probleme viens du positionnement, certaines div sont en absolute et d'autre en relative. Commence par bien te renseigner sur les positionnement, ensuite, une fois fait, tu regarde si ta hierarchie de relative/absolute est correcte.

(d'apres ce que je vois elle ne l'est pas du tout.)
Modifié par ptitvincent (28 Jul 2011 - 11:23)
Merci pour ta réponse, j'ai lu de la doc sur les positionnements mais je vois pas mieux comment recommencer ça.
Peux-tu développer sur le fait que ma hiérarchie relative/absolue n'est pas du tout correcte ?
tu dois mettre tes "mini-div" (celle qui se chevauchent dans ton cas) dans une div en position absolute (elle meme dans une div relative) ensuite tu les met toutes en relative et tu vera qu'elles se suivront et ne se chevaucheront plus.

et retire les z-index, sinon ca ne sert à rien Smiley smile

Moi je serais toi je reprendrais tous "from scratch" et écrire ce dont j'ai besoin en matière de div, ainsi je saurais comme faire l'imbrication qui va bien.
Ok merci pour tous tes conseils, je vais essayer de mettre ça en application Smiley smile
Modifié par drake (28 Jul 2011 - 16:33)
J'ai testé ta suggestion, j'avais un rendu catastrophique (tout étaient entassé et en tout petit).
J'ai eu une idée mais je suis pas sûr que ce soit réalisable dans le cas d'un remplissage de div dynamique.
En fait, je souhaiterai mettre en place un bouton (par défaut les div se chevauchent de cette manière tout est stocké sur une seule ligne) qui lorsque l'on clique dessus duplique la div contenant les petites div sauf que celles-ci au lieu d'être en position:absolute, elles seront en position:relative.
Dans un premier temps ça résoudra le soucis même si ce sera pas optimisé au maximum.
et sans les positionner mais juste en les mettant toutes en float:left ? ca n'irait pas ?
Modifié par ptitvincent (29 Jul 2011 - 11:19)
Non j'ai testé les tailles étaient respectées mais pas le début de la div qui est calculé dans le php en fonction de l'heure de début de l'action