Textfelder in der HTML-Tabelle: Wie auto-size?
Möchte ich noch hinzufügen einer Zeile am Ende meiner HTML-Tabelle (oder an der Spitze, was auch immer) mit einem Textfeld, in jeder Spalte (damit abfiltrieren der Inhalt der einzelnen Spalten).
FWIW, die Tabelle basiert auf der jQuery-DataTables-plug-in.
Das problem ist, dass die Textfelder erweitern sich die Spalten. Ich möchte jede textbox zu füllen, die der Breite Ihrer Spalte, ohne Sie zu vergrößern. Wie kann ich dies tun?
- Siehe meine Antwort hier in Bezug auf flex und flex-grow: stackoverflow.com/a/52975265/1599699
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
<input type="text" style="width:100%"/>
um die Breite des übergeordneten td.auto
/inherit
Breite wird es nicht tun, müssten Sie100%
. Wenn Sie feststellen, dass die zusätzliche Größe ist, die Spaltenbreiten, das heißt, Sie muss die Standard -auto
- Tisch-layout. Sie don ' T wollen in der Regel auto-table-layout als es langsam zu Rendern und unberechenbar. Am besten ist, umtable-layout: fixed
und geben Sie die Spalten behoben werden soll eine explizite Breite (auf der ersten Zeile von Zellen, oder, besser, mit<col>
). Spalten ohne explizite Breite teilen sich den Rest Breite unter Ihnen.In der Tat.
Können Sie kompensieren dies, indem Sie
padding-right
auf die Zelle mit der Eingabe (oder einfach nur alle Zellen), von ähnlicher Größe zu den Grenzen-und-padding der Eingabe. Den Eingang, dann dehnt sich der Inhalt der Zelle Gebiet, aber nur auf die Polsterung, damit es nicht ein Durcheinander machen.Ist das OK, nur für normalen text ein. Wenn Sie haben auch andere Elemente wie Auswahlfelder oder Schaltflächen, die Sie möchten, um die Größe dieser Art, die Polsterung Methode kann nach hinten losgehen, weil im IE die 'Breite' eines auswählen, inklusive der border und padding (durch ein OS-widget).
Bei den meisten Browsern ist der einfachste und effizienteste Weg, dies zu beheben, ist die CSS3 - box-sizing Eigenschaft:
IE6-7 nicht unterstützt dies noch, so dass Sie immer noch Felder, die nicht ganz line-up in diesen Browsern. Wenn Sie sich sorgen, können Sie eine Polsterung Abhilfe, die speziell für diese.
Habe ich nicht verwendet jQuery Tabellen, aber ich gehe davon aus, dass wenn Sie 'width: 80%;' und definieren Sie die Breite der 'td',' der text-box Erben sollte seine Maße von seinen Eltern (die 'td').
Wenn das nicht funktioniert, oder Sie wollen einen anderen Ansatz, die Sie könnten versuchen:
verwenden
!important
überschreiben, die anderen css-Regeln