28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Familière de la position FLOAT en Xhtml/Css, j'ai voulu me lancer dans dans la refonte d'un site version Html5/Css. Suite à la lecture du dernier opus de Raphael Goetter j'ai voulu tenter la mise en page en tableau CSS. Ne parvenant pas à mes fins, je me suis tournée vers le position via display: inline-block... mais là je m'arrache les cheveux :

Dans mes blocs <div> mes paragraphes <p> ne se positionnent pas en haut du <div> et je ne comprends pas pourquoi. J'ai tout tenté pour résoudre le problème mais sans succès. Voici ce que j'obtiens :
upload/45070-test.png

et voici mon code html5 :

<?php include("haut.php"); ?><a id="haut"></a>

<header>
	<div id="entete"><?php include("entete.php"); ?></div>

	<ul id="lienevitement"><?php include("lienevitement.php"); ?></ul>
	
	<ul id="menuhaut"><?php include("menu-haut.php"); ?></ul>

	<div id="moteurderecherche"><?php include("moteurderecherche.php"); ?></div>
</header>

	<div id="bandeau"><?php include("bandeau.php"); ?></div>




<section id="adherent">
	<div id="bloc1"><?php include("bloc1.php");?></div>

	<div id="bloc2"><?php include("bloc2.php"); ?></div>

	<div id="bloc3"><?php include("bloc3.php"); ?></div>
</section>


<!--
<nav id="menudroit">
	<dl><?php include("menu-droit.php"); ?></dl><a id="ancremenudroit"></a>
</nav>



<section id="fil">
	<ul>
		<li><a href="index.php" accesskey="1" title="Accueil">Accueil</a></li>
		<li class="findufil">&#187; Bienvenue</li>
	</ul>
</section>




<section id="centre"><a id="ancrecontenu"></a><h1></h1>
	<h2>sous-titre 1</h2>
		<p>Xxxxxxxxxxxxx</p>

	
	<h2>sous-titre 2</h2>
		<p>Xxxxxxxxxxxxx</p>
		
	
	<h2>sous-titre3</h2>
		<p>Xxxxxxxxxxxxx</p>
</section>



-->
<footer>
	<?php include("copyright.php"); ?>
</footer>



<?php include("bas.php"); ?>



et voici la partie Css :

/* =BODY */
	body {
		width: auto;
		margin: 0;
		padding: 0;
		text-align: justify;
		font: 90% "Lucida Sans Unicode","Lucida Grande","Trebuchet MS",Verdana,"Lucida Grande",Tahoma,Helvetica,Sans-Serif;
		line-height: 1.5em;
		color: #333;
		background-color: #fff;
		border: none;
	}






/* =CONTENEUR */
	#conteneur {
		width: 90%;
		max-width: 980px;
		height: auto;
		margin: 0 auto;
		padding: 0;
		background-color: #fff;
		border: 1px solid green;
	}


	
	
/* =TRAITEMENT DES HYPERLIENS EN GENERAL */
	a {
		font-weight: 500;
		font-size: 95%;
		color: #000;
		text-decoration: none;
	}
	a:link {
		text-decoration: none;
	}
	a:hover, a:focus, a:active {
		border-bottom: 1px dotted #333;
	}	
	
	
	
	
/* =TRAITEMENT DES IMAGES EN GENERAL */
	img {
		border: none;
	}
	
	.image1 {
		
	}
	
	.image2{
		
	}
	
	

/* =TRAITEMENT DU TEXTE EN GENERAL */
	hr {
		width: 80%;
		margin: auto;
		color: #efefef;
	}
	h1 {
		margin: 10px 0 0 0;
		font: bold 130% Georgia, "Lucida Sans Unicode","Lucida Grande","Trebuchet MS",Verdana,Tahoma,Helvetica,Sans-Serif;
		color: #333;
	}

	h2 {
		margin: 25px 0 -10px 0;
		font: bold 130% Georgia, "Lucida Sans Unicode","Lucida Grande","Trebuchet MS",Verdana,Tahoma,Helvetica,Sans-Serif;
		color: #cc3266;
	}
	
	h3 {
		color: #000;
	}
	
	h4 {
		color: #000;
	}
	
	h5 {
		color: #000;
	}

	h6 {
		color: #000;
	}
	
	em, strong {
		font-size: 100%;
		font-style: normal;
		font-weight: bold;
		color: #333;
	}

	abbr {
		border-bottom: 1px dotted #333;
	}

	kbd {
		margin: 0;
		padding: 0 3px;
		color: #000;
		background: #f1f1f1;
		border: 1px solid #888;
		box-shadow: 1px 1px 0px #888;
	}

	blockquote {
		width: 60%;
		margin: 0 0 0 20px;
		padding: 0 10px;
		border-radius: 5px;
		border: 1px solid #efefef;
	}
	
	.aligndroite { 
		text-align: right;
	}
	
	.asteris {
		font-style: italic;
		font-size: 80%;
		color: #333;
	}
	
	.attention {
		color: #cc3266;
	}
	
	.capitale {
		font-variant: small-caps;
		letter-spacing: -0.05em
	}
	
	.centrer {
		text-align: center;
	}
	
	.ensavoirplus a {
		color: #bf152b;
		text-decoration: none;
	}


	
	
