2016-03-24 3 views
0

Ich habe einen div-Container in verschiedenen Floating-div-Elemente: Ich möchte einige mit einer großen Breite (groß) haben, andere mit einer kleinen Breite (klein); gleichzeitig sollten alle von ihnen die gesamte Behälterbreite aufnehmen. Die Anzahl der Elemente small, big und total wird über Javascript dynamisch festgelegt, daher kann ich in css keine feste prozentuale Breite verwenden.passen verschiedene div Element, mit verschiedenen Größen, auf die gesamte Containerbreite

In einigen GUI-Entwickler-Software gibt es Stretch-Werte, um dieses Ziel zu erreichen.

Beispiel (statisch) html:

<div class="container"> 
    <div class="small">small</div> 
    <div class="big">BIG</div> 
    <div class="big">BIG</div> 
    <div class="big">BIG</div> 
    <div class="small">small</div> 
</div> 

Beispiel css:

.container { 
    display: block; 
    overflow: hidden; 
    width: 100%; } 

.big , .small { 
    float: left; } 

Dank!

+1

So, wie können wir dir helfen ? Ihre Antwort enthält keine Frage oder Nachfrage. – Eria

+0

@Eria, ich denke, dass die Frage verstanden wird – fryederich

+0

@Paulie_D mein Code ist ein wenig komplizierter, hier habe ich eine vereinfachte Version geschrieben, die der Kern meines Problems ist. Ich habe Nachforschungen angestellt, aber ich kann nichts finden. Meine Versuche sind völlig nutzlos, und meine derzeitige Idee ist, dass mein Problem nicht ohne JavaScript-Code gelöst werden kann. – fryederich

Antwort

0

Option 1: CSS Flex-Box

Sie CSS flex-Box für diese verwenden:

.container { 
 
    display:flex; 
 
    flex-wrap:nowrap; 
 
} 
 
    
 
.big { 
 
    flex-grow:2; 
 
    background-color:red; 
 
} 
 

 
.small { 
 
    flex-grow:1; 
 
    background-color:yellow; 
 
}
<div class="container"> 
 
    <div class="small">small</div> 
 
    <div class="big">BIG</div> 
 
    <div class="big">BIG</div> 
 
    <div class="big">BIG</div> 
 
    <div class="small">small</div> 
 
</div>

Option 2: JavaScript

Sie könnten eine JS-Methode erstellen, die berechnet die benötigte Gesamtbreite und legt den CSS-Stil im Vergleich dazu fest.

Theorie:

Small = 1 width 
Big = 2 width 

Blick auf diesen Link Artikel im div zu zählen: https://api.jquery.com/length/

4x big = 8 width 
5x small = 5 width 
total width = 13 width 

width per small in % = 100/13 
width per large in % = 100/13 * 2 

Satz, (. ZB mit JQuery) Breite

+1

Danke, ich weiß, aber ich suche nach einer Lösung ohne JavaScript-Code zu ändern. – fryederich

+0

@fryederich Antwort aktualisiert. – Randy

+0

Die Flexbox erfüllt dieses von Ihnen geforderte Prinzip. Es schaut auf die komplette Breite und abhängig davon, wie viel Flex-Grow Sie Ihrem Element geben, es dehnt es auf die entsprechende Größe. Probieren Sie den Code aus und fügen Sie Divs hinzu. Sie werden sehen, wenn Sie ein Tausender hinzufügen, funktioniert es immer noch. – Randy

Verwandte Themen