Beiträge von Sempervivum

    Zitat

    Bei der alten Version geht die Drehung auch auf dem Smartphone ... wenn man auf das Logo tippt, dreht es sich wie ein Propeller, solange bis man auf einen anderen Platz tippt.

    Tatsächlich, ich bin überrascht! Geht mit der neuen Version genau so gut:

    http://webentwicklung.ulrichbangert.de/spinner.html

    Getestet mit Samsung-Browser und Chrome auf Android.

    Die Browserentwickler haben da eine brauchbare Übersetzung des hover nach touch gefunden.

    Zitat

    Kann man mit Flex-direction auch die Anzeige für Smartphone Landscape anderst gestalten wie für Portrait?

    Ja, Du brauchst dazu eine geeignete Mediaquery, die Orientierung des Bildschirms kannst Du abfragen und entsprechend flex-direction festlegen:

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

    Browsersupport scheint aber nicht so gut zu sein, für Apple-Geräte gar nicht, vielleicht besser mit Javascript abfragen.

    Zitat

    ich habe es jetzt mit flex versucht, aber das kommt auf dem Smartphone nicht so richtig (die icones kommen in einer Spalte neben dem Logo und diese Spalte ist dann höher wie das Logo).

    Deshalb habe ich die icones mal vorläufig unter das Logo gesetzt ... das sieht eigentlich ganz gut aus und ist auch auf dem Smartphone ok.

    Das ist ein gängiges Problem, dass die Desktop-Ansicht auf dem Smartphone weniger gut aussieht. Du kannst jedoch mit einer Mediaquery abhängig von der Fensterbreite problemlos zwischen beiden Darstellungen umschalten indem Du flex-direction änderst.

    Was die Drehung betrifft, so findet sie ja nur beim Hover statt und das gibt es auf dem Smartphone nicht.

    Das Problem kenne ich, ich hatte es mal bei einem mehrstufigen Menü, das ich mit dem selben Verfahren gebaut hatte.

    Lösung, indem Du, wenn das Kind-Akkordeon aufgeklappt wird, die Höhe des Eltern-Akkordeons korrigierst:

    Code
          panel.style.maxHeight = panel.scrollHeight + "px";
          var parent = this.parentNode;
          if (parent.classList.contains("panel")) {
            parent.style.maxHeight = (parent.scrollHeight + panel.scrollHeight) + "px";
          }

    https://jsfiddle.net/Sempervivum/gkzqvmf7/16/

    Mit addEventListener kannst Du eine Aktion beim Klick durchführen.

    Mit querySelektorAll kannst Du eine Nodelist, so eine Art Array, der drei Divs erzeugen.

    Dann eine Variable führen, die den Index des Elementes in der Nodelist angibt.

    diesen Index von Klick zu Klick um eins erhöhen und das alte Element unsichtbar und das neue sichtbar machen.

    Zum Nachschlagen empfehle ich Selfhtml.

    Ich hatte mir vorgestellt, die SVGs in den selben Container .icon zu legen und absolut zu positionieren, so dass sie übereinander liegen. Da es drei Bilder sind, musst Du jedes für 1/3 der Zeit, d. h. 33.33% anzeigen. Und wenn Du statt gezielter Klassen alle Pfade ändern willst, brauchst Du ebenfalls querySelectorAll und eine Schleife, denn es sind ja mehrere Pfade. Und musst den Punkt vor dem "path" weg lassen.

    Ausgehend von deiner ersten Version habe ich dies gemacht:

    https://codepen.io/Sempervivum/pen/RXoBmm

    BTW: Wenn wir bei Opacity sind, kann man mit wenigen Änderungen am Timing einen netten Übergangseffekt erzielen:

    https://codepen.io/Sempervivum/pen/oKYJRX

    var_dump() kann auch ein zweidimensionales Array ausgeben.

    Was in_array betrifft, so hängt die Auswertung davon ab, was Du haben willst. Du hattest ja den Wunsch, dass die $carray der Module für jede Kategorie getrennt gespeichert werden.

    Inzwischen glaube ich, dass ich deine Aussage aus Posting #1 jetzt besser verstehe:

    Zitat

    Es soll jedoch praktisch für jede Kategorie ein individueller Array erstellt werden. Wie ist das möglich? Danke schonmal!

    Lösung: Ein zweidimensionales Array, wie früher schon angeregt:

    Code
    require 'inclusions/action/preview/checkcategory.php';
    if (issset($carray[$categoryname])) $carray[$categoryname][]= $arrayst;
    else $carray[$categoryname] = [$arrayst];

    Schau mal, ob dir das weiter hilft.

    Siehe hier:

    https://wiki.selfhtml.org/wiki/JavaScript/Objekte/Array/map

    Ich hätte erwähnen sollen, dass Du die Überarbeitung am besten vor der Übergabe an die Bibliothek machst, dann ist es übersichtlicher. Würde dann etwa so aussehen:

    Code
    // Test ist dein originales Array
    var test2 = Test.map(function(item) {return item * 200;});

    Dann das neue Array test2 übergeben:

    Nein, so einfach ist es leider nicht. Du musst schon Element-für-Element das Array abarbeiten und den jeweiligen Eintrag mi 200 mulitplizieren. Recht elegant geht das mit der Funktion map().