Ich versuche ein Layout mit Elementen (Eingabefelder in diesem Fall) zu erstellen, wo der Benutzer so viele von ihnen hinzufügen kann wie sie wollen, und auch sie entfernen. Die Elemente gehen in Spalten und jede Spalte kann maximal 4 Elemente haben. Hier ist eine einfache Version, ohne die Säule Funktionalität https://jsfiddle.net/khfpp2vL/2/Teilen von Elementen in Spalten mit einer bestimmten Anzahl von Elementen in jeder Spalte (html, css, javascript)
Wenn es 4 Elemente ist, sollte es so aussehen:
[1]
[2]
[3]
[4]
Wenn ein fünftes Element hinzugefügt wird, sollte es in einer eigenen Spalte sein:
[1][5]
[2]
[3]
[4]
Und mit mehr Elementen:
[1][5][9]
[2][6][10]
[3][7]
[4][8]
Und so auf.
Ich kann keine Wrapper erstellen und habe jeweils vier Elemente, denn wenn Elemente aus der Mitte entfernt werden, müssen diejenigen, die übrig sind, zu einer anderen Spalte wechseln können. Zum Beispiel, wenn ich 3 und 6 aus dem vorherigen Beispiel zu entfernen, würde es
ändern[1][7]
[2][8]
[4][9]
[5][10]
ich css Spalten habe versucht, so etwas wie diese http://jsfiddle.net/NJ4Hw/ (nicht von mir erstellt). Aber das Problem ist, dass ich die Menge der Elemente in jeder Spalte nicht kontrollieren kann. Ich kann die Anzahl der Spalten mit JavaScript ändern, wenn die Anzahl der Elemente durch 4 teilbar ist, also habe ich die richtige Anzahl an Spalten, aber ich entferne zum Beispiel alles außer 9 Elementen in der Geige und ändere die Anzahl der Spalten auf drei. es wird sie ebenso wie diese unterteilen:
[1][4][7]
[2][5][8]
[3][6][9]
Und ich brauche es noch in den ersten Spalten 4 Elemente haben:
[1][5][9]
[2][6]
[3][7]
[4][8]
ich auch eine Lösung gedacht, wo die Eltern eine maximale Höhe hat und nur vier Elemente würden vertikal passen, aber ich konnte nicht herausfinden, wie man sie so anordnet. Wenn ich zum Beispiel Floats verwende, schwebt es 1 und 2 nebeneinander, wenn der Platz leer ist.
Also ich bin mir nicht sicher, was ich als nächstes versuchen soll. Flexbox? Eine Art Javascript-Lösung? Oder gibt es eine super einfache Lösung, an die ich nicht gedacht habe?
Vielen Dank! Das funktionierte perfekt, bis ich mit IE versuchte ... [https://jsfiddle.net/khfpp2vL/7/](https://jsfiddle.net/khfpp2vL/7/) Ich muss IE11 in Kompatibilitätsansicht unterstützen Ich denke, ich hätte das am Anfang erwähnen sollen. Ich habe einige Präfixe hinzugefügt, aber brauche ich noch mehr? Oder wird es jemals in IE funktionieren? – YellowPlanet
Ich habe die erforderlichen Präfixe hinzugefügt. Änderte auch die Höhe von maximal zu explizit. Hier ist ein Link, den ich verwenden kann: http://caniuse.com/#feat=flexbox Wenn Sie bekannte Probleme auswählen, können Sie versuchen, sie aus der Liste zu diagnostizieren. Es tut mir leid, dass ich nicht zu viel Zeit damit verbringen kann, diesen Kugelsicher zu machen. Ich bin mir auch der Spezifikation nicht bewusst. – Aaron
Ich habe es funktioniert sogar in IE, danke! – YellowPlanet