Verlängern Sie die Höhe, um absolut positionierte Kinder einzuschließen

8

Ich baue einen html / javascript Theme Designer für ein CMS. Elemente sind absolut positioniert und können mit der Maus verschoben / skaliert werden und / oder editierbaren Text enthalten, dessen Höhe durch die Anzahl der Zeilen bestimmt werden kann. Allerdings stoße ich auf das Problem, bei dem die Höhe eines übergeordneten Elements nicht auf seine absolut positionierten untergeordneten Elemente erweitert wird.

Minimaler Code (auch auf JSFiddle hier ):

%Vor%

Eine CSS-Lösung ist ideal und ich mache mir keine Sorgen um ältere Browser. Aber ich suche hauptsächlich nach einer Möglichkeit, zu verhindern, dass JavaScript auf jeder Seite ausgeführt werden muss, wobei ein erstelltes Design verwendet wird, um die Höhe festzulegen (da Seiten mit demselben Thema möglicherweise unterschiedliche Textmengen haben).

Es gibt bereits einige ähnliche Fragen, aber ihre akzeptierten Antworten (z. B. keine absolute Positionierung) funktionieren in meinem Fall nicht. Es sei denn, es gibt eine Möglichkeit, mehrere Schichten ziehbarer / veränderbarer Elemente zu haben, ohne dass sie Position sind: absolut.

    
Dwayne 22.09.2013, 19:06
quelle

3 Antworten

17

Ich habe eine pure-css-Lösung gefunden! Zusammenfassend:

  1. Legen Sie die untergeordneten Elemente auf position: relativ statt absolut fest.
  2. Legen Sie ihren Rand rechts als ihre negative Breite fest, um ihnen eine effektive Breite von null zu geben, und lassen Sie sie schweben: links, um alle auf der gleichen Linie zu halten. Dies hat zur Folge, dass alle einen Ursprung von 0, 0 haben.
  3. Dann können wir ihre linken und oberen Randeigenschaften festlegen, um sie absolut innerhalb ihrer Eltern zu positionieren. Beachten Sie, dass margin-top anstelle von top erforderlich ist, da top nicht den unteren Teil des übergeordneten Elements nach unten drückt.

JSFiddle hier oder Code unten:

%Vor%     
Dwayne 23.09.2013, 15:29
quelle
4

Absolut positionierte Elemente werden aus dem Fluss entfernt und von anderen Elementen ignoriert

Die einzige Möglichkeit besteht darin, die untergeordnete Position auf position: relativ zu setzen. Auf diese Weise können Sie sie mithilfe von rechts, links, oben und unten verschieben und ändern Sie auch die übergeordnete Anzeige in display: inline-block

    
Drupalist 22.09.2013 19:44
quelle
1

Wenn Sie möchten, dass die Kinder absolut positioniert sind, können Sie mit dem folgenden Skript die Größe des Containers ändern: Ссылка

%Vor%     
user2804989 22.09.2013 19:51
quelle

Tags und Links