Ergebnis 1 bis 29 von 29

Thema: Formularfelder nebeneinander anordnen, mit Labels darüber

  1. #1
    Contao-Nutzer
    Registriert seit
    27.01.2010.
    Beiträge
    15

    Standard Formularfelder nebeneinander anordnen, mit Labels darüber

    Ich habe schon im Forum über das Problem mit dem Formularfelder nebeneinander setzen gelesen, aber noch nicht so eine richtige

    Antwort gefunden. Deshalb mein Anliegen:

    Die Felder sind jetzt alle übereinander, ich möchte nun daraus 2x2 machen und dabei die Label über den Eingabefeldern behalten. Doch

    irgendwie kommen die Label und Textfelder immer in einen Konflikt und verschieben sich ganz eigenartig, wenn ich mit float eingreifen

    will. Ich komme echt nicht mehr weiter. Es ist ein total einfaches Formular. Was mache ich falsch?

    Ich nutze übrigens ein tabellenfreies Layout und habe den Stand meines Formulares und meinen dazugehörigen CSS Teil angehangen.

    Danke,
    Frauke
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    was spricht denn gegen

    Code:
    input,label {
     float: left;
     display: block;
    }
    label {
     width: /* Feste Breite */
    }
    Sebastian

  3. #3
    Contao-Nutzer
    Registriert seit
    27.01.2010.
    Beiträge
    15

    Standard

    Hallo Sebastian,

    vielen Dank, aber leider setzt das alle Label links und die Eingabefelder (schön sauber) rechts daneben. Habe etwas rumgespielt, aber immer noch keine Lösung gefunden. Also die Label sollen jeweils über dem Eingabefeld stehen (siehe Abb. erster Beitrag) und diese Blocks nebeneinander mit 2x2.

    Gibt es noch andere Möglichkeiten?

  4. #4
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.756
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ein Tipp: Stell dein Beispiel irgendwo online. Es ist viel anstrengender, sich durch Code auf einem Bild durchzulesen, als wenn man an einem Live-Objekt z. B. via Firebug ne Idee ausprobiert und dann hier postet.

  5. #5
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo Frauke,

    Du solltest die Formularfelder für die rechte Spalte und für die linke Spalte jeweils in einem separaten <div> kapseln und diese entsprechend per CSS positionieren (floaten). Binde die zusätzlichen <div>-Elemente einfach mittels des Feldtyps "HTML" an den richtigen Stellen im Formulargenerator ein – dies sollte Dich zum Erfolg führen.

    MfG
    Peter

  6. #6
    Contao-Nutzer
    Registriert seit
    27.01.2010.
    Beiträge
    15

    Standard

    @ Nina: ist bisher nur auf nem lokalen Server, sonst gerne

    @ Peter: Danke, ich versuch's morgen gleich mal. Klingt auf jeden Fall nützlich.

  7. #7
    Contao-Nutzer
    Registriert seit
    27.01.2010.
    Beiträge
    15

    Standard

    Also die Variante von Peter hat super funktioniert. Ich habe also einfach den Code der Textfelder per Hand in HTML eingegeben und zwei div's erstellt. jetzt sitzt alles dort, wo es sitzen soll. Danke Peter!

  8. #8
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo Frauke,

    es besteht keine Notwendigkeit und auch kein Sinn darin, die eigtl. Formularfelder per Hand in einen Feldtyp "HTML" zu übertragen. Damit verlierst Du die Bindung der Felder an den Formulargenerator, was früher oder später zu ernsten Problemen führen dürfte. Wenn Du möchtest, dass Dein Formular korrekt funktioniert, solltest Du diese Änderung rückgängig machen. Arbeite bitte prinzipiell immer mit den im Formulargenerator zur Verfügung stehenden Feldtypen. Im konkreten Anwendungsfall geht es lediglich darum, die <div>-Elemente zur Positionierung mit dem Feldtyp "HTML" zusätzlich(!) zu den bereits bestehenden Formularfeldern in den Formulargenerator einzubinden.

    MfG
    Peter

  9. #9
    Contao-Nutzer
    Registriert seit
    01.02.2010.
    Beiträge
    15

    Frage

    Auf die Idee von Peter bin ich selber auch schon gekommen.
    Es gibt nur ein "kleines" Problem bei der Methode - der tabindex.

    Die meisten Nutzer verwenden die TAB-Taste um zwischen den Formularfeldern zu wechseln.

    Bsp.:

    |Vorname|(1) |Nachname|(2)
    |Adresse|(3)

    Wenn die Felder "Vorname" u. "Adresse" mittels div links u. das Feld "Nachname" rechts gefloated sind, springt man mit der TAB-Taste vom Feld "Vorname" erst zum Feld "Adresse" u. dann zu "Nachname".

    Man hat also folgende ungewünschte Reihenfolge: (1) -> (3) -> (2)


    Habt Ihr da Ideen?

  10. #10
    Contao-Nutzer
    Registriert seit
    22.02.2010.
    Beiträge
    19

    Standard

    Hallo

    Ich versuche auch vergeblich dass die Formularfelder nebeneinanderstehen und dass das "label" über den Feldern ("input") steht. Aber ich komm da nicht weiter. Wie ist diese Methode mit den <div> gemeint. Wo genau muss ich welchen html code eingeben? Hoffe es kann mir jemand helfen.

  11. #11
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.583
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hinsichtlich Tab-Index bzw. falls jemand auch nach diesem Feature sucht, hier das betreffende Ticket von vega.


    Zitat Zitat von zengo Beitrag anzeigen
    Ich versuche auch vergeblich dass die Formularfelder nebeneinanderstehen und dass das "label" über den Feldern ("input") steht. Aber ich komm da nicht weiter. Wie ist diese Methode mit den <div> gemeint. Wo genau muss ich welchen html code eingeben? Hoffe es kann mir jemand helfen.
    Du müsstest Dir im Formulargenerator VOR den betreffenden Feldern ein neues Element vom Feldtyp "HTML" anlegen und dort ein öffnendes Div-Tag eintragen; diesem Tag weist Du dann auch gleich die passende Klasse zur Formatierung mittels CSS zu, z.B. "<div class="c50l">". Idem dann für den schließenden Div-Tag ("</div>"), dessen Element im Formulargenerator dann entsprechend NACH den betreffenden Formularfeldern angelegt wird.

    Ein Beispiel, wie man das umsetzen könnte, findest Du z.B. hier.
    Geändert von xchs (17.04.2010 um 13:02 Uhr)
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  12. #12
    Contao-Fan
    Registriert seit
    12.11.2009.
    Ort
    Portugal
    Beiträge
    619

    Standard

    ist ein schon etwas älteres thema aber ich hol es nochmal hervor aus aktuellem Anlass.
    Eine Andere Möglichkeit müsste es doch sein das entsprechende Template anzupassen: darin ein div ums label+EIngabefeld machen mit der css klasse vom feld
    hab schon versucht das Template zu finden, jedoch finde ich es nicht.
    Es gibt diverse form_xx templates - darunter aber nichts was zu einer textfeldeingabe passen würde.
    Könntet ihr mir da einen tipp geben?
    danke
    lg
    karo

  13. #13
    Contao-Fan Avatar von JanoschSkuplik
    Registriert seit
    13.08.2009.
    Ort
    Raesfeld
    Beiträge
    536
    Partner-ID
    6909
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von karo Beitrag anzeigen
    Es gibt diverse form_xx templates - darunter aber nichts was zu einer textfeldeingabe passen würde.
    Könntet ihr mir da einen tipp geben?
    form_widget

  14. #14
    Contao-Fan
    Registriert seit
    12.11.2009.
    Ort
    Portugal
    Beiträge
    619

    Standard

    hey Janosch!

    Stimmt, es funtktioniert in der form_widget
    ist zwar nicht speziell für Textfeld (funkt. auch zb. für Textarea)
    mh. leider ist da wenig Code drin und er holt sichs von wo anders - deshalb weiß i a nit wie i die klasse vom input rausbekomm (die ich ja eingeben kann im formulargenerator)

    weiters werden in der form_widget auch nicht die <br> erstellt die nach jedem label/input ausgegeben werden. Würde die gerne rausnehmen.


    Code:
    <?php if (!$this->tableless): ?>
      <tr class="<?php echo $this->rowClass; ?>">
        <td class="col_0 col_first"><?php echo $this->generateLabel(); ?></td>
        <td class="col_1 col_last"><?php echo $this->generateWithError(); ?></td>
      </tr>
    <?php else: ?>
    <div class="testtest">
      <?php echo $this->generateLabel(); ?> 
      <?php echo $this->generateWithError(); ?><br>
    </div>
    <?php endif; ?>
    Lg karo

  15. #15
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Guck mal rechts neben dem generateWithError. Dort ist auch das <br>

    Ich mach das meißt so:
    PHP-Code:
    <?php if (!$this->tableless): ?>
      <tr class="<?php echo $this->rowClass?>">
        <td class="col_0 col_first"><?php echo $this->generateLabel(); ?></td>
        <td class="col_1 col_last"><?php echo $this->generateWithError(); ?></td>
      </tr>
    <?php else: ?>
    <div class="wrapper_<?php echo $this->id?>">
      <?php echo $this->generateLabel(); ?> 
      <?php echo $this->generateWithError(); ?>
    </div>
    <?php endif; ?>
    Dann hast du für jedes DIV eine entsprechende Klasse.

    Schau dir am besten auch mal das hier an: http://www.medamind.de/webdevelopmen...vidualisieren/
    Auch ganz nützlich

  16. #16
    Contao-Fan
    Registriert seit
    12.11.2009.
    Ort
    Portugal
    Beiträge
    619

    Standard

    oh cool vielen dank!!! auch der link ist hilfreich!

    jedoch gibt die ->ID die ID und nicht die klasse aus
    dh. ich habe dann wrapper_1, wrapper_2, wrapper_3 etwas unschön damit zu arbeiten
    -> class hab ich schon probiert und geht so leider nicht
    weißt du das vielleicht noch ? (wie man die klasse bekommt?)

    thx

  17. #17
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Das ist dann strClass.

    Also in dem Fall:
    PHP-Code:
    <div class="<?php echo $this->strClass?>">
    Oder auch wieder mit einem beliebigen Text davor, falls das div nicht die gleiche Klasse wie das label & das input haben soll.
    z.B.
    PHP-Code:
    <div class="div_<?php echo $this->strClass?>">

  18. #18
    Contao-Fan
    Registriert seit
    12.11.2009.
    Ort
    Portugal
    Beiträge
    619

    Standard

    Hey again!

    Danke für deine Antwort!
    Habs versucht, leider funktionierts nicht.
    Übrig bleibt die Klasse "div_" ohne der Klasse dahinter
    noch eine Idee?

    Lg
    Karo

  19. #19
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Was ist das denn für ein Formular?
    Über den Formulargenerator erzeugt? Auch dem Feld eine CSS Klasse vergeben? Habs damit grad getestet & bekomme die CSS Klasse ausgegeben, die ich dem Feld im Backend bei dem Formulargenerator eingetragen habe.

  20. #20
    Contao-Fan
    Registriert seit
    12.11.2009.
    Ort
    Portugal
    Beiträge
    619

    Standard

    ahjjjjjj zu doof
    tut mir leid, du hast recht, es funktioniert!
    hatte nur zu viel herumgetan und dann vergessen die klasse wieder reinzugeben
    auf jeden fall DANKESCHÖN!!!
    schönen abend

  21. #21
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    Also um Formulare mehrspaltig nebeneinander anzuordnen kannst Du auch die Erweiterung subcolumns verwenden.
    Dann bleibt nur noch das "Problem" mit den Labels
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  22. #22
    Contao-Nutzer
    Registriert seit
    24.02.2017.
    Beiträge
    179

    Standard Gibt es neue Möglichkeiten?

    Hallo zusammen,

    der Thread ist ja schon mäßig alt und bevor ich mir jetzt die Finger wund tippe, kurz die Frage: Gbit es inzwischen eine andere Möglickeit (Template, Add-In o.ä.), die es erlaubt, die Felder nebeneinander anzuordnen? Ich habe bisher nämlich nichts gefunden und die Threads, die ich gefunden habe, behandeln entweder nicht mein Problem oder sind böhmische Dörfer für mich.

    Wenn es nichts neues gibt: Ich habe das mit dem zusätzlichen HTML nicht wirklich verstanden. Ich habe es versucht (zugegebenermaßen mit TABLE anstatt DIV, weil ich kein Tabellenlos-ist-besser-Gläubiger bin), aber das hat nicht wirklich funktioniert. Die Felder stehen trotzdem untereinander.

    Hier ist, was ich gemacht habe:

    Elementtyp: Formular - Kontaktformular, tabellenloses Layout: nein
    Quellelement ID1:
    HTML-Code: "<table><tr><td>"
    Textfeld 1
    HTML-Code: "</td><td>"
    Textfeld 2
    HTML-Code: "</td></tr></table>


    Bitte beachtet: Ich bin kein IT-Profi und Contao-Anfänger, also bitte ich um etwas Nachsicht.

    Vielen Dank im Voraus
    robinhutter <><

  23. #23
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von robinhutter Beitrag anzeigen
    Ich habe es versucht (zugegebenermaßen mit TABLE anstatt DIV, weil ich kein Tabellenlos-ist-besser-Gläubiger bin), aber das hat nicht wirklich funktioniert. Die Felder stehen trotzdem untereinander.
    "Tabellenlos-ist-besser-Gläubiger" sollte es eigentlich nicht geben, denn es ist keine Frage von besser oder schlechter, sondern die Frage, ob mit einer Tabelle tabellarische Daten präsentiert werden - wenn ja, dann ist eine Tabelle genau das richtige. Ob in einem Formular die LABELs und INPUTs nun tabellarisch sind oder nicht, darüber könnte man streiten - ich finde sie sind es nicht.

    Die Beispiele hier sind was älter und da sich an dem HTML-Markup von Formularen die letzten Jahre ganz schön was verändert hat, mag das ein oder andere hier nicht mehr funktionieren.

    Wenn du "tabellenloses Layout" nicht aktiviert hast, dann müssten die Labels bereits links von den Inputs stehen. Zeige bitte mal einen Link auf das Problem. Die IMHO bessere Lösung wäre tabellenlos und dann mit CSS formatiert. Das erfordert natürlich CSS-Kenntnisse. Wenn du diese nicht hast, kannst du eigentlich nur fertige Themes benutzen. Wie man eine CSS-Datei erstellt und diese ins Layout einbindet, dabei können wir natürlich erstmal helfen, falls du das möchtest. Am besten ist es dabei, wenn du die CSS-Dateien nicht mit dem Backend-Stylesheet-Modul erstellst, da du von uns bereits fertigen Code gezeigt bekommst, welchen du in deine CSS-Datei einfügen kannst.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  24. #24
    Contao-Nutzer
    Registriert seit
    24.02.2017.
    Beiträge
    179

    Standard

    Fast vergessen. Vielen Dank für die Antwort. Ich hab mir einstweilen mal beholfen. CSS ist für mich immer noch ein schwieriges Thema. Aber ich habe inzwischen eine Lösung gefunden, mit der ich einigermaßen das bekomme, was ich will.

  25. #25
    Contao-Nutzer Avatar von miniA4kuser
    Registriert seit
    14.11.2013.
    Beiträge
    130

    Standard

    Dann wäre es auch schön, wenn du deine Lösung für die Nachwelt offenbarst.
    Tippfehler unterliegen nicht dem Copyright und können frei weitergegeben werden.

  26. #26
    Contao-Nutzer Avatar von mandrael
    Registriert seit
    29.06.2009.
    Ort
    Salzburg, Austria
    Beiträge
    226

    Standard

    Hallo,
    ich würde auch gerne Formularfelder nebeneinander anordnen (Vorname + Nachname, PLZ + Ort etc.).
    Wenn man ein Formularfeld mit einer Klasse belegt und float: left; width: 50% einstellt, wird es links positioniert, aber wie geht das mit dem rechten Feld?
    Vermutlich lässt sich das mit Bordmitteln von Contao lösen, oder?
    (Contao-Version 4.11)

    LG Michael

  27. #27
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.080
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Anordnung von Formularfeldern ist eigentlich immer CSS.
    Heutzutage würde ich das mit Flexbox oder CSS-Grid lösen. Float eigentlich nur, wenn ich ältere Browser unterstützen muss.

    Zitat Zitat von mandrael Beitrag anzeigen
    Wenn man ein Formularfeld mit einer Klasse belegt und float: left; width: 50% einstellt, wird es links positioniert, aber wie geht das mit dem rechten Feld?
    Na genauso.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  28. #28
    Contao-Nutzer Avatar von mandrael
    Registriert seit
    29.06.2009.
    Ort
    Salzburg, Austria
    Beiträge
    226

    Standard

    Hi,
    danke für die Antwort, ich habe flexbox probiert, aber es hat nicht wie gewünscht funktioniert.
    Schließlich habe ich das ganze klassischer umgesetzt. Da ich im Forum nichts gefunden habe, was ich direkt verwenden konnte, poste ich hier den Code, der mit rocksolid/tao funktioniert. Die Formulare werden in der main.css auf 75% Breite skaliert (desktop):
    Code:
    /* ab #4158 in main.css */
    .main-content input,
    .main-content textarea,
    .main-content select,
    .main-content fieldset {
    	width: 75%;
    }
    CSS-Code für zwei Formularfelder nebeneinander:

    Code:
    /* Formularfelder zweispaltig mit float */
    
    div.float1, div.float2 {
       float: left;
       clear: none;
    }
    
    @media screen and (max-width: 599px) {
    div.float1, div.float2 {width: 50%}
    }
    @media screen and (min-width: 599px) {
    div.float1, div.float2 {width: 37.50%}
    }
    
    input.float1, input.float2 {
       width: 100%
    }
    
    div.float1 {
       padding-right: 10px;
    }
    
    div.float2 {
       padding-left: 10px;
    }
    Formularfelder links und rechts werden mit der Klasse float1 und float2 belegt.
    In meinem Fall Vorname & Nachname bzw. PLZ & Ort.

    LG Michael

    Screenshot:
    formular_float_tao.png
    Geändert von mandrael (02.06.2021 um 01:07 Uhr)

  29. #29
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hier mal ein Beispiel mit Grid:
    Bildschirmfoto am 2021-07-21 um 18.31.45.png
    PHP-Code:
    .formbody {
      
    display:               grid;
      
    grid-template-columnsrepeat(auto-fitminmax(240px1fr));
      
    gap:                   1rem 2rem;
    }
    .
    widget-textarea {
      
    grid-column/ -1;
    }
    label {
      
    displayblock;
    }
    input,
    textarea {
      
    width:      100%;
      
    box-sizingborder-box;

    Ist auch responsive, 1-spaltig wenn kleiner als 240px.
    Siehe auch hier https://www.youtube.com/watch?v=qjJR3qYCd54
    Im Firefox kann man sich Hilfslinien für Grid (und auch Flex) anzeigen lassen, einfach auf Grid klicken, oder in den Reiter "Layout" gehen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Produkte zufällig anordnen
    Von Ale im Forum isotope
    Antworten: 4
    Letzter Beitrag: 11.02.2011, 20:21
  2. Backendmodule anordnen
    Von Rastafanda im Forum Entwickler-Fragen
    Antworten: 9
    Letzter Beitrag: 30.10.2010, 20:45
  3. Formularfelder nebeneinander anordnen
    Von typo im Forum Layout / Templates / Holy Grail
    Antworten: 21
    Letzter Beitrag: 12.01.2010, 09:49

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •