Bonjour,
Sur mon wiki, dans un div, je l'ai encadré, et mis un fond vert.

Maintenant, quand j'écris dedans, il n'y aucun problème, sauf que j'aimerais arrêter le div là ou s'arrête le texte, et non le laisser continuer sur toute la ligne.

Y'a t-il une propriété css pour faire cela ?

Le problème en images:

* Voila ce qui ce passe:

[EDIT Laurie-Anne : image trop grande] http://img266.imageshack.us/img266/5775/error1e.png

* Voila ce que je veux:

http://img62.imageshack.us/img62/8653/error2i.png

Merci de vos futures réponses, Jeff
Modifié par Laurie-Anne (10 Nov 2009 - 14:28)
merci, cela a marché, mais maintenant, ca me donne ceci, ce qui n'est pas du tout l'effet que j'espérai ...

upload/24884-error3.png

Comment mettre le div "note" en haut et le div "contenu" en bas, tout en collant les bordures ?

Comme ceci:

upload/24884-error4.png

P.S. j'ai mis sous forme de tableaux mais c'est presque cela mais ca pose encore quelques problèmes...


<table>
<tr>
<td>
<div class="content-box" style="border: 1px solid #4F8A10; background-color: #DFF2BF;">'''Note:'''</div>
<td>
</tr>
<tr>
<td>
<div class="content-box" style="border: 1px solid #4F8A10; background-color: #DFF2BF;">{{{Contenu}}}</div>
</td>
</tr>
</table>


ce qui donne:

