2016-12-20 2 views
3

(ich dachte, ich könnte eine Antwort in Set the table column width constant regardless of the amount of text in its cells? finden, aber keine der Lösungen scheint es für mich zu arbeiten.)CSS Tabellenspaltenbreiten arbeiten nicht

Ich mag würde eine Tabelle mit zwei Spalten bauen, ein 30 % der Breite des Textbereichs und der andere füllt den verbleibenden Platz. Zwischen den Zellen benötige ich ungefähr 1 m Raum, so dass ich verschiedene Grenzen um jede Zelle anwenden kann. Dies ist der aktuelle Code:

table.condform { 
 
     margin-left: 50px; 
 
     margin-top: 1em; 
 
     table-layout: fixed; 
 
     width: 80%; 
 
     font-family: Courier, monospace; 
 
     font-size: xx-small: 
 
     padding: 0; 
 
     border-collapse: separate; 
 
     border-spacing: 2em; 
 
     border: none; 
 
    } 
 
    
 
    table.condform td { 
 
     padding: 0.1em 0.2em 0.3em 0.2em; 
 
     min-height: 1em; 
 
     vertical-align: top; 
 
    } 
 
    
 
    table.condform td:first-of-type { 
 
     width: 40%; 
 
    } 
 
    
 
    table.condform td:nth-of-type(2) { 
 
     width: auto;
<table class="condform"> 
 
    <colgroup> 
 
     <col style="width: 40%;"> 
 
     <col style="width: auto;"> 
 
    </colgroup> 
 
    <tr> 
 
    <td style="border: red 1px solid; background-color: #ff0">a</td> 
 
    <td>b</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="border: blue 1px solid; background-color: #0ff">a</td> 
 
    <td>b</td> 
 
    </tr> 
 
    </table>

Unabhängig davon, was ich tun die Zellen schrumpfen ihre Inhalte zu passen, und nichts, was ich scheint tun Zellenabstand zu beeinflussen:

Shrunk table

Ich habe jetzt sechs oder sieben verschiedene Fixes ausprobiert, einschließlich aller oben genannten Links, aber ohne Erfolg. Sicherlich darf die Einstellung der Spaltenbreiten und Zellenabstände nicht über die Fähigkeiten von CSS hinausgehen.

BEARBEITEN 20161221 1040: Einstellung td Breite Werte in Pixel funktioniert, aber ich bin nicht scharf auf die Angabe von Pixelwerten, wenn ich es helfen kann.

BEARBEITEN 20161221 1052: Im Element-Inspektor scheint es, dass die Tabellenklasse nicht richtig angewendet wird. Es ist ein table, seine Klasse ist condform, aber keine Stile dieser Klasse werden im Stilfeld angezeigt. (Ich weiß, dass es leere Eigenschaften gibt, aber sie sollten keine Probleme verursachen und nicht woanders liegen.) Untergeordnete Stile werden immer noch ordnungsgemäß angewendet, wie die Tatsache zeigt, dass Pixelbreiten funktionieren.

Stylesheet vs displayed page

Ich bin jetzt flummoxed.

+1

Versuchen Sie, die Breite auf der '' innerhalb der ersten ' Einstellung', und stellen Sie sicher, dass Ihre HTML a hat Doctype. –

+0

Yup, es ist richtig für HTML5 eingegeben. Ich werde versuchen, die Breite manuell zu gestalten - einen Moment. :-) –

+0

Nun, das hat funktioniert. Ich würde es vorziehen, alles im Stylesheet zu behandeln, aber hey - wenn es funktioniert, funktioniert es. Vielen Dank! (Fügen Sie es als Antwort hinzu, wenn Sie möchten, und ich werde es akzeptiert.) –

Antwort

0

Sie benötigen die colgroup nicht. Mit nur diejenigen zu entfernen, es funktioniert:

table.condform { 
 
    margin-left: 50px; 
 
    margin-top: 1em; 
 
    width: 80%; 
 
    font-family: Courier, monospace; 
 
    font-size: xx-small: 
 
    padding: 0; 
 
    border-collapse: separate; 
 
    border-spacing: 2em; 
 
    border: none; 
 
} 
 

 
table.condform td { 
 
    padding: 0.1em 0.2em 0.3em 0.2em; 
 
    min-height: 1em; 
 
    vertical-align: top; 
 
} 
 

 
table.condform td:first-of-type { 
 
    width: 40%; 
 
} 
 

 
table.condform td:nth-of-type(2) { 
 
    width: 0.5em; 
 
}
<table class="condform"> 
 
<tr> 
 
<td style="border: red 1px solid; background-color: #ff0">a</td> 
 
<td style="border: green 1px solid; background-color: #fda">b</td> 
 
</tr> 
 
<tr> 
 
<td style="border: blue 1px solid; background-color: #0ff">a</td> 
 
<td style="border: green 1px solid; background-color: #caa">b</td> 
 
</tr> 
 
</table>

+0

Das war, was ich ursprünglich tat, die Breite in nur CSS einstellend. Es macht leider keinen Unterschied für das Aussehen. Ich stecke mit IE, wenn das ein Problem sein könnte. –

0

Sie ausgeben möchten wie diese .......? see this link

table.condform { 
 
    margin-left: 50px; 
 
    margin-top: 1em; 
 
    table-layout: fixed; 
 
    width: 80%; 
 
    font-family: Courier, monospace; 
 
    font-size: xx-small: 
 
    padding: 0; 
 
    border-collapse: separate; 
 
    border-spacing: 2em; 
 
    border: none; 
 
} 
 

 
table.condform td { 
 
    padding: 0.1em 0.2em 0.3em 0.2em; 
 
    min-height: 1em; 
 
    vertical-align: top; 
 
} 
 

 
table.condform td:first-of-type { 
 
    width: 40%; 
 
} 
 

 
table.condform td:nth-of-type(2) { 
 
    width: auto;}
<table class="condform"> 
 
<colgroup> 
 
    <col style="width: 40%;"> 
 
    <col style="width: auto;"> 
 
</colgroup> 
 
<tr> 
 
<td style="border: red 1px solid; background-color: #ff0">a</td> 
 
<td>b</td> 
 
</tr> 
 
<tr> 
 
<td style="border: blue 1px solid; background-color: #0ff">a</td> 
 
<td>b</td> 
 
</tr> 
 
</table>

depen.io/anon/pen/eBXJrJ

+0

Ja, das ist das Ziel. Es scheint dort richtig zu parsen - aber ich kann nichts anderes finden, von dem es geerbt werden könnte. Zeit, um den Inspektor zu brechen .... –

+1

Dies ist eine sehr niedrige Qualität, Link nur Antwort. Es wäre besser, den Code in ein Stack-Snippet aufzunehmen und zu erklären, warum diese Lösung funktionieren würde. – Roberrrt

+0

Ich nehme an, es ist eine Klärungsfrage in Vorbereitung auf eine Antwort. –

Verwandte Themen