Beiträge von Sempervivum

    Ich verstehe das jetzt auch nicht: Wenn ich jetzt miflo.de lade, sind die Bilder am Anfang sichtbar und keine Klasse "hidden" am figure.

    Dieses:

    Code
    <figure data-filter="dog" class="hidden">

    hatte ich aus miflo.de kopiert, allerdings aus der Inspektor-Ansicht, d. h. diese Klasse kann genau so gut durch JS gesetzt worden sein. Da habe ich wohl ein wenig Verwirrung gestiftet, tut mir Leid.

    Da die Bilder jetzt nach dem Laden sichtbar sind, ist aber jetzt alles OK, hoffe ich?

    Man ist ja neugierig und ich wollte wissen, wie man das auch mit PHP machen kann. Dies ist das Ergebnis:

    1. Mit String-Manipulation des HTML:

    2. Mit Parsen durch DOMDocument:

    Bei beiden wird zunächst das HTML als String in der Variablen $html definiert, z. B.:

    Code
    $html = '
        <nav>
            <ul>
                <li> <a id="navi01" href="index.php">Startseite</a></li>
                <li> <a id="navi02" href="master-1.php">Seite 1</a></li>
                <li> <a id="navi03" href="master-2.php">Seite 2</a></li>
            </ul>
        </nav>';
    $parent = $_SERVER["SCRIPT_NAME"];

    Beides erfordert keine Änderungen in der Elterndatei und ist nicht viel komplizierter als die Lösung mit Javascript.

    Zitat

    Dabei ist mir aufgefallen, dass ich viel weniger und verständlichen html- Code habe als zb. mit Bootstrap.

    Das ist genau der Grund, warum ich selbst kein Freund von Bootstrap bin. Freut mich, dass Du das auch so siehst.

    Was die Animation mit dem Gleiten zum Platz betrifft, so habe ich das schon bei Isotope gesehen, das Du am Anfang gepostet hattest. So weit ich das überblicke werden dort die Positionen nicht mit Flex oder Grid fest gelegt sondern komplett mit Javascript berechnet.

    Auf der einen Seite bin ich nicht so dafür, das Rad neu zu erfinden aber auf der anderen wäre es eine interessante Herausforderung, so etwas wie bei Ben Yahia selbst aufzubauen. Der Effekt, dass die Bilder von unten her eingleiten, wäre noch relativ einfach zu machen: Wie bisher die Positionen durch Flex festlegen lassen, aber direkt nach dem Filtern durch transform:translate die Position nach unten verschieben und dann mit transform: translate(0,0) an den endgültigen Platz gleiten lassen. Die Animation kann man dabei durch CSS machen lassen, man braucht nur die Positionen am Anfang und Ende zu setzen.

    Yep, weil diese Aufgabe hin und wieder vorkommt, habe ich etwas in der Schublade. Man kann das mit wenigen Zeilen Javascript erledigen:

    Code
            const url = document.location.href;
            document.querySelectorAll('nav li a').forEach(item => {
                if (url.includes(item.href)) {
                    item.classList.add('active');
                }
            });

    Den Selektor musst Du ggf. anpassen. Und basierend auf der Klasse "active" kannst Du dann den Link hervorheben wie Du es möchtest.

    Das liegt daran, dass das CSS ist und kein Javascript. Du musst es in deiner CSS-Datei eintragen. Und dann das JS so erweitern:

    (ungetestet)

    Das liegt daran, dass Du nur das img ausblendest, und nicht das gesamte figure. Bei dem figure wirkt dann das flex-basis: 350px; und es nimmt dennoch den Raum ein wie zuvor, auch wenn das Bild verschwunden ist. Setze das flex-basis für figure auf 0, dann wird es funktionieren.

    Noch besser: Setze im Javascript eine Klasse "hidden" und blende dann im CSS das figure aus:

    Code
    figure.hidden {
        flex-basis: 0;
    }

    Das war jetzt wirklich ein wenig eine harte Nuss!

    Der Schuldige ist das ul in dem Slider "Was sagen meine Kunden".

    Diesem weist Du eine Breite von 100% zu, damit es den umgebenden Container ausfüllt. Das Problem ist, dass dieses ul per Default ein padding hat. Das addiert sich zu der Breite, so dass sich mehr als 100% ergeben und die Breite des Browserfensters überschritten wird. Setze ich im Seiteninspektor das Padding auf 0 verschwindet die horizontale Scrollbar.

    Wenn Du den Filter, das wird ja wahrscheinlich eine Leiste mit Buttons werden, einfach im HTML dazwischen setzt, wird die Galerie nach unten rücken, Du brauchst nicht extra Platz zu machen.

    Zitat

    Vielleicht hast du ja eine Eingebung wie mich von den externen Scripts befreien kann.

    Du kannst sie einfach herunter laden, die URL im src-Attribut kopieren, in der Adresszeile des Browsers einfügen. Dann wird die Datei geladen und Du kannst sie mit Rechtsklick, "Speichern unter" lokal speichern.

    Ich nehme an, Du hast die Dateien von hier herunter geladen:

    GitHub - fancyapps/fancybox: jQuery lightbox script for displaying images, videos and more. Touch enabled, responsive and fully customizable.
    jQuery lightbox script for displaying images, videos and more. Touch enabled, responsive and fully customizable. - GitHub - fancyapps/fancybox: jQuery…
    github.com

    Und im dem Fall passt auch das, was Du auf deiner Seite hast. Warum es nicht funktioniert und wie man es korrigieren kann, habe ich nicht heraus gefunden. Aber anscheinend passt die Doku auf dieser Github-Seite nicht so richtig zu den Dateien, die dort liegen.

    In der Doku wird angegeben, dass man das über CDN einbinden soll, d. h. im Head:

    Code
        <link
              rel="stylesheet"
              href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.css"
              />

    Und am Ende des Body:

    Code
        <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.js"></script>
        <script>
          Fancybox.bind('[data-fancybox]', {
            // Your custom options
          });    
        </script>

    Versuche das zunächst so, wenn Du lieber unabhängig vom CDN sein willst, können wir das noch ändern.