/* =TRAITEMENT DIVERS */
	.aide {
	cursor: help;
	}
	
	.print {
	display: none;
	}

	
/* ===HEADER=== */
	header {
		width: 100%;
		text-align: right;
		vertical-align: middle;
	}
	
	/* =EN-TETE */
		#entete {
			display: inline-block;
			width: auto;
			margin: 0;
			padding: 0;
			border: none;
		}
		#entete > a {
			text-decoration: none;
			border: none;
		}
		

		
	/* =LIENS EVITEMENT */
		#lienevitement {
			display: inline-block;
			width: auto;
			margin: 0;
			padding: 0;
			list-style: none;
			font-size: 20%;
			color: #fff;
			background-color: #fff;
			border: none;
		}
		#lienevitement > li {
			display: inline;
		}
		#lienevitement a {
			color: #fff;
			text-decoration: none;
			border: none;
		}
		
		

	/* =MENU HAUT */
		#menuhaut {
			display: inline-block;
			width: auto;
			height: auto;
			list-style: none;
			margin: 0;
			padding: 0 10px;
			font-size: 90%;
			border: 1px solid green;
		}
		
		#menuhaut > li {
			display: inline;
			border: none;
		}
		#menuhaut > li + li { /* mettre une bordure sauf pour le premier <li> */
			padding-left: 5px;
			border-left: 1px solid #efefef;
		}
		#menuhaut a:link, #menuhaut a:visited {
			color: #333;
			text-decoration: none;
		}
		#menuhaut a:hover, #menuhaut a:focus, #menuhaut a:active {
			color: #333;
			text-decoration: none;
			border-bottom: 1px dotted #333;
		}
		


	/* =MOTEUR DE RECHERCHE */
		#moteurderecherche {
			display: inline-block;
			width: auto;
			height: auto;
			margin: 0 5px 0 0;
			padding: 0;
			border: 1px solid red;
		}
		#moteurderecherche > form {
			margin: 0;
			padding: 0;
			border: none;
		}
		#moteurderecherche p {
			margin: 0;
			padding: 0;
		}
		#requete {
			text-align: left;
			color: #333;
			background-color: #fff;
			border: 1px solid #efefef;
		}
		.bouton {
			margin: 0;
			padding: 2px 1px;
			font-weight: normal;
			color: #333;
			border: none;
		}	
/* ===FIN HEADER=== */



	
	
/* BANDEAU */
	#bandeau {
		width: auto;
		height: 150px;
		margin: 0 5px;
		padding: 0;
		border: 1px solid black;
	}
	#bandeau > a {
		border: none;
	}


/* ==SECTION ADHERENT== */
	#adherent {
		width: 100%;
		margin: 0 5px;
		padding: 0;
	}
	#adherent > div {
		display: inline-block;
		width: 32.5%;
		height: 95px;
		margin: 0;
		padding: 0;
		border-spacing: 3px;
		vertical-align: top;
		background-color: #fff;
		font-weight: normal;
		color: #333;
		border-radius: 5px;
		/*border: 1px solid #efefef;*/
		border: 1px solid #000;
	}
	
	
	/* BLOC1 */
		#bloc1 > p {
			margin: 0;
			padding: 0;
			text-align: center;
			border: 1px solid red;
		}
		
	/* BLOC2 */
		#bloc2 > p {
			margin: 0;
			padding: 0;
			text-align: center;
			border: 1px solid red;
		}
		#bloc2  a {
			font-weight: normal;
			color: #cc3266;
			text-decoration: none;
		}
		#bloc2 img {
			margin: 0;
			padding: 0 0 0 1px;
			border: none;
		}





	/* BLOC3 */

		#bloc3 > p {
			margin: 0;
			padding: 0;
			text-align: center;
			border: 1px solid red;
		}
		#bloc3 > form {
			width: 100%;
			margin: 0;
			padding: 0;
			border: none;
		}
		#bloc3 label {
			float: left;
			display: block;
			width: 95px;
			margin: 0 0 0 5px; 
			padding: 0;
			color: #333;
			border: none;
		}
		#bloc3 input {
			width: auto;
			margin: 0 auto 2px auto;
			padding: 2px;
		}
		#bloc3 .bouton {
			width: auto;
			margin: 0;
			padding: 3px 0;
			font-weight: normal;
			color: #333;
			background-color: #fff;
			border: none;
		}
