Beiträge von Sempervivum

    Zitat

    Ich gehe davon aus, dass der include-Befehl die ausgelagerte Seite als ein Element einbindet und die Formatierungen übergeht.

    Nein, der include-Befehl wirkt im wesentlichen genau so wie wenn Du den Inhalt der ausgelagerten Datei per Copy&Paste an der Stelle einfügst, wo das include steht. Die Elemente bleiben dabei aufgeschlüsselt und können durch CSS gestaltet werden. Sicher gibt es eine einfache Erklärung, warum das bei dir nicht funktioniert. Poste am besten mal die URL der Seite.

    Das geht auch ohne leeren Platzhalter und zwar am einfachsten mit template-areas. Dabei kannst Du mit einem Punkt einen leeren Bereich definieren:

    Code
    footer .grid {
        display: grid;
        /* grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); */
        /* grid-template-rows: repeat(auto-fit, minmax(100px, 1fr)); */
        /* grid-auto-rows: 100px; */
        grid-gap: 20px 20px;
        grid-template-areas: "kontakt . social";
        grid-template-columns: 1fr 1fr 1fr;
    }

    Dazu musst du zusätzlich den beiden Containern ihren Namen zuweisen:

    Code
    footer .grid .kontakt {
        /* grid-colum: 1 / 2; */
        grid-area: kontakt;
    }

    Mit grid-column geht es auch, aber da hast Du einen Schreibfehler drin, das "n" am Ende vergessen.

    Leider funktioniert dann das responsive Verhalten nicht mehr so elegant wie bei den .card darüber, man müsste das Umschalten auf zwei- und einspaltig mit Mediaqueries realisieren.

    Ich sehe da am Anfang von fetch_data einen Fehler bei dem Pfeil:

    Der Grund, dass es nicht funktioniert, ist, dass das Javascript vor dem HTML-Element steht, d. h. wenn es ausgeführt wird, ist das Element noch nicht vorhanden.

    Mehrere Lösungen:

    1. Das Javascript hinter das HTML-Element platzieren.

    2. Ohne Javascript: Den Wert von visibility oben im PHP definieren und dann im HTML einfügen:

    PHP
    <?php
    $frame_200_visi = 'hidden';
    $frame_201_visi = 'hidden':
    if((isset($_GET['mod'])) && (($_GET['mod']) == "m")){
        $frame_200_visi = 'visible';
    }elseif((isset($_GET['mod'])) && (($_GET['mod']) == "n")){
        $frame_201_visi = 'visible';
    }
    ?>
    <div id="frame_200" style="visibility:<?php echo $frame_200_visi; ?>"> <!-- "m" Confirm record modified --

    Für #frame_201 dann das gleiche.

    3. Ebenfalls ohne Javascript: Eine Klasse, z. B. "visi" im PHP setzen, im HTML hinzu fügen und mit CSS die Sichtbarkeit steuern.

    Zitat

    Im normalen Dokumentfluss von HTML wird ja sowieso alles untereinander dargestellt ?

    Das trifft zu. Ich habe jedoch damit ein anderes Ziel verfolgt, nämlich dass der Header und das scrollbare main-Element die Höhe des Browserfenster genau ausfüllt. Anderfalls würde entweder eine Lücke oder eine zweite Scrollbar auftauchen. Und das lässt sich mit Flex am einfachsten erreichen, ohne dass Berechnungen und eine feste Höhe des Headers erforderlich sind.

    Die Lösung mit Padding hatte ich auch als erstes angedacht, war dann aber davon abgekommen, weil beim Scrollen mit der Scrollbar dieses Padding sichtbar und das Layout stören würde. Außerdem muss man sich dabei auf eine feste Höhe des Header fest legen, so dass das Ganze nicht mehr voll responsiv ist.

    Zitat

    Also beim Anspringen der bestimmen Bereiche wird ein Teil des Inhaltes von der fixierten Navigation verdeckt und der Nutzer muss zurück scrollen. Gibt es dafür eine Lösung ?

    Eine ganz einfache Lösung dafür kenne ich nicht. Hier habe ich etwas ausgearbeitet, was auf einem Muster basiert, das unser MrMurphy früher mal vorgestellt hat:

    Wahrscheinlich wäre eine Alternative, position: sticky; zu verwenden, dann wird der Header nicht aus Fluss genommen und das Problem müsste entfallen. Aber ich habe das noch nicht ausgearbeitet.

    Beide, justify-content: center;und align-items: center; , können ihre Wirkung nur entfalten wenn freier Raum vorhanden ist.

    Bei dem div.content_box_seite_1 ist das horizontal nicht der Fall, die Kindelemente füllen den Raum vollständig aus. Vertikal, je nachdem was es für ein Bild ist, schon und dann funktioniert auch die vertikale Zentrierung.

    Bei dem section#seite_1 ist jedoch in beiden Richtungen freier Raum da, horizontal weil Du dem div.content_box_seite_1 eine Breite von 50% gegeben hast, und die Zentrierung funktioniert.