Forcer float:left sur les divs sans "white-space:nowrap"
P粉293550575
P粉293550575 2024-04-01 19:52:39
0
2
382

Il y a quelque chose comme ça :

<div class="container">

    <div class="floating">
      
      <img src="image" alt="">
      
      <p>
          text...
      </p>
      
    </div>
    
    <div class="floating">
      
      <img src="image" alt="">
      
      <p>
          text...
      </p>

    </div>
    
</div>

Je veux que les divs "flottants" flottent à gauche les uns des autres, même s'ils débordent du conteneur.

J'ai essayé d'utiliser "float:left" sur le div flottant mais cela ne fonctionne pas. Ils s'empilent les uns sur les autres.

J'ai donc trouvé une solution de contournement en utilisant "display:inline-block" sur l'élément flottant et "white-space:nowrap" sur le conteneur, cela a fonctionné mais cela n'a pas aidé mon cas.

.container{
    width:600px; 
    border:2px solid black;
    overflow:hidden;
    display:block;
    white-space:nowrap; /* delete this and see the actual floating divs layout*/
}

.floating{
    width:66%;
    display: inline-block;
}

img{
  width:120px; 
  height:120px;
  float:left;
}

En fait, "white-space:nowrap" empêche mon texte d'envelopper les images dans le div flottant, ce qui était l'intention initiale. "white-space:nowrap" fait ce qu'il est censé faire, donc cette astuce ne semble fonctionner que si les gens ne se soucient pas d'encapsuler le contenu dans un div. Mais dans ce cas, je l'ai fait.

Donc, en résumé, si je laisse l'attribut vide, mes 2 divs flottent comme ils le devraient, mais le contenu qu'ils contiennent est gâché. Si je n'utilise pas cet attribut, le contenu du div sera conservé, mais le div ne flottera pas.

https://jsfiddle.net/8n0um9kz/

Y a-t-il une solution pour obtenir ce que je veux ?

Merci.

PS : j'ai utilisé une largeur de 66 % pour les deux divs flottants dans l'exemple afin que vous puissiez voir les deux à titre d'illustration. En ce qui me concerne, bien sûr, ils sont tous à 100 %.

P粉293550575
P粉293550575

répondre à tous(2)
P粉004287665

Oui. Vous avez une solution.

Au lieu d'utiliser 'display : flex' et 'flex-wrap :wrap' sur le conteneur, vous pouvez utiliser 'white-space : no-wrap' sur le conteneur pour permettre aux éléments de passer ensuite lorsqu'ils atteignent le fin du conteneur Une ligne. Utilisez davantage 'justify-content : flex -start'

P粉054616867

C’est comme ça que je le comprends.

.container{
    width:600px; 
    display:flex;  //required
    align-items: flex-start; //optional
    overflow:hidden;
}

.floating{
    min-width: 66%; //required
}

img{
  width:120px; 
  height:120px;
  float:left;
}

La clé est d'utiliser "min-width" au lieu de "width" et "display:flex" sur le conteneur.

Pas besoin d'utiliser des blocs pour afficher, supprimer des flotteurs, redimensionner le contenu ou envelopper/développer quoi que ce soit.

"align-items: flex-start" n'est nécessaire que si les divs flottants doivent maintenir leurs hauteurs respectives, sinon ils prendront la hauteur du div le plus haut. Ce n'est pas un problème, sauf si vous utilisez une couleur d'arrière-plan différente pour le div flottant que pour le conteneur.

https://jsfiddle.net/b83rzL07/1/

Merci.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!