/* ===FIN SECTION ADHERENT=== */


Je pense que c'est une étourderie de ma part mais à force de modifier le code pour tenter de résoudre mon problème je ne "vois" plus rien !
ahhh le positionnement en float c'est de la rigolade à côté !

Ah votre bon coeur ! Smiley biggrin

Marie
Modifié par Marie08 (13 Jun 2012 - 08:57)
Salut, et si tu essaye de positionné avec des margin-bot, ou autres, ça marche pas ?

(je ne vois pas de <p> dans tes <div> bloc 1 2 3 peut être le génère tu avec ton PHP)
Bonjour JuseN

Avec des margin-bot ? Késako ? Pour les marges en général, je les ai toutes mises à zéro dans les <div> mais rien n'y fait.

les <p> sont bien dans les <div> via les includes, par exemple :

<p>
	<em>BLOC 1</em><br />
	première ligne<br />
	seconde ligne<br />
	troisième ligne
</p>


ou pour le bloc 3 :

<p>
	<em>BLOC 3</em>
</p>

<form action="xxxx.php" method="post">
	<p>
		<label class="Champ1" for="Champ1">Champ1</label>
			<input type="text" name="Champ1" id="Champ1" maxlength="10" tabindex="1" /><br />

		<label class="Champ2" for="Champ2">Champ2</label>
			<input type="password" name="Champ2" id="Champ2" maxlength="10" tabindex="2" />
		
			<input class="bouton" type="submit" name="connexion" id="connexion" value="Ok" /> 
	</p>
</form>


Je pense qu'à force j'ai du faire un truc totalement absurde...

Merci
Marie08 a écrit :
Bonjour JuseN

Avec des margin-bot ? Késako ? Pour les marges en général, je les ai toutes mises à zéro dans les &lt;div&gt; mais rien n'y fait.



Parce que pour moi c'est pas les <div> où il faut mettre les margin, mais dans les <p>.
Du genre une classe pour tes <p> ( Smiley eek ) et les margins à l’intérieure.
Modifié par JuseN (11 Jun 2012 - 16:06)
a écrit :
Parce que pour moi c'est pas les <div> où il faut mettre les margin, mais dans les <p>.


Et bien mes <p> ont également des marges à zéro, tu peux le voir dans mon code Css au niveau de chaque bloc.

Merci
Aurais tu une version en ligne ?
ce serai plus facile parce qu'avec php tester en local c'est la mort...


EDIT : j'ai viré toutes tes balises php et testé en local :
upload/39936-FireShotSc.jpg

Je ne vois pas de problème de marge.
Alors soit c'est un problème de compatibilité, soit c'est en php.
Modifié par saajuck (11 Jun 2012 - 16:48)
Bonjour saajuck,

Non je n'ai pas de version à ligne à te proposer. En revanche, j'ai repris ton idée et j'ai viré mes includes et empli mes <div> de paragraphes plein et effectivement je n'ai plus de problème...

Mais je ne comprends pas que mon php me pose problème maintenant, alors que la version précédente xhtml/css + Php + positionnement FLOAT fonctionne à merveille.

Je vais continuer de chercher mais reste en demande d'aide Smiley smile

Merci !
Marie08 a écrit :
Et bien mes <p> ont également des marges à zéro, tu peux le voir dans mon code Css au niveau de chaque bloc.

Merci


Autant pour moi, j'ai mal lu Smiley confused

J'ai tester également ton code chez moi sans le PHP sa marche niquel, mais avec le PHP c'est vrai qu'il rajoute une marge, je l'ai contré en faisant un pti margin: - 23px sur #bloc1 > p { (et oui margin négative, un truc moche que je déconseille, mais le résultat est ce que tu cherche.)

