Pb de CSS avec float

Résolu
isold Messages postés 58 Statut Membre -  
isold Messages postés 58 Statut Membre -
Bonsoir

je galère un peu avec les "float" des css :-(

J'ai une page dans laquelle il y a plusieurs balises H2 et dans chacun de ces paragraphes, je souhaiterais, mettre une photo et à gauche un texte de quelques lignes
...
.imgdist { float:left; margin-right:8px }
</style>
</head>

<body>
...
<h2>Paragraphe 1</h2>
<div>
  <div class="imgdist"><img src="img/image1.jpg"></div>
  <p>Bla bla bla...</p>
</div>

<h2>Paragraphe 2</h2>
<div>
  <div class="imgdist"><img src="img/image2.jpg"></div>
  <p>Bli bli bli...</p>
</div>

etc...


Il n'y a pas de retour à la ligne pour chaque nouveau paragraphe H2 et toutes les images se suivent en décalé comme ça :

Paragraphe 1
+----+
| | bla bla bla
| | Paragraphe 2
+----+ +----+
| | Bli bli bli
| | Paragraphe 3
+----+ +----+
| | ... etc...


j'ai essayé de mettre une balise div puis une balise p ayant un style contenant clear:both à la fin de chaque paragraphe H2 mais ça me fait un grand blanc comme un saut de page

Quelqu'un a une idée ?

Merci pour votre aide.

3 réponses

  1. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Une solution possible :
    // CSS
    .clearfix:after { 
       content: " ";
       display: block; 
       height: 0; 
       clear: both;
    }
    


    // HTML
    <h2>Paragraphe 1</h2>
    <div class="clearfix">
      <div class="imgdist"><img src="img/image1.jpg"></div>
      <p>Bla bla bla...</p>
    </div>
    
    <h2>Paragraphe 2</h2>
    <div class="clearfix">
      <div class="imgdist"><img src="img/image2.jpg"></div>
      <p>Bli bli bli...</p>
    </div>
    


    D'autres solutions : https://stackoverflow.com/questions/218760/how-do-you-keep-parents-of-floated-elements-from-collapsing

    Bonne journée
    0
    1. isold Messages postés 58 Statut Membre 5
       
      Merci beaucoup pour ta réponse. Il y a déjà un gros progrès : il y a retour au bord gauche de la page à chaque balise H2 et les paragraphes ne sont pas écrits en décalé. Mais après chaque paragraphe H2 il y a un grand espace blanc comme si on sautait d'une page.

      Je continue à chercher et si je trouve, je viendrai mettre la solution ici. Cela dit, ça n'empêche que s'il y a des solutions, je suis preneuse... ;-)
      0
  2. isold Messages postés 58 Statut Membre 5
     
    En fait, c'est beaucoup plus compliqué que je ne le pensais car mon contenu était déjà dans une div.

    J'ai un menu dans une div 'float:left' à droite de laquelle il y a une autre div représentant le contenu de la page et dans ce contenu, je mettais les images dans une div 'float:left' (pour pouvoir mettre mon bla bla bla à côté mais les deux 'float:left' cohabitaient mal ensemble et tout était décalé.

    Je résous mon problème par un tableau : td1 = image et td2 = bla bla bla mais je voulais absolument éviter un tableau, j'espérais faire ça en CSS. Ce que je voulais est comme ci-dessous.

    +------++-----------------------------------------------+
    | menu ||<H2>...</H2> contenu page |
    | ds ||+----+ dans une div |
    | une |||img |Bla bla bla |
    | div ||| |la la la... |
    | float||+----+ |
    | left || |
    | ||<H2>...</H2> |
    | ||+----+ |
    | |||img |Bla bla bla |
    | ||| |la la la... |
    | ||+----+ |
    | || |
    | ||<H2>...</H2> |
    | ||+----+ |
    | |||img |Bla bla bla |
    | ||| |la la la... |
    | ||+----+ |
    | || |
    | || |
    +------++-----------------------------------------------+

    Si quelqu'un a une idée : tant mieux, je la prendrai volontiers pour apprendre, dans le cas contraire, je me contenterai des tableaux. En tout cas, merci @Pitet ;-)
    0
  3. animostab Messages postés 3003 Date d'inscription   Statut Membre Dernière intervention   738
     
    Salut
    voici comment utiliser ce que tu veux

    <h2>ton titre</h2>
    <div class="bloc">
    <div class="leftimg"><img src="tonimage.jpg"></div>
    <p>ton paragraphe</p>
    </div>


    css

    .bloc {
    width:100%;
    min-width: hauteur de image en px; /*évite le chevauchement si le texte occupe moins de place que la hauteur d'image*/
    }
    .leftimg {
    float:left;
    width:200px;
    margin:0 10px 10px 0;
    }
    .leftimg img {
    width:100%;
    }
    0
    1. isold Messages postés 58 Statut Membre 5
       
      Je te remercie vraiment beaucoup @animostab. Mon problème est résolu. je marque donc ce fil de discussion comme tel. :-) Bonne fêtes de fin d'année...
      0