upload/24884-error5.png
Modifié par KompoZer (04 Nov 2009 - 11:36)
Bonjour,
je me disais, pourquoi tu mets pas tes deux éléments en tant que float left
après tu dis que le première élément (en l'occurence "Note") n'admet pas de copain à sa droite
peut être que ça marcherai.
Wamdeus a écrit :
Bonjour,
je me disais, pourquoi tu mets pas tes deux éléments en tant que float left
après tu dis que le première élément (en l'occurence "Note") n'admet pas de copain à sa droite
peut être que ça marcherai.

Parce que ça aurait des effets de bord sur le contenu suivant, par exemple. Smiley langue

Pour obtenir ce résultat, il suffit de suivre le conseil de Mikachu : ne passer que le div de contenu en display: inline;
Le div précédant dont le rendu est de type block fera automatiquement passer la suite à la ligne.
bonjour,

La proposition du float me semble adapter .

un clear , des marges interieur et exterieur et un contexte de formatage maitrisé sur le conteneur de ces textes devrait le faire :

exemple pour exprimer l'idée :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><title>HTML 4.01 </title>
<style type='text/css'>
div {
overflow:hidden;
zoom:1;/* pour IE < 7 */
padding-bottom:1px;/* compense marge negative */
}
h1 , p {
font-size:1em;
float:left;
clear:left;
border:1px solid #4F8A10;
margin:0 0 -1px;
padding:1px 0.5em ;
background:#DFF2BF;
}
</style>
</head>
<body>
<div>
    <h1>Notes : </h1>
    <p>Les < div> sont des éléments de type blocks qui ont comme comportement par défaut d'occuper toute la largeur qui leur est disponible, sur la hauteur qui leur est nécessaire.</p>
    <p> Pour faire ce que tu recherche il faut que tu utilise un élément de type en ligne ou que tu passe tes div en ligne.</p>
   <p>Le flottement de ces element dans une zone ou tu maitrise le contexte de formatage , peut aussi faire l'affaire</p>
</div>
</body>
</html>


GC
Ma réponse est d'utiliser span ou div suivant que l'on veuille encadrer
juste le contenu ou toute la ligne.
Exemple:

<span class="content-box" style="border: 1px solid #4F8A10; background-color: #DFF2BF;">'''Note:'''</span>
<div class="content-box" style="border: 1px solid #4F8A10; background-color: #DFF2BF;">{{{Contenu}}}</div>

Si 2 spans successifs faire un retour ligne <br /> entre.
akiki a écrit :
Ma réponse est d'utiliser span ou div suivant que l'on veuille encadrer
juste le contenu ou toute la ligne.

Cela posera des problèmes de chauvauchement des fonds et bordures des éléments à cause du padding.

Sinon, la solution de gc-nomade est bonne. Elle n'est pas optimale car il faut penser à gérer le dépassement des flottants pour ne pas avoir d'effet de bord sur les autres éléments de la page, mais elle est compatible avec IE 6 et 7.

La solution optimale, à priori, consiste à utiliser display:inline-block (et un BR pour le retour à la ligne). Mais ça ne marche pas des masses (ou alors difficilement) dans IE 6 et 7 (pas de problème pour IE8).
Bonsoir ,

je ne suis pas tout a fait persuader que inline-block corresponde au cahier des charges , vu le retour a ligne , que l'on peut obtenir sans toucher au html .

Il me semble qu'un balisage : titre + texte (en paragraphe ou au kilometre ) est pertinent et utile .(un hn + un p au minimum)

Un conteneur div (ou section) pour contenir ça ensemble et on a une base stylable .

Le flottement est aisé , les effets de bords contenu par le contexte de formatage ne semble pas une contre-indication (cependant , les bugs historique de IE perdurent : 3pixels jug & double-margin) .

Avec inline-block ou float , le resultat visuel sera trés similaire , induit une surcharge html (<br>) et oblige a un css specifique pour certaines version de IE , voir firefox.

Si l'on repart avec un simple display:inline; (et un display:table; accessoire) on peut repartir sur un truc degradé pour IE 7 et moins .
On ne surligne alors que le texte , mais on perd sur les bordures verticales .

Un nouvelle exemple pour exprimée l'idée (plus on en met , plus il faut compenser ou restyler les valeurs par defaut de styles) :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>HTML 4.01 </title>
<style type='text/css'>

body , html  {width:100%;margin:0;padding:0;}
 div { 
overflow:hidden; 
zoom:1;/* pour IE < 7 */ 
padding-bottom:1px;/* compense marge negative */ 
width:47%;
padding:10px 0;
margin:10px;
background:#eee;
} 
.float {
float:left;
display:inline;
margin:auto 10px  10px ;
 }

h1 , p { 
font-size:1em; 
float:left; 
clear:left; 
border:1px solid #4F8A10; 
margin:0 10px  -1px; 
padding:1px 0.5em ; 
background:#DFF2BF; 
}


.inline {
display:block;
width:auto;
clear:both;
}
.inline h1 {
float:none;
display:table;}

.inline p {
float:none;
display:inline;

margin:auto;
line-height:1.25em;
padding:0;
}</style>
</head>
<body>
<div>
	<p>plop</p>
</div>
<div class="float"> 
    <h1>Notes : </h1> 
    <p>Les < div> sont des éléments de type blocks qui ont comme comportement par défaut d'occuper toute la largeur qui leur est disponible, sur la hauteur qui leur est nécessaire.</p> 
    <p> Pour faire ce que tu recherche il faut que tu utilise un élément de type en ligne ou que tu passe tes div en ligne.</p> 
   <p>Le flottement de ces element dans une zone ou tu maitrise le contexte de formatage , peut aussi faire l'affaire</p> 
</div>
<div> 
    <h1>Notes : </h1> 
   <p>Le flottement de ces element dans une zone ou tu maitrise le contexte de formatage , peut aussi faire l'affaire</p> 
</div>   
<p>Le flottement de ces element dans une zone ou tu maitrise le contexte de formatage , peut aussi faire l'affaire</p>

<div class="inline"> 
    <h1>Notes : texte au kilometre </h1>
    <p>Les < div> sont des éléments de type blocks qui ont comme comportement par défaut d'occuper toute la largeur qui leur est disponible, sur la hauteur qui leur est nécessaire.
	Pour faire ce que tu recherche il faut que tu utilise un élément de type en ligne ou que tu passe tes div en ligne.
	Le flottement de ces element dans une zone ou tu maitrise le contexte de formatage , peut aussi faire l'affaire</p> 
</div>
</body>
</html>


cette exemple met 3 div en cause .
un premier en float ,
un second dans le flux (qui contient les style clear sur ses enfants)
un paragraphe
un troisieme div avec le display:inline; pour le texte.

GC
Merci pour toutes vos réponses, j'ai enfin opté pour la solution de gc-nomade, que j'ai dû adapter pour un formatage du wiki (h1 étant des titre cela aurait posé des problèmes sur toutes les pages...)

Donc voila:

upload/24884-perfect.png


<div class="float"> 

    <div class="note">'''Note:'''</div> 

    <div class="contenu">{{{Contenu}}}</div> 

</div>


qui donne un résultat parfait! Smiley ravi

Voici ma dernière question: SI j'augmente les marge intérieures, cela aura-t-il un impact sur le rendu du résultat voulu ?
Modifié par KompoZer (14 Nov 2009 - 11:49)