Après j'ai pas d'autre solutions. désolé
Cordialement,
Marie08 a écrit :
Non je n'ai pas de version à ligne à te proposer.
(...)
Je vais continuer de chercher mais reste en demande d'aide Smiley smile

Si tu veux de l'aide sur pourquoi est-ce qu'un code HTML précis généré par ton script PHP et auquel tu associes un ensemble de styles CSS (que tu n'as pas forcément tous recopiés ici...) pose problème, la solution consiste à fournir une page en ligne reproduisant le problème. Sinon c'est comme consulter un médecin sans amener le patient. Smiley cligne

Tu peux aussi débuguer ton code HTML et CSS en utilisant des outils tels que Firebug ou Web Inspector. En mode inspection, tu peux voir pour un élément donné quels sont les styles qui s'y appliquent et leur origine (quand il y a plusieurs feuilles de styles).
Bonjour JuseN et fvsch,

a écrit :
J'ai tester également ton code chez moi sans le PHP sa marche niquel, mais avec le PHP c'est vrai qu'il rajoute une marge, je l'ai contré en faisant un pti margin: - 23px sur #bloc1 > p { (et oui margin négative, un truc moche que je déconseille, mais le résultat est ce que tu cherche.)

Après j'ai pas d'autre solutions. désolé


Tout comme toi, je n'aime pas le bidouillage et tout devrait fonctionner sans Smiley smile et je viens de trouver (semble t-il) la cause de mon tourment et j'en reste sur les fesses... : pour ce nouveau chantier, je suis partie de pages blanches sur notepad++, directement enregistrées en .php et encodées en... UTF-8.

En voulant tester la validité de mon en-tête de page <!DOCTYPE html> je suis passée par la moulinette du W3C et il me relevait tout le temps une erreur dessus en pointant une espace avant le doctype alors qu'il n'y avait rien... en cherchant sur le Site du Zero, un forumien proposait d'encoder la page non pas en UTF-8 mais en UTF-8 sans BOM. J'ai tenté la manip' et l'erreur a disparue. Du coup, j'ai voulu tester sur mon cas de <p>... et le problème est résolu...

Je ne comprends pas ; si quelqu'un a une explication (?) histoire que je me couche moins bête ce soir Smiley lol

En tous les cas, merci JuseN d'avoir chercher pour moi Smiley ravi


a écrit :
Si tu veux de l'aide (...) la solution consiste à fournir une page en ligne reproduisant le problème. Sinon c'est comme consulter un médecin sans amener le patient. cligne


C'est très juste comme remarque Fvsch et la prochaine fois je téléverserai mes documents sur un espace web, ce sera effectivement bien plus simple ! Smiley cligne

Merci à tout le monde Smiley biggrin

Marie
De rien Smiley smile

mais oué, bizarre le coup du UTF8 sans BOM ... je connaissais pas.. bref tant que c'est regler Smiley langue

A la prochaine et bonne continuation.
Cordialement,
Marie08 a écrit :
Je ne comprends pas ; si quelqu'un a une explication (?) histoire que je me couche moins bête ce soir Smiley lol

Le byte-order mark (BOM) est une série de trois octets placés en début de fichier et qui permet notamment de reconnaitre le codage utilisé et, le cas échéant, l'ordre des octets (utile pour certains codages précis autres que UTF-8). Si le logiciel client (éditeur de code, navigateur, etc.) reconnait un fichier comme étant en UTF-8 et que ce fichier contient un BOM, le logiciel client ne va pas l'afficher. S'il ne le reconnait pas comme étant en UTF-8, il va donc se retrouver avec trois octets interprétés comme des caractères et tenter de les afficher.

Quand tu inclus un fichier dans un autre, le BOM est inclus aussi. Comme il se retrouve au milieu du code généré par le serveur et envoyé au navigateur, ces trois octets ne peuvent pas être considérés comme un BOM et seront donc interprétés comme des caractères. Donc tu te retrouves avec des lignes de texte affichant deux-trois caractères bizarres un peu partout dans ton design.

Solution: toujours utiliser UTF-8 sans BOM. De préférence, utiliser un éditeur de code qui enregistre par défaut en UTF-8 sans BOM.
Ceci explique cela !! Et bien, moi qui pensais faire bien en encodant directement un UTF-8 ! A présent j'encode en UTF-8 sans BOM et grâce à toi : je sais pourquoi ! Smiley ravi Smiley ravi

Un grand merci !

Marie