Ich habe eine unbestimmte Anzahl von Tabellenzellenelementen in einem Tabellencontainer.
<div style="display:table;">
<div style="display:table-cell;"></div>
<div style="display:table-cell;"></div>
</div>
Gibt es eine reine CSS-Methode, um die Tabellenzellen gleich breit zu machen, selbst wenn sie unterschiedlich große Inhalte enthalten?
Vielen Dank.
Bearbeiten: Eine maximale Breite würde bedeuten, zu wissen, wie viele Zellen Sie haben, denke ich?
html
css
html-table
Harry
quelle
quelle
Antworten:
Hier ist eine funktionierende Geige mit einer unbestimmten Anzahl von Zellen: http://jsfiddle.net/r9yrM/1/
Sie können jedem übergeordneten Element
div
(der Tabelle ) eine Breite festlegen , andernfalls beträgt sie wie gewohnt 100%.Der Trick besteht darin,
table-layout: fixed;
für jede Zelle eine gewisse Breite zu verwenden, um sie auszulösen, hier 2%. Dies löst den anderen Tabellenalgorithmus aus, bei dem die Browser sehr bemüht sind, die angegebenen Abmessungen einzuhalten.Bitte testen Sie mit Chrome (und IE8 - falls erforderlich). Es ist in Ordnung mit einer kürzlich durchgeführten Safari, aber ich kann mich nicht an die Kompatibilität dieses Tricks mit ihnen erinnern.
CSS (relevante Anweisungen):
EDIT (2013): Vorsicht vor Safari 6 unter OS X, es ist
table-layout: fixed;
falsch (oder vielleicht nur anders, sehr verschieden von anderen Browsern. Ich habe das CSS2.1 REC-Tabellenlayout nicht Korrektur gelesen;)). Seien Sie auf unterschiedliche Ergebnisse vorbereitet.quelle
div
sdisplay:table
verwendet werden, als wären sie Zeilen, nichtdisplay:tabl-row
wie manche erwarten. Beispiel hier ..my-cell { width: 100%; }; @media screen and (min-width:0\0) { .my-cell { width: 1%; } }
Der CSS-Hack ist von hier: stackoverflow.com/a/24321386/6962HTML
CSS
DEMO.
quelle
Nur die Verwendung
max-width: 0
in demdisplay: table-cell
Element hat für mich funktioniert:quelle
0px
nicht auswählen, aber keine gültige Einheit. Es sollte einfach so sein0
.Ersetzen
mit
Schauen Sie sich alle Probleme an, die mit dem Versuch verbunden sind, Divs wie Tabellen auszuführen. Sie mussten table-xxx hinzufügen, um Tabellenlayouts nachzuahmen
Tabellen werden unterstützt und funktionieren in allen Browsern sehr gut. Warum sie fallen lassen? Die Tatsache, dass sie sie nachahmen mussten, ist ein Beweis dafür, dass sie ihre Arbeit gut gemacht haben.
Meiner Meinung nach verwenden Sie das beste Tool für den Job und wenn Sie tabellarische Daten oder etwas, das tabellarischen Datentabellen ähnelt, möchten, funktionieren Sie einfach.
Sehr späte Antwort Ich weiß, aber es lohnt sich zu äußern.
quelle
<nav>
,<ul>
usw.display: table-etc
(ganz natürlich) ist. Ich verbringe meine Tage nicht damit, Links zu erstellen, die Divs oder Divs imitieren, die Tabellen, Bereiche oder Eingaben imitieren: Ich verwende nur CSS für das Styling. Schließlich viel Glück mit IE9 für das Anwenden eines anderen Wertes derdisplay
Eigenschaft auf Tabellen-, tr-, td-Elemente.Das wird für alle funktionieren
Dies funktioniert auch für Tabellendaten, die durch Iteration erstellt wurden
quelle
Bitte schön:
http://jsfiddle.net/damsarabi/gwAdA/
Sie können width: 100px nicht verwenden, da die Anzeige eine Tabellenzelle ist. Sie können jedoch Max-width: 100px verwenden. dann wird deine Box niemals größer als 100px. Sie müssen jedoch einen Überlauf hinzufügen: versteckt, um sicherzustellen, dass der Contect nicht in andere Zellen blutet. Sie können auch Leerzeichen hinzufügen: nowrap, wenn Sie verhindern möchten, dass die Höhe zunimmt.
quelle
Dies kann erreicht werden, indem der Tabellenzellenstil auf
width: auto
und der Inhalt leer gesetzt wird. Die Spalten sind jetzt gleich breit, enthalten jedoch keinen Inhalt.Fügen Sie zum Einfügen von Inhalten in die Zelle eine
div
mit css hinzu:Sie müssen auch
position: relative
zu den Zellen hinzufügen .Jetzt können Sie den eigentlichen Inhalt in das oben beschriebene div einfügen.
https://jsfiddle.net/vensdvvb/
quelle