So stellen Sie sicher, dass die letzte Zelle einer Zeile in einer Tabelle die gesamte verbleibende Breite belegt

73

Wie kann ich im folgenden HTML-Fragment festlegen, dass die Breite einer Spalte, die 'LAST' enthält, den Rest der Zeile einnimmt und die Breite von Spalten, die 'COLUMN ONE' und 'COLUMN TWO' enthalten, gerade breit genug ist, um ihren Inhalt aufzunehmen? und nicht größer.

Vielen Dank

table {
  border-collapse: collapse;
}
table td {
  border: 1px solid black;
}
<table>
  <tr>
    <td>
      <table width="100%">
        <tr>
          <td>
            <span>
             COLUMN
           </span>
            <span>
             ONE
           </span>
          </td>
          <td>
            COLUMN TWO
          </td>
          <td>
            LAST
          </td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td>
      ANOTHER ROW
    </td>
  </tr>

</table>

Ikaushan
quelle

Antworten:

105

Sie müssen den ersten beiden Spalten mitteilen, dass sie nicht umbrochen werden sollen, und der letzten Spalte eine Breite von 99% geben:

<table width="100%">
       <tr>
         <td style="white-space: nowrap;">
           <span>
             COLUMN
           </span>
           <span>
             ONE
           </span>
         </td>
         <td style="white-space: nowrap;">
            COLUMN TWO
         </td>
         <td width="99%">
           LAST
         </td>
       </tr>
     </table>

Bearbeiten: Sie sollten alle Stile / Präsentationen in (extern ...) CSS setzen.

Verwenden von Klassen für die Spalten (Sie können nth-child()stattdessen CSS3-Selektoren verwenden, wenn Sie nur auf moderne Browser abzielen):

html:

<tr>
  <td class="col1">
  // etc

CSS:

.col1, .col2 {
  white-space: nowrap;
}
.col3 {
  width: 99%;
}
Jeroen
quelle
1
Die Ablehnung gilt für das <td> -Tag, aber wenn Sie Responsive / CSS-Tabellen mit div und display: table-cell ausführen, funktioniert dies hervorragend.
Kaufmann
12
@ckaufman Tabellen nicht veraltet, viele der Attribute sind ( width, nowrap, etc.).
Jeroen
2
Dies funktioniert, aber ich musste min-widthder zweiten Spalte meiner Tabelle auch ein Attribut hinzufügen, um ein Schrumpfen zu vermeiden.
Ulysses Alves
Was ist, wenn in der letzten Tabellenzelle ein Dropdown-Menü enthalten ist, das die gleiche Breite wie die Tabellenzelle haben soll? Die Einstellung der Breite des Dropdown-Menüs auf 100% scheint seit dem Enthalten nicht mehr zu funktionieren Die Breite des Elements ist auf 99% eingestellt. Gibt es eine einfache Möglichkeit, dies zu tun? Derzeit greife ich auf Javascript zurück, um die Breite dynamisch festzulegen, wenn das Dropdown-Menü geöffnet wird.
FlyingL123
Wenn Sie wissen, dass die übergeordnete Breite 99% Ihrer Anforderungen beträgt, können Sie 101% (99 + 0,09 = 99,9%) oder bei Bedarf etwas größer einstellen.
Randy Hall