Wiki-Quellcode von Nummerierung wiederholbarer Elemente
Verstecke letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
![]() |
8.2 | 1 | Manchmal ist es sinnvoll, bei dynamischen Elementen eine fortlaufende Nummer anzuzeigen. Statt die Nummerierung im {{smallcaps}}Html{{/smallcaps}} fest zu hinterlegen, können wir sie dynamisch durch {{smallcaps}}Css{{/smallcaps}} hinzufügen. |
![]() |
1.1 | 2 | |
![]() |
8.2 | 3 | {{figure image="gettingstarted_css_counter_repeatable_elements_de.png" width="600"}} |
4 | Anzeige einer fortlaufenden Nummer an wiederholbaren Elementen. Unter den Grundeigeschaften wird das Element wiederholbar gemacht. Im CSS-Bereich wird die Nummerierung mittels CSS-Zählern hinzugefügt. | ||
![]() |
1.1 | 5 | {{/figure}} |
6 | |||
![]() |
8.2 | 7 | == Änderungen im Formular == |
![]() |
1.1 | 8 | |
![]() |
8.4 | 9 | Zuerst fügen wir im {{designer case="dat"/}} einige Formularelement zum Formular hinzu. Nun schalten wie die Formularelemente wiederholbar. Dazu setzen wir das Häkchen bei der Einstellung im {{designer/}} unter [[Grundeigenschaften>>doc:Formcycle.FormDesigner.ElementProperties.BaseProperties]]. |
![]() |
1.1 | 10 | |
![]() |
8.2 | 11 | == Änderungen im CSS-Bereich == |
![]() |
1.1 | 12 | |
![]() |
8.5 | 13 | Im [[{{smallcaps}}Css{{/smallcaps}}-Bereich>>doc:Formcycle.FormDesigner.CodingPanel.CSSTab.WebHome]] können wir nun die Nummerierung vornehmen. Dies geschieht mit den {{smallcaps}}Css{{/smallcaps}}-Eigenschaften //counter-reset// sowie //counter-increment//. Im {{smallcaps}}Css{{/smallcaps}} kann es einen oder mehrere Zähler geben. Jeder Zähler hat einen Namen und einen aktuellen Zahlenwert. Und wann zählt ein Zähler hoch? Das funktioniert wie folgt: |
![]() |
1.1 | 14 | |
![]() |
8.2 | 15 | * Der Anfangswert ist 0. |
16 | * Nun wird die HTML-Struktur des Formulars von oben nach unten durchgegangen. | ||
17 | * Wird auf ein Element mit der {{smallcaps}}Css{{/smallcaps}}-Eigenschaft //counter-reset// getroffen, wird der Zähler auf den angegebenen Wert zurück gesetzt. | ||
18 | * Wird auf ein Element mit der {{smallcaps}}Css{{/smallcaps}}-Eigenschaft //counter-increment// getroffen, wird der Zähler um eins erhöht. | ||
![]() |
1.1 | 19 | |
![]() |
8.2 | 20 | Das können wir dazu nutzen, den Zähler bei jedem wiederholten Element zu erhöhen. Im Beschriftungstext des Eingabefeld ist es uns so möglich, mittels des Pseudo-Elements //before// und //counter(...)// den aktuellen Wert des Zählers einzufügen. |
21 | |||
22 | Bevor wir das {{smallcaps}}Css{{/smallcaps}} schreiben, müssen wir noch zwei Sachen wissen. Jedes Formularelement befindet sich in einem Container (div) mit der Klasse //xm-item-div//. Dieser Container hat den Namen des Formularlements im Attribut //xn//. Zudem liegt jedes wiederholte Element nochmal in einem eigenen Container mit der Klasse //dynamic-row//. | ||
23 | |||
![]() |
1.1 | 24 | {{code language="css"}} |
![]() |
8.6 | 25 | /* Select the container of repeatable elements */ |
26 | /* And reset the counter here */ | ||
![]() |
8.2 | 27 | .xm-item-div[data-xm-dynamic] { |
28 | counter-reset: counterWdh; | ||
![]() |
1.1 | 29 | } |
30 | |||
![]() |
8.6 | 31 | /** For each repeated element, increment the counter by one */ |
![]() |
8.2 | 32 | .dynamic-row { |
33 | counter-increment: counterWdh; | ||
![]() |
1.1 | 34 | } |
35 | |||
![]() |
8.6 | 36 | /* Select the label text of each for element */ |
![]() |
8.2 | 37 | .dynamic-row label > p::before, |
38 | .dynamic-row legend::before { | ||
![]() |
8.6 | 39 | /** Add the number in front of the label */ |
![]() |
8.2 | 40 | content: counter(counterWdh) ". "; |
![]() |
8.6 | 41 | /** And make it blue */ |
![]() |
1.1 | 42 | color: blue; |
43 | } | ||
44 | {{/code}} | ||
45 | |||
![]() |
8.6 | 46 | We could add the numbering either to the //LABEL// element or to the //P// element inside the label. When added to the //P// element, as in the example above, the numbering shows up to the left of the label. Otherwise, it shows up on top of the label. |