Float:left auf Divs ohne „white-space:nowrap' erzwingen
P粉293550575
P粉293550575 2024-04-01 19:52:39
0
2
378

Da gibt es so etwas:

<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>

Ich möchte, dass die „schwebenden“ Divs links voneinander schweben, auch wenn sie den Container überlaufen.

Ich habe versucht, „float:left“ für das schwebende Div zu verwenden, aber es funktioniert nicht. Sie stapeln sich übereinander.

Also habe ich eine Problemumgehung gefunden, indem ich „display:inline-block“ für das schwebende Element und „white-space:nowrap“ für den Container verwendet habe. Es hat funktioniert, aber es hat mir in meinem Fall nicht geholfen.

.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;
}

Tatsächlich verhindert „white-space:nowrap“, dass mein Text die Bilder in das schwebende Div einschließt, was die ursprüngliche Absicht war. „white-space:nowrap“ tut, was es tun soll, daher scheint dieser Trick nur zu funktionieren, wenn es den Leuten egal ist, Inhalte in ein Div einzuschließen. Aber in diesem Fall habe ich es getan.

Also, zusammenfassend: Wenn ich das Attribut leer lasse, schweben meine beiden Divs wie sie sollten, aber der Inhalt darin wird durcheinander gebracht. Wenn ich dieses Attribut nicht verwende, bleibt der Inhalt im Div erhalten, aber das Div wird nicht schweben.

https://jsfiddle.net/8n0um9kz/

Gibt es eine Lösung, um mir zu bekommen, was ich will?

Vielen Dank.

PS: Ich habe im Beispiel für beide Floating-Divs eine Breite von 66 % verwendet, damit Sie beide zur Veranschaulichung sehen können. Für mich sind natürlich alle 100%ig.

P粉293550575
P粉293550575

Antworte allen(2)
P粉004287665

是的。你有一个解决方案。

您可以在容器上使用'display : flex'和'flex-wrap :wrap',而不是在容器上使用'white-space : no-wrap'容器允许项目在到达容器末尾时进入下一行。进一步使用 'justify-content : flex -start'

P粉054616867

我是这样理解的。

.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;
}

关键是在容器上使用“min-width”而不是“width”和“display:flex”。

无需使用块显示、删除浮动、调整内容或包装/展开任何内容。

仅当浮动 div 应保持各自的高度时才需要“align-items: flex-start”,否则它们将采用最高 div 的高度。这不是问题,除非您为浮动 div 使用与容器不同的背景颜色。

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

谢谢。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!