====== Elemente nebeneinander platzieren ======
Dieses Kapitel beschreibt, wie verschiedene Elemente im Fragebogen nebeneinander platziert werden, z.B. ein Bild neben einer Frage oder zwei Fragen nebeneinander.
**Wichtig:** Wenn Sie zwei Fragen mit denselben Items nebeneinander platzieren möchten (z.B. für eine Fishbein-Skala), dann lesen Sie bitte zunächst [[combine|Kombinierte Fragen]].
** Beispiel 1 **
{{:de:create:scr.table-layout.example1.png?nolink|Elemente nebeneinander platziert - Beispiel 1}}
** Beispiel 2 **
{{:de:create:scr.example.combine.dropdown.jpg?nolink|Dropdown-Auswahlfelder nebeneinander platzieren}}
Eine Schritt-für-Schritt-Beschreibung zum obigen Beispiel lesen Sie unter [[table-layout-dropdowns|Dropdowns nebeneinander platzieren]].
===== Variante A: Flexbox =====
Eine Flexbox-Konstruktion besteht aus einem Flexbox-Container ''%%
%%'' und darin enthalten Elemente, die nebeneinander angeordnet werden.
Der Unterschied zu Tabellen (unten) besteht darin, dass man den Elementen einer Flexbox erlauben kann, dass sie auf mehrere Zeilen umbrechen, wenn der Platz nicht ausreicht. Dadurch können Elemente auf dem PC-Bildschirm nebeneinander und auf dem Smartphone untereinander angeordnet werden.
Zum Nachlesen: [[https://css-tricks.com/snippets/css/a-guide-to-flexbox/|CSS Tricks: CSS Flexbox Layout Guide]]
Wenn Sie zwei Fragen nebeneinander platzieren möchten, benötigen Sie auf der Fragebogen-Seite (**Fragebogen zusammenstellen**) "HTML-Code" (nicht zu verwechseln mit "PHP-Code"), welcher gewissermaßen einen Rahmen um die Fragen bildet. Das kann wie folgt aussehen. Der Teil zwischen ''%%%%'' ist ein Kommentar und dient nur zur Orientierung, für die Funktion sind diese Zeilen unerheblich.
{{:de:create:fig.question.de.png?nolink|Frage zwischen dem HTML-Code}}
{{:de:create:fig.question.de.png?nolink|Frage zwischen dem HTML-Code}}
Das Breitenverhältnis der beiden Spalten ergibt sich aus der Angabe ''flex: 1 1 400px'', die bei beiden Elementen steht. Würde hier beim zweiten Element eine größere Zahl stehen, z.B. ''flex: 1 1 600px'', so wäre die rechte Spalte breiter. Die beiden Einser (''1 1'') geben lediglich an, dass die Element ausgehend von der Basisbreite (400 Pixel in diesem Fall) sowohl größer als auch kleiner werden dürfen.
Die Angabe ''gap: 0 50px'' im Container gibt an, dass zwischen den Elementen ein horizontaler Abstand von 50 Pixels bleiben soll. Falls die Elemente aber untereinander dargestellt werden (siehe unten), soll kein Abstand eingefügt werden.
Die Angabe ''min-width: 320px'' gibt an, dass jedes Element für sich nicht schmaler als 320 Pixel dargestellt werden darf. Falls der Platz nicht für beide Elemente nebeneinder plus Abstand (320 + 50 + 320 = 690 Pixel) nicht ausreicht (zum Beispiel auf dem Smartphone, weil das Tablet hochkant gehalten wird, oder weil das Browserfenster einfach nicht den ganzen Bildschirm bekommt), dann werden die Elemente untereinander dargestellt (''flex-wrap: wrap'' erlaubt das Umbrechen). Dort nehmen sie dann aber wieder die komplette verfügbare Breite ein.
Anstatt von Fragen können auch andere Element zwischen den HTML-Code-Elementen stehen, zum Beispiel Bilder oder der [[:de:create:media|HTML-Code für Mediendateien]].
===== Variante B: Tabellen =====
**Hinweis:** Tabellen sind besser steuerbar, aber weniger flexibel. Falls Sie erwarten, dass Personen den Fragebogen via Smartphone ausfüllen, sollten Sie keine Tabellen verwenden.
Die Grundlage für eine mehrspaltige Anordnung sind HTML-Tabellen. Eine einfache HTML-Tabelle sieht aus wie folgt. Darunter sehen Sie den HTML-Code für eine Tabelle mit 3 gleich breiten Spalten und 2 Zeilen.
| | **Spalte 1** | **Spalte 2** | **Spalte 3** |
| **Zeile 1** | Zelle 1/1 | Zelle 1/2 | Zelle 1/3 |
| **Zeile 2** | Zelle 2/1 | Zelle 2/2 | Zelle 2/3 |
Zelle 1/1 |
Zelle 1/2 |
Zelle 1/3 |
Zelle 2/1 |
Zelle 2/2 |
Zelle 2/3 |
**Hinweis:** Die Breitenangabe ''
'' könnte man prinzipiell auch weglassen. Allerdings ist es meistens sinnvoll, die Breiten der einzelnen Spalten genau zu definieren. Anstatt einer Prozentangabe kann man auch die Breite in Pixeln angeben.
**Hinweis:** HTML bietet auch Layout-Möglichkeiten ohne Tabellen, namentlich die CSS-Positionierung. Allerdings sind zu deren Einsatz fortgeschrittene HTML-Kenntnisse notwendig.
===== Tabellen im Fragebogen =====
Nun ist es fast schon trivial, zwei Fragen nebeneinander zu platzieren:
| | **Spalte 1** | **Spalte 2** |
| **Zeile 1** | Frage Nr. 1 | Frage Nr. 2 |
Aber wie bekommt man die Fragen in die Tabelle? Ganz einfach, indem man die Tabelle um die Fragen herum schreibt. Dazu muss man die Tabelle genau an den Stellen unterbrechen, an denen eine Frage eingefügt werden soll. Nachfolgend noch einmal der Tabellen-Code für eine Tabelle mit einer Zeile und zwei Spalten.
**Hinweis:** Das ''table''-Tag im folgenden Beispiel definiert noch einige Attribute. Diese sind notwendig, damit der Browser keinen Rahmen um die Tabellenzellen zeichnet (''border="0"'') und die ganze Seite ausgenutzt wird (''width="100%"'').
Unterbricht man den HTML-Code in den Tabellen-Zellen (td), so erhalten wir 3 Teilstücke:
**Teilstück 1**
**Teilstück 2**
|
**Teilstück 3**
|
Zwischen diesen Teilstücken können nun beim **Fragebogen zusammenstellen** Fragen oder andere Bausteine (z.B. Texte, Bilder) platziert werden.
{{:de:create:scr.table-layout.code.png?nolink|Fragebogen-Elemente um Elemente nebeneinander zu platzieren}}
{{:de:create:scr.table-layout.example1.png?nolink|Elemente nebeneinander platziert - Beispiel 1}}
===== Optimierungen =====
==== Abstand ====
Falls Sie zwischen den Fragen etwas Abstand wünschen, fügen Sie einfach eine weitere Tabellenzelle ohne Inhalt ein.
{{:de:create:scr.table-layout.example2.png?nolink|Elemente mit etwas Abstand nebeneinander platziert}}
==== Breiten ====
Unter Umständen kann der Browser die definierten Spaltenbreiten nicht einhalten - nämlich dann, wenn der Inhalt breiter ist als angegeben.
* Enthält der Text ein langes Wort? In diesem Fall kann man das Wort mit ''
'' gezielt umbrechen\\ \\
Unter Zuhilfenahme des Unvereinbar-
lichkeitserklärungs-
dokuments
waren die Unzulänglich-
keiten schnell abzustellen.
* Wurde ein Bild nicht richtig skaliert? Bilder müssen vor dem Hochladen auf die richtige Größe skaliert werden. Im Internet zählt dabei ausschließlich die Größe in Pixel. Mehr dazu s. [[images|Bilder im Fragebogen]].\\ **Hinweis:** Wenn man ein Bild aus oFb löscht, skaliert und unter demselben Dateinamen hochlädt wie vorher, dann zeigt der Browser evtl. trotzdem noch die alte Version aus dem Cache. Ein "Seite neu laden" bzw. "Aktualisieren" hilft in diesem Fall weiter.
* Werden die Spalten trotz passenden Inhalts nicht in der richtigen Breite angezeigt? In diesem Fall kann man die Einhaltung der Spaltenbreiten via CSS erzwingen. Dazu muss man im ''''-Tag ein Attribut ''style'' ergänzen:\\ \\