28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Je suis nouveau sur votre forum, meme si je viens souvent y chercher de l'aide.

A titre perso, pour éviter les post-it j'essaye de développer une espèce d'application php pour les gérer.

Un truc très simple à base de php, mysql et css.

Sur le fonctionnement, cela marche très bien, mais j'ai quelques problèmes sur le positionnement.

En effet, mes notes sont positionnées en 'inline-block', mais j'en ai toujours une décalée par rapport aux autres. Et je ne vois vraiment pas comment remédier à ce probleme. Cela fait plusieurs que je planche dessus et je ne comprends vraiment pas...

Voici un bout du code qui affiche la page :


<body>
	<center><div id="logo"><a href="../index.php"><img src="../img/blank.png" border="0" id="link"/></a></div>
        <center><h2> Notes </h2></center>
            <div id="info">
            <div id="centrage">
            <div style="font-size:0.8em;" id="liens"><a href="note.php"> Ajouter une note</a>  -  <a href="archives.php">Afficher les archives</a></div>
            <?php
				$num = mysql_num_rows($req);
				if($num == 0) {echo 'Aucune note actuellement'; }
				else {
				while($data = mysql_fetch_array($req))
				{ 
				$datesql = $data['datenote'];
				$annee = substr($datesql, 0, 4);
				$mois = substr($datesql, 5, 2);
				$jour = substr($datesql, 8, 2);
				$date = $jour.'/'.$mois.'/'.$annee;
				echo '<div id="content_notes_'.$data['numeronote'].'" style="width:291px; height:291px; display:inline-block; margin-top:10px;">
						<div class="notes">
                		<div class="content_notes">
                		<div class="vu" onclick="xajax_Masquer('.$data['numeronote'].')"> </div>
                			<span class="bold-underline"> Date :</span> '.$date.'<br/><br/>
                			<span class="contenu_note"><span class="bold-underline"> Message :</span><br/>'.$data['message'].'</span>
                		</div>
                		</div>
						</div>';
				}
				}
			?>
            <div style="clear:both;">&nbsp;</div>
            </div>
	</div> </center>
</body>


J'ai inséré du CSS dans un de mes div car il son id est affiché automatiquement et je ne peux donc pas les inclures dans mon *.css

Et concernant mon fichier css, voici le code :

@charset "utf-8";
body {
	font-family:arial;
	margin:auto;
	width:1000px;
	background:#cdeffa url(../img/bg.jpg) repeat-x;
	}

/*Aucune bordure sur les liens*/
a:focus, a:active { 
	outline: none; 
	}
	
h2 {color:#330099; margin-top:10px; margin-bottom:10px; text-decoration:underline;}

span.bold-underline {
	text-decoration:underline;
	font-weight:bold;
}

#logo {
	height:142px;
	width:100%;
	background:url(../img/logo.png) no-repeat center;
	margin-top:5px;
	}

#info {
	width:95%;
	background-color:#FFFFFF;
	margin-left:auto;
	margin-right:auto;
	margin-top:3%;
	padding-top:10px;
	-moz-border-radius:10px;
	border: 1px solid #00b5ee;
	}
	
#centrage {
	margin:auto;
	}

.notes {
	width:291px;
	height:291px;
	background:url(../img/note.png) no-repeat center;
	position:relative;
	padding-top:1px;
	}
	
.content_notes {
	margin:15px;
	text-align:justify;
	}
	
.contenu_note {
	margin:0;
	padding:0;
	display:inline;
	}

.vu { 
	position:absolute; 
	top:13px; 
	right:10px; 
	width: 25px; 
	height: 25px; 
	background-image: url(../img/vu.png); 
	background-position:center; 
	border:none; 
	}
.vu:hover {
	cursor:pointer;
	}

#message {
	border:2px solid #02b0e6; 
	margin-top:10px; 
	margin-bottom:5px;
	width:50%;
	-moz-border-radius:10px; 
	padding:5px 5px 5px 5px;
	}

#envoyer {
	margin-bottom:5px;
	}

#liens a {
	text-decoration:none;
	padding:3px;
	-moz-border-radius: 3px;
	display:inline-block;
	background-color: rgba(0,0,0,0.1);
	font-weight:bold;
	color:#039;
	}
	
#liens a:hover {
	text-decoration:none;
	padding:3px;
	-moz-border-radius: 3px;
	display:inline-block;
	background-color: rgba(0,0,0,0.5);
	font-weight:bold;
	color:#FFF;
	}


Je code vraiment en amateur, et je ne comprends pas d'où vient mon erreur, je vous joint une capture d'écran du problème pour que vous visualisiez :

[Edit Laurie-Anne : Image trop grande]
http://www.play-files.net/images/1266838419-Sans-titre.JPG

Merci d'avance de votre aide...
Modifié par Laurie-Anne (22 Feb 2010 - 12:38)
Je viens de m'appercevoir qu'un partie de mon code avait disparu, je vous mets donc ce qu'il manque :

            debut du php
				$num = mysql_num_rows($req);
				if($num == 0) {echo 'Aucune note actuellement'; }
				else {
				while($data = mysql_fetch_array($req))
				{ 
				$datesql = $data['datenote'];
				$annee = substr($datesql, 0, 4);
				$mois = substr($datesql, 5, 2);
				$jour = substr($datesql, 8, 2);
				$date = $jour.'/'.$mois.'/'.$annee;
				echo '<div id="content_notes_'.$data['numeronote'].'" style="width:291px; height:291px; display:inline-block; margin-top:10px;">
						<div class="notes">
                		<div class="content_notes">
                		<div class="vu" onclick="xajax_Masquer('.$data['numeronote'].')"> </div>
                			<span class="bold-underline"> Date :</span> '.$date.'<br/><br/>
                			<span class="contenu_note"><span class="bold-underline"> Message :</span><br/>'.$data['message'].'</span>
                		</div>
                		</div>
						</div>';
				}
				}
			fin du php


Sinon voici le code généré :

<body>
	<center><div id="logo"><a href="../index.php"><img src="../img/blank.png" border="0" id="link"/></a></div>
        <center><h2> Notes </h2></center>
            <div id="info">
            <div id="centrage">

            <div style="font-size:0.8em;" id="liens"><a href="note.php"> Ajouter une note</a>  -  <a href="archives.php">Afficher les archives</a></div>
                                <div id="content_notes_15" style="width:291px; height:291px; display:inline-block; margin-top:10px; background:url(../img/note.png) no-repeat center; position:relative; padding-top:1px;">
                		<div class="content_notes">
                		<div class="vu" onclick="xajax_Masquer(15)"> </div>
                			<span class="bold-underline"> Date :</span> 22/02/2010<br/><br/>

                			<span class="contenu_note"><span class="bold-underline"> Message :</span><br/>test</span>
                		</div>
				</div><div id="content_notes_14" style="width:291px; height:291px; display:inline-block; margin-top:10px; background:url(../img/note.png) no-repeat center; position:relative; padding-top:1px;">
                		<div class="content_notes">
                		<div class="vu" onclick="xajax_Masquer(14)"> </div>
                			<span class="bold-underline"> Date :</span> 22/02/2010<br/><br/>

                			<span class="contenu_note"><span class="bold-underline"> Message :</span><br/>X XXXXXXX :<br /><br />XXXXXX<br />XXXXXXX<br />XXXXXX<br />XXXXXX<br />GH23 x2<br />XXXXXX<br />XXXXXX</span>
                		</div>
						</div>            <div style="clear:both;"> </div>

            </div>
	</div> </center>
</body>
</html>


Je ne vois vraiment pas... Smiley decu
J'ai pas trouvé "pourquoi" mais le problème vient clairement, je crois, dans la structure que tu utilises.

Afin de cerner le problème, j'ai enlevé des trucs jusqu'à ce que ça fonctionne.


<div id="content_notes_16" style="width:291px; height:291px; display:inline-block; margin-top:10px; background:url(../img/note.png) no-repeat center; position:relative; padding-top:1px;">
            <div class="content_notes">
                b
            </div>
        </div>


Donc, essaie d'autres méthodes pour structurer le contenu mais l'important à retenir là-dedans, c'est pas le display:inline-block, ce sont tes éléments à l'intérieur.

D'ailleurs, le inline-block sur des blocs ( comme ton <div> ) ne fonctionne pas sur IE. Si c'est une application privée, c'est pas grave mais bon, je ne fais que t'avertir.

La balise <center> c'est désuet, tu devrais la retirer et trouver d'autres moyens de centrer.
Merci bien pour le temps que tu as passé.

Si je comprends bien, le bout de code que tu me donne est ce qui fonctionne ? Donc il faut que je me limite à celui-ci ?

Je vais essayer et je te tien au courant, merci encore.
Je viens d'essayer ton code et effectivement cela fonctionne...

Mais une autre chose qui est etonnante, j'ai modifié mon code php pour na pas afficher ma variable $message et mettre blabla a la place, et là par miracle tout est aligné...

Je pense donc que c'est le contenu de ma variable qui chamboule tout... J'ai un message contenant des <br/> c'est peut ça le probleme...

Est-il possible de remplacer les <br/> par autre chose ? Parce que pour l'édition d'un post-it j'ai un textarea et un bouton. Lors de l'envoi, je recupere le contenu du textarea et je remplace les \n par un <br/> peut ne faudrait-il pas...
Exposé comme ça, je crois que le problème vient du fait que ce soit du inline-block justement.

a écrit :
"An inline block is placed inline (ie. on the same line as adjacent content), but it behaves as a block."


Pour régler simplement ton problème, voici ce que je ferais.

<div id="content_notes_15" style="width:291px; height:291px;float:left; margin-top:10px; background:url(../img/note.png) no-repeat center; position:relative; padding-top:1px;"> 


On enlève le display:inline-block ( donc il revient à block par défaut ) et on ajoute un float left.
Modifié par Sorano (22 Feb 2010 - 16:19)
Merci Sorano, en fait le probleme ne vient pas du display inline, il vient du <span class="contenu-note"> c'etait à cause de lui que tout s'alignait vers le bas.

En definitive j'ai enlevé ce span et tout est rentré à la normale.

Si j'utilise le display-inline, c'est que j'ai besoin que mes notes soient aligné au centre (horizontalement) et avec un float:left je me retrouvais avec une ecart important sur la droite en fonction de la résolution. Vu que je ne voulais une largeur fixe, j'étais bloqué, alors j'ai utilisé display inline-block. Ce n'est pas vraiment un probleme pour IE, car cette application est privée et chez moi je n'utilise pas IE, tout sauf lui... (principalement Firefox...)

Merci de ton aide en tout cas.

JP
Administrateur
Bonjour,

voir dans le même sujet l'élément déprécié <center> et la trop peu utilisée instruction display: inline-block; ça fait bizarre ...

Jipi's a écrit :
Je suis désolé pour les multiples posts, mais en fait le probleme vient de la longueur du message... apparament mes bloc s'aligne sur la dernier ligne du "message", je vous poste une autre capture...

http://www.play-files.net/images/1266850219-Sans-titre-1.jpg

Je ne comprends pas pourquoi ça se passe comme ça...

Ils se comportent comme des blocs et sont soumis à la valeur par défaut de vertical-align nan ? Essaie
vertical-align: top;
en plus de
display: inline-block;


EDIT: mais pourquoi ça s'aligne verticalement sur ces textes ? Ce sont les post-it qui devraient être en inline-block non, pas leur contenu ?
Modifié par Felipe (22 Feb 2010 - 20:32)