2017-11-27 4 views
-2

Ich habe 4 Divs.CSS - Inline divs Größe

1 - Divs '.left' und '.right' sollten 150px min. ->OK

2 - Divs '.middle1' und' .middle2' sollte die verbleibende mit erhalten, indem ihnen geteilt. ->NICHT OK

Warum habe ich ein Leerzeichen zwischen '.middle2' und '.right'?

.container { 
 
    width: 100%; 
 
    display: table;  
 
} 
 
.left { 
 
    float: left; 
 
    display: table-cell; 
 
    padding: 0; 
 
    background-color: red; 
 
    height: 30px; 
 
    width: 15%; 
 
    min-width:150px; 
 
} 
 
.middle1 { 
 
    float: left; 
 
    display: table-cell; 
 
    padding: 0; 
 
    background-color: blue; 
 
    height: 30px; 
 
    width: 35%; 
 
} 
 
.middle2 { 
 
    float: left; 
 
    display: table-cell; 
 
    padding: 0; 
 
    background-color: grey; 
 
    height: 30px; 
 
    width: 35%; 
 
} 
 
.right { 
 
    display: table-cell; 
 
    background-color: green; 
 
    height: 30px; 
 
    width: 15%; 
 
    min-width:150px;  
 
} 
 
input { 
 
    margin:5px; 
 
    width:100px; 
 
    background: #FFF; 
 
} 
 
.list{ 
 
    margin: 0 2px; 
 
    color: #FFF; 
 
}
<div class="container"> 
 
    <div class="left"> 
 
    <input type="text"> 
 
    <span class="list">list</span> 
 
    </div> 
 
    <div class="middle1"></div> 
 
    <div class="middle2"></div> 
 
    <div class="right"></div> 
 
</div>

+0

wie wollen Sie sie angezeigt werden, alle von ihnen in Einzel Reihe? – Geeky

+0

Keiner Ihrer divs ist "inline" ... alle haben nicht-inline-Anzeigeeigenschaften. Sie müssen klarstellen, was Sie erreichen wollen, –

+0

Weil 'min-width: 150px' natürlich _more_ als' width: 15% 'wenn die Bildschirmbreite klein genug ist ... – CBroe

Antwort

1

nicht sicher, wie tun Sie statt das Spiel mit Float der angezeigt werden soll, können Sie Anzeige verwenden: flex die gleiche

Kontrolle zu erreichen, die unter Snippet

.container { 
 
display:flex; 
 
} 
 
.left { 
 
    
 
    padding: 0; 
 
    background-color: red; 
 
    height: 30px; 
 
    width: 15%; 
 
    min-width:150px; 
 
} 
 
.middle1 { 
 
    
 
    padding: 0; 
 
    background-color: blue; 
 
    height: 30px; 
 
    width: 35%; 
 
} 
 
.middle2 { 
 
    
 
    padding: 0; 
 
    background-color: grey; 
 
    height: 30px; 
 
    width: 35%; 
 
} 
 
.right { 
 
    
 
    background-color: green; 
 
    height: 30px; 
 
    width: 15%; 
 
    min-width:150px;  
 
} 
 
input { 
 
    margin:5px; 
 
    width:100px; 
 
    background: #FFF; 
 
} 
 
.list{ 
 
    margin: 0 2px; 
 
    color: #FFF; 
 
}
<div class="container"> 
 
    <div class="left"> 
 
    <input type="text"> 
 
    <span class="list">list</span> 
 
    </div> 
 
    <div class="middle1">m1</div> 
 
    <div class="middle2">m2</div> 
 
    <div class="right">right</div> 
 
</div>

Hoffe es hilft

0

Hallo, das ist nicht der beste Weg, dies zu tun.

Sie sollten ein div mit drei Abschnitten davon machen und die mittlere in zwei Abschnitte unterteilen.

Also im Grunde die Struktur, die Sie brauchen, ist

Div> 3 Spalten und dann die mittlere Spalte hat zwei Spalten conatined.

Allerdings ist hier eine schnelle Lösung für Ihr Code: - Bewerben float:right-.middle2 - Befestigen Sie die Breite percetage für .middle1 und .middle2

.container { 
    width: 100%; 
    display: table;  
} 
.left { 
    float: left; 
    display: table-cell; 
    padding: 0; 
    background-color: red; 
    height: 30px; 
    width: 15%; 
    min-width:150px; 
} 
.middle1 { 
    float: left; 
    display: table-cell; 
    padding: 0; 
    background-color: blue; 
    height: 30px; 
    width: 31%; 
} 
.middle2 { 
    float: right; 
    display: table-cell; 
    padding: 0; 
    background-color: grey; 
    height: 30px; 
    width: 31%; 
} 
.right { 
    display: table-cell; 
    background-color: green; 
    height: 30px; 
    width: 15%; 
    min-width:150px;  
} 
input { 
    margin:5px; 
    width:100px; 
    background: #FFF; 
} 
.list{ 
    margin: 0 2px; 
    color: #FFF; 
}