Beiträge von Sempervivum

    Ja, das ist ein Demo, das ich für dich gemacht habe. Die Bilder bereitstellen und die Köpfe freistellen musst Du selber machen. Freistellen kann je nach Motiv eine Wissenschaft für sich sein, bist Du damit vertraut?

    Was die Positionierung betrifft, kann ich dich unterstützen, indem ich ein Tool baue, mit dem man die Köpfe verschieben kann und die Position ablesen. Du müsstest nur die Karte bereit stellen, vielleicht als Dateianhang, und die Größe der Köpfe angeben. Am einfachsten wäre es natürlich, wenn sie alle die selbe Größe hätten.

    Zitat

    bitte nehm jetzt diesen gerade ermittelten Text und nutze ihn um die richtige ID zu suchen und aufzurufen".

    Wenn ich dich da richtig verstehe, sollte dieses es tun:

    Ich habe jQuery verwendet, weil das Triggern eines Klicks u. U. problematisch sein kann, siehe z. B. hier:

    https://gomakethings.com/how-t…ck-event-with-javascript/

    Zitat

    Oder: Die Hundeköpfe jeweils in ein a-Tag einbetten und dieses auf der Karte absolut positionieren. Die a-Tag bilden jeweils einen Link, der die betr. Seite öffnet.

    Beides ist zunächst mal nicht responsiv.

    Diese Aussage muss ich revidieren: Verwendet man konsequent Prozentangaben für Abmessungen und Positionen, kann diese Lösung sehr wohl responsiv sein, siehe hier:

    http://webentwicklung.ulrichbangert.de/weltkarte-hunde.html

    Dafür würdest Du eval() brauchen, aber in den meisten Fällen ist das nicht zu empfehlen, sondern es gibt bessere Lösungen, so auch hier: ein Array oder ein Objekt verwenden:

    Danach bestand noch das Problem, dass die Höhe von linkem und rechten Logocontainer unterschiedlich war, abhängig von der Fensterbreite. Daher habe ich die Struktur umgestellt:

    Ich habe versucht, jetzt die selben Dateinamen für die Bilder zu verwenden wie Du.

    Ist das Fenster zu schmal, werden jetzt die Logotexte nicht mehr optimal dargestellt. Dies könnte man noch verbessern, indem man mit eine Mediaquery Bilder und Texte jeweils untereinander anordnen würde bei schmalem Fenster.

    Außerdem stimmen jetzt die Proportionen von linkem und rechtem Container nicht mehr. Der Grund ist, dass das a-Tag hinzugekommen ist. Dieses muss jetzt das flex-basis bekommen:

    Code
            a {
                text-decoration: none;
                flex-basis: 50%;
            }

    Und der Container:

    Code
           .container {
                display: flex;
                flex-direction: column;
                width: 100%;
            }
    Zitat

    Und wie kriege ich Text und Slogan nebeneinander mit jeweils 20 px Abstand?

    Das Problem ist, dass das img-Tag innerhalb von figcaption liegt:

    Code
                <figure class="logo left">
                    <figcaption>
                        <img class="logo left" src="images/logo-hauff.png" alt="Hauff Digital Logo" />
                        <h1>Digitale Verkaufslösungen für den Baustoffhandel</h1>
                    </figcaption>
    
                </figure>

    Es gehört außerhalb:

    Links:

    Code
                <figure class="logo left">
                    <img class="logo left" src="images/logo-hauff.png" alt="Hauff Digital Logo" />
                    <figcaption>
                        <h1>Digitale Verkaufslösungen für den Baustoffhandel</h1>
                    </figcaption>
    
                </figure>

    Rechts:

    Code
                <figure class="logo right">
                    <figcaption>
                        <h1>Ladenbau für den Baustoffhandel</h1>
                    </figcaption>
                    <img class="logo right" src="images/logo-hauff.png" alt="Hauff Ladenbau Logo" />
                </figure>

    Warum nicht auch für die Logos figure-Tags benutzen?

    Ich habe versucht, es anzupassen. Schau, ob es jetzt deine Anforderungen trifft:

    Dann würde ich das Template so erweitern:

    Das Ersetzen des Platzhalters <%= sound %> kannst Du sicher selber machen.

    Und der Eventlistener müsste dann so aussehen:

    Code
    $("bird-list-entry span.play-button").on("click", function() {
        var audiourl = $(this).data("sound");
        aud.src = audiourl;
        aud.play(); 
    });

    Der Grund ist, dass ich das Overlay absolut positioniert habe mit top:0 an der oberen Kante. Generell ist zwar zu empfehlen. auf abs. Pos. zu verzichten, aber wenn man Elemente überdecken will wie bei einem Overlay ist es doch angebracht.


    Man kann aber auch die Reihenfolge der Elemente bei Flexbox ändern durch das Attribut "order".

    Ich habe da mal schnell etwas ausgearbeitet. Hoffe, ich habe deine Beschreibung richtig verstanden. Farben, Abstände etc. muss Du noch verfeinern. Und natürlich die Bilder gegen deine austauschen. Wenn es nicht passt, melde dich wieder.

    Ich empfehle folgendes:

    Die URL der Sounddatei in einem data-Attribut ablegen. Leider sieht dein Template keinen Platzhalter dafür vor, aber Du könntest es so einfügen:


    Code
    .replace('<img src=', '<img data-sound="' + dein_objekt.audioPath + '" src=')

    Dann ein Audio-Objekt anlegen:

    Code
    var aud = new Audio();

    Und einen Eventhandler für Mouseover registrieren:

    Code
    $("bird-list-entry img").on("mouseover", function() {
        var audiourl = $(this).data("sound");
        aud.src = audiourl;
        aud.play(); 
    });

    Und bedenke, dass es auf Touch-Geräten kein Mouseover gibt. Besser wäre es, jeweils einen Play-Button anzubringen und damit den Klang zu starten.