2016-03-29 6 views
1

Wie kann ich das Ergebnis wie im Bild unten über CSS/HTML erreichen?So erstellen Sie die volle Breite von Zeilen, wenn die Anzahl der Spalten unterschiedlich ist

table

Wie Sie zuerst sehen, 2 Reihen mit 2 Spalten, 3-4 Zeilen 3 Spalten, 5-6 Zeilen sollten in voller Breite sein. Problem ist, dass ich unterschiedliche Breiten für verschiedene Reihen nicht erhalten kann. Sollte ich für jeden td eine Klasse hinzufügen und die Breite manuell angeben? Vielleicht gibt es einen anderen Weg? Ich habe vereinfachte Probe zur Verfügung gestellt, für die Wirklichkeit gibt es mehr als 150 Felder in der Tabelle.

Hier habe ich erstellt JS FIDDLE zu sehen Struktur der Tabelle.

<table class="tbl"> 

<tr> 
     <th>UserID </th> 
     <th>FirstName </th>    
     <th>LastName </th>   
     <th>Picture </th> 
    </tr> 
    <tr> 
     <td>UserID</td> 
     <td>FirstName</td>   
     <td>LastName</td>   
     <td>Picture</td>     
    </tr> 
    <tr> 
     <th>Rank </th>    
     <th>RankApplied </th> 
     <th>DateApplied </th> 
     <th>DateAvailability </th> 
     <th>VesselsType </th> 
    </tr> 
    <tr> 
     <td>Rank</td>    
     <td>RankApplied</td> 
     <td>DateAvailability</td> 
     <td>VesselsType</td> 
    </tr> 
    <tr> 
     <th>DOB </th>    
     <th>POB </th>    
     <th>Nationality </th>  
     <th>English </th> 
    </tr> 
    <tr> 
     <td>DOB</td>     
     <td>POB</td>     
     <td>Nationality</td>   
     <td>English</td> 
    </tr> 
    .... 
+0

Das sagte ... es sieht nicht aus wie * ein * Tisch ... mehr wie viele Mini-Tische hintereinander gestapelt. –

+0

@Paulie_D Ich weiß nicht, ob es die beste Wahl ist, in diesem Fall überhaupt Tabellen zu verwenden. Ich muss eine Struktur wie diese in irgendeiner Weise erreichen ... – Infinity

+0

Nun, das liegt an dir ... Wenn es tabellarische Daten sind (und es sieht so aus), macht eine Tabelle Sinn .... aber jeder Satz von Zeilen könnte ihr sein eigener Tisch .... und du kannst es dann auslegen wie du willst. –

Antwort

2

Es ist mit mehreren Techniken möglich. Persönlich würde ich flexbox Styling wählen.

Mit flex: 1 1 auto; für Grid-Artikel wachsen und schrumpfen sie wie Sie wollen.

Ich habe auf fiddle

ich display: flex auch für den Körper verwenden ein kurzes Beispiel für dieses Layout setzen, aber nur das Lochraster zu zentrieren.

Update: Ich aktualisierte die Fiddle-Link für eine "dynamische" Layout.

+0

Vielen Dank für eine Antwort, aber wenn Text so lang ist, Zeilenbreite nicht zunimmt, und wenn Werte (Daten) eine andere Länge als Header - Breite nicht übereinstimmt. Updated JS Fiddle https://jsfiddle.net/mqpwgvoe/2/ – Infinity

+0

ja. Der Grid-Item Style benötigt einen 'flex: 1 1 0;' Wert. Und die Grid-Spalte style ein 'flex: 1 0 auto;' Wert zu wachsen. Ich habe den obigen Link aktualisiert. Übrigens ist das Gitter in diesem Beispiel immer 50% des Körpers, wenn Sie das ändern wollen, ändern Sie einfach den Flex-Wert im Gitterstil oder verwenden Sie gar nicht flexbox (für diesen Stil) und verwenden Sie eine feste Breite für Beispiel ... – michaPau

+0

Internet Explorer explizit benötigt eine Einheit für den Flex-Basiswert: 'flex: 1 1 0px;'. Ich habe den Fiddle-Link dafür aktualisiert. – michaPau

Verwandte Themen