Beiträge von Sempervivum

    Elemente je nach Fenstergröße untereinander oder nebeneinander anzuordnen, ist eine gängige Aufgabe bei einem responsiven Layout, wie z. B. hier:
    Flexbox in der Flexbox

    Unkonventionell ist lediglich der Ansatz des TO, dies über Zeilenumbrüche zu realisieren. Ebenfalls gebräuchlich ist dem gegenüber die Lösung, die ich in #5 beschrieben haben.

    BTW: Wenn man es denn mit Zeilenumbrüchen regeln will, kann man auch direkt das br-Element ein- und ausschalten:

    Ist mir auch schon aufgefallen, dass die Forenrichtlinien in der Versenkung verschwunden sind:

    Zitat
    1. Hilfe zur Selbsthilfe!
      • Der Hilfesuchende erhält zu dem Thema, bei dem er Hilfe braucht, Anregungen, nützliche Links und Erklärungen von den Helfern
    2. Es wird ungern gesehen und ist nicht zielführend wenn zu vielen Themen fertige Lösungen gepostet werden. Daher bitte unterlassen. Sonst behalten wir uns vor den User zu verwarnen.

    Aber: Ohne fertige Lösungen kein Applaus und kein Aufmerksamkeit.

    Zitat

    Diese Textbox soll bei "@media only screen and (max-width: 48em) " row ausgerichtet sein, also die Container sollen sich unter einander anordnen.

    Anscheinend gibt es da ein Missverständnis mit den Begriffen:

    row = nebeneinander

    column = untereinander

    Außerdem finde ich in der Mediaquery keine Anweisung für diese Textbox?

    Wenn Du mit JSON arbeitest, kannst Du nichts zusätzlich ausgeben, weil das die Syntax zerstören würde. Du musst die Antwort auswerten und ausgeben, z. B. so:

    Code
                success: function(data) {
                    // Die Antwort vom Server wurde bereits geparsed und steht
                    // jetzt nicht als String sondern als JS-Struktur zur Verfügung
                    console.log(data);
                    var ort = data.place;
                    var bundesland = data.state;
                    // jetzt stehen Ort und Bundesland in den Variablen zur Verfügung
                    // und können weiter verarbeitet und z. B. ausgegeben werden:
                    $('#output-data').html("Ort: " + ort + " Bundesland: " + bundesland);

    Alternativ könntest Du das Ganze auch serverseitig machen: Im PHP-Skript das JSON parsen und das gewünschte HTML generieren. Dann müsstest Du aber dataType:'json' im Ajax-Aufruf weg lassen bzw. durch 'text' ersetzen.

    Mit dem Code aus deinem ersten Posting warst Du schon auf dem richtigen Weg. Wenn Du dataType:'json' angibst, veranlasst jQuery bereits das Parsen und stellt die Daten in einer Javascript-Struktur zur Verfügung. Du kannst dich davon überzeugen, indem Du die Daten in der Console ausgibst. Aus dieser Struktur kannst Du die Daten einfach auslesen und Variablen zuweisen:

    Der Kern der Sache ist, dass man auf die sticky-Positionierung verzichtet und Nav und Main mit Flexlayout untereinander anordnet, dann gibt es keine Überlappung.

    Die Höhe des Body habe ich auf 100vh (100% der Fensterhöhe) gesetzt, damit man die Nav nicht aus dem Blickfeld scrollen kann. Gescrollt wird jetzt statt der ganzen Seite nur noch im Main-Container (overflow:auto). Dadurch bleibt die Nav immer sichtbar.

    Der Dank gebührt MrMurphy, der dieses Muster entwickelt hat.

    In der Doku von $.ajax steht:

    Zitat

    dataType (default: Intelligent Guess (xml, json, script, or html))

    Type: String

    The type of data that you're expecting back from the server.

    d. h. dieser Parameter definiert, welche Daten vom Server in Empfangsrichtung zurück erwartet werden. Mit dem Senden der Parameter hat das nichts zu tun. D. h. deine "datas" musst Du so wie sie sind an die Funktion übergeben.

    Vielleicht so:

    Allerdings weiß ich nicht genau, wie das mit der Tabelle gemeint ist.

    Zitat

    Ein Bildschirm kann doch nur eine bestimmte Breite haben, oder?

    Also müsste ich dann für jede mögliche Bildschirmbreite ein eigenes @media

    erstellen. Aber ich kenne nicht alle Bildschirmbreiten oder Höhen.

    Genau deshalb fragt man in aller Regel mit einer Mediaquery nicht eine bestimmte Breite ab, sondern legt eine Grenze mit min-width oder max-width fest und hat dann nur noch zwei Möglichkeiten: Fenster kleiner, dann wende diese CSS-Regeln an - Fenster größer oder gleich dann wende jene CSS-Regeln an.

    U. u. kann es mehr als einen Umschaltpunkt geben, aber für den Anfang sollte erst Mal einer genügen.

    Dafür gibt es mehrere Lösungen:

    Auf float verzichten und dem div mit dem Text display: inline-block und eine minimale Breite min-width zuweisen. Dann sollte der Browser beides untereinander darstellen, sobald die Fensterbreite zu klein wird.

    oder

    Auf Float verzichten und mit Flexlayout beides nebeneinander anordnen und mit einer Mediaquery bei einer geeigneten Fensterbreite auf Darstellung untereinander umschalten.

    Zitat

    mich würde das auch interessieren.

    Dann soll dir geholfen werden, bevor dieser Thread geschlossen wird. Informiere dich über Mediaqueries und Flexlayout:

    https://www.html-seminar.de/css-flexbox.htm

    https://wiki.selfhtml.org/wiki/CSS/Media_Queries

    Mit Flex kannst Du die Anordnung der Container fest legen, nebeneinander oder untereinander. Und mit Mediaqueries kannst Du zwischen beiden je nach Bildschirmbreite umschalten.