Wiki-Quellcode von Nummerierung wiederholbarer Elemente
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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. | ||
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. | ||
5 | {{/figure}} | ||
6 | |||
7 | == Änderungen im Formular == | ||
8 | |||
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]]. | ||
10 | |||
11 | == Änderungen im CSS-Bereich == | ||
12 | |||
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: | ||
14 | |||
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. | ||
19 | |||
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 | |||
24 | {{code language="css"}} | ||
25 | /* Select the container of repeatable elements */ | ||
26 | /* And reset the counter here */ | ||
27 | .xm-item-div[data-xm-dynamic] { | ||
28 | counter-reset: counterWdh; | ||
29 | } | ||
30 | |||
31 | /** For each repeated element, increment the counter by one */ | ||
32 | .dynamic-row { | ||
33 | counter-increment: counterWdh; | ||
34 | } | ||
35 | |||
36 | /* Select the label text of each for element */ | ||
37 | .dynamic-row label > p::before, | ||
38 | .dynamic-row legend::before { | ||
39 | /** Add the number in front of the label */ | ||
40 | content: counter(counterWdh) ". "; | ||
41 | /** And make it blue */ | ||
42 | color: blue; | ||
43 | } | ||
44 | {{/code}} | ||
45 | |||
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. |