Kann man alles kinderleicht ergänzen:
https://jsfiddle.net/Sempervivum/gjk7m1p3/31/
Edit: Im jsfiddle wird es leider nicht vollständig korrekt angezeigt aber auf einer Testseite funktioniert es.
Kann man alles kinderleicht ergänzen:
https://jsfiddle.net/Sempervivum/gjk7m1p3/31/
Edit: Im jsfiddle wird es leider nicht vollständig korrekt angezeigt aber auf einer Testseite funktioniert es.
Zitat<main> soll über dem Image ngezeigt werden.
Das verstehe ich so, dass das <main> das Image verdecken soll, wenn man herunter scrollt?
Ich verstehe das Ganze nur ungefähr, aber nicht vollständig. Hast Du es vielleicht online, dass man es sich ansehen kann?
Kann man schon machen, ist aber offenbar nicht das, was einsiedler möchte.
Den Schiebeeffekt kannst Du erreichen, indem Du das ul mit der Nav nicht einfach ein- und ausschaltest mit display:none/block sondern seine Position in horizontaler Richtung, z. B. mit margin-left veränderst. (Ich empfehle dieses und nicht position-left weil ich erwarte, dass sich bei margin der umgebende Container, das nav, mit ausdehnt.)
Damit das Ganze dann auch animiert abläuft und nicht ruckartig, musst Du transition verwenden:
Mit diesen Lösungen mit :target konnte ich mich nie anfreunden, weil sie manchmal Nebeneffekte haben, denn der Browser scrollt ja u. U. auch zum Ziel des Links.
Für deinen Fall würde sich eine Lösung mit dem Checkbox-Trick anbieten. Lies z. B. hier:
Genau das meine ich. So wie es jetzt ist, kann es auch funktionieren, ist aber nicht besonders änderungsfreundlich, weil immer neu berechnet werden muss, z. B. auch, wenn man die Nav ein- und ausschaltet.
Habe den Screenshot vergessen:
Wenn ich zusätzlich bei dem ul die Breite auf 17em setze, stimmt schon mal die Breite. Dann hat man noch einen unerwünschten Umbruch drin. Man müsste die Berechnung der Breite für den Hauptcontainer anpassen, aber ich empfehle stattdessen, den Header dort heraus zu nehmen und mit flex-direction zwischen horizontaler und vertikaler Anordnung umzuschalten. Ich liebe diese Fummelei mit calc nicht und vermeide sie, wenn es irgend geht. Meistens kann man das Layout so gestalten, dass die richtigen Breiten automatisch durch Flex eingestellt werden.
Verstehe. Ich wollte zunächst vorschlagen, mit CSS abhängig von der Eigenschaft aria-expanded das flex-basis zu ändern, aber leider ist ja das nav-Element ein Elternelement und mit CSS nicht zugänglich.
Mögliche Lösungen:
Ersteres habe ich in den Entwicklerwerkzeugen versucht und funktioniert.
Da sehe ich in den Entwicklerwerkzeugen keine flex-basis von 17em sondern von 1em:
@media only screen and (max-width: 1499px) and (min-width: 851px)
#main-nav {
/* margin-top: 2rem; */
margin-bottom: auto;
flex-grow: 0;
flex-shrink: 0;
flex-basis: 1em;
}
(sturm-main-style.css Zeile 360)
Ändere ich es auf 17em, wird es wie von dir gewünscht dargestellt. Schreibfehler?
Versuche dieses CSS:
body {
margin: 0;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: space-between;
}
und dieses HTML:
<body>
<main contenteditable>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.
</main>
<footer>Der Fußbereich</footer>
</body>
Alles anzeigen
und prüfe, ob es dann das ist, was Du dir vorstellst.
(contenteditable nur, um das Verhalten leicht testen zu können.)
ZitatUnd da die Namen ja alle unterschiedliche lang sind, scheint mir die Umbruchvariante die hilfreichste
Flex kann durchaus mit unterschiedlichen Längen umgehen:
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:
Versuche, die drei Bestandteile des Absatzes in, z. B. span-Tags zu legen. Dann solltest Du mit Flexlayout und Mediaqueries die Anordnung umschalten können.
Ist mir auch schon aufgefallen, dass die Forenrichtlinien in der Versenkung verschwunden sind:
Zitat
- 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
- 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.
Die Lösung findest Du hier:
https://stackoverflow.com/questions/9334…perly-in-chrome
Das SVG-Bild ist eine Textdatei. Du kannst sie editieren und preserveAspectRatio="none" im svg-Tag hinzufügen.
ZitatDiese 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?
Damit bin ich jetzt nicht vertraut, aber IMO brauchst Du beim Senden nichts zu verändern, wenn Du es serverseitig machen willst. Nur das PHP-Skript ändern, d. h. parsen und HTML generieren.
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:
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.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.