Ankündigung

Einklappen
Keine Ankündigung bisher.

Dark-Mode (smartVISU v3.3.1)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Dark-Mode (smartVISU v3.3.1)

    Das Thema "darkmode" wurde glaube ich im Gitter-Chat schon mal diskutiert. Hier möchte ich einmal meinen Lösungsansatz zum Testen, Anpassen, Weiterentwickeln, ... vorstellen.

    Ich habe auf Basis vom "darkblue"-Design ein "lightdarkblue"-Design erstellt. Der Dark-Mode entspricht weitestgehend dem Darkblue-Design und der Light-Mode
    ist an das Ice-Design angelehnt.
    Das Ganze habe ich mit smartVISU v3.3.1 unter Windows und Android getestet. (Apple-Endgeräte habe ich nicht.)

    Zur Funktion:

    Über die CSS Media Query "prefers-color-scheme" wird je nach Einstellung für Light- oder Dark-Mode des Endgeräts das entsprechende Farbschema gesetzt.
    Im Stylesheet werden für die Farben CSS-Variablen verwendet. Die Farbschemata in der CSS-Datei kann aber auch jeder selbst nach Bedarf anpassen.

    Die Darkmode-Funktion lässt sich weitgehend mittels CSS umsetzen, aber ein wenig Javascript ist nötig, um die in smartVISU genutzten "jquery.mobile.icons", die
    als schwarze oder weiße Versionen vorliegen, dynamisch zu wechseln. Auch das Wechseln der Farben für die Widgets "basic.roundslider" und "device.rtrslider" läuft über Javascript.

    Damit die Icons in den eigenen Menüs ebenfalls gändert werden, muss das neue Icon-Handling benutzt werden.

    Das "rooms_menu.html" Beispiel im Ordner "_template"

    Code:
    <li data-icon="false">
    <a href="index.php?page=room_sleeping">
    <img class="icon"' src='{{ icon0 }}scene_sleeping_alternat.svg' alt = "Sleeping"/><h3>Sleeping</h3>
    
    <div class="ui-li-aside"></div>
    </a>
    </li>
    muss folgendermaßen abgewandelt werden:

    Code:
    <li class="ui-li-has-thumb" data-icon="false">
    <a href="index.php?page=room_sleeping">
    {{ lib.svgimg ('', 'scene_sleeping_alternat.svg', 'icon0', '') }}<h3>Sleeping</h3>
    
    <div class="ui-li-aside"></div>
    </a>
    </li>
    (Damit bei mir die Icons richtig positioniert werden, musste ich für <li> die Klasse "ui-li-has-thumb" angeben.)

    Dank des neuen Icon-Handling werden auch diese Icons jetzt beim Wechsel in den Dark-Mode und umgekehrt neu eingefärbt.

    In der angehängten zip-Datei sind alle nötigen Dateien zu finden (Ordnerstruktur ist wie bei smartVISU), die ausgetauscht bzw. ergänzt werden müssen (z.B. SVG-Icons für das Github-Logo), damit der Farbwechsel auch im Konfigurations- und Dokumentations-Menü funktioniert.​

    Gruß
    raman
    Angehängte Dateien

    #2
    Vielen Dank! Funktioniert prima, auch mit Apple-Geräten. Auch wichtig: auf alten Android 6- und iOS 9-Geräten, die dark mode noch nicht unterstützen, werden die Stile des hellen Designs korrekt angezeigt. Ganz alte Geräte, welche die custom-properties nicht unterstützen habe ich nicht. Die dürften auch nicht mehr sehr verbreitet sein.

    Gruß
    Wolfram

    Kommentar


      #3
      Im develop branch sind jetzt die allgemeinen Voraussetzungen für das flexible Styling eingearbeitet. Alles was in der oben enthaltenen ZIP-Datei in den Ordnern ./pages und ./icons ist, muss nicht mehr geladen werden, wenn man den develop branch verwendet und den dark mode umsetzen will.

      Gruß
      Wolfram

      Kommentar


        #4
        Vielen Dan für dieRückmeldung!

        Ich habe eine neue Version der zip-Datei im ersten Post angehängt. Die Ordner pages und icons sind nicht mehr dabei.
        Ich habe die CSS-Datei nochmal überarbeitet, da ich mit den Highcharts noch nicht zufrieden war.
        Im Anhang aus dem ersten Post sind jetzt zwei CSS-Designs zu finden, "lightdarkblue" (helles Design als Standard) und "darklightblue" (dunkles Design als Standard).
        Wer auch alte Android 6- und iOS 9-Geräte nutzt, sollte so die Wahl zwischen hellem und dunklem Design haben. (Habe ich aber nicht getestet!)

        Gruß
        raman

        Kommentar


          #5
          Ich habe auf smartvisu-newstuff ein neues Repository "designs" mit beiden Versionen angelegt:
          grafik.png
          Um den aktuellen Master mit dem dark mode zu erweitern, verwendet man "darkmode v3.3 til v3.3.1". Der Ordner "darkmode v3.3.b and above" ist für den aktuellen develop branch. Achtung: im develop branch wird weiter entwickelt und ich werde dann ggfls. auch den darkmode anpassen. Aktuell untersuche ich, ob die Integration der jQuery mobile icons und der Roundslider vereinfacht werden kann, so dass der dark mode rein über CSS gesteuert wird. d.h. ohne JavaScript auskommt.

          Gruß
          Wolfram

          Kommentar


            #6
            Im aktuellen develop branch von smartVISU ist jetzt eine Version mit überarbeiteten Roundslidern. Diese wurden komplett auf CSS umgestellt und in alle Designs integriert.

            Das Repo auf smartvisu-newstuff enthält eine dazu passende Version für die Designs mit dark mode.

            Gruß
            Wolfram
            Zuletzt geändert von wvhn; 07.03.2023, 23:17.

            Kommentar


              #7
              Könntet ihr mal ein paar Beispiele posten wie der Dark-Mode eigentlich ausschaut? Kann mir da grad nix drunter vorstellen. Green Hornet und andere sind eigentlich doch auch "Dark-Modes".

              Kommentar


                #8
                Die bisherigen Designs sind halt immer fest eingestellt. Das Design mit "dark mode" wechselt automatisch zwischen hellem und dunklem Design, wenn das Endgerät in den entsprechenden Modus geht.

                Kommentar


                  #9
                  Bei mir treten die gleichen Effekte wie hier beschrieben mit dem Wechseln der jquery-Icons mittels Javascript auf.

                  https://knx-user-forum.de/forum/supp...54#post1856054

                  Update 19.03.23:

                  Ich habe die Designs "darklightblue.css" und "lightdarkblue.css" um die notwendigen jquery-Icons ergänzt. Das Umschalten der Farben mit dem aktuellen develop branch geht damit jetzt rein CSS-basiert und es ist kein Javascript oder eine Änderung innerhalb von smartVisu mehr nötig.
                  Die überarbeiteten CSS-Dateien habe ich hier angehängt.

                  Gruß
                  raman
                  Angehängte Dateien
                  Zuletzt geändert von ramann; 19.03.2023, 11:59.

                  Kommentar


                    #10
                    Noch eine Kleinigkeit:
                    Damit bei mir auf der Config-Seite oben links auch das mittlere der drei Symbole umgefärbt wird, habe ich in der menu.html die Zeilen 26 und 27 folgendermaßen abgeändert:

                    Vorher:
                    Code:
                    ​
                    <a id="{{ page }}_menu-docu" data-ajax="false" href="index.php?pages=docu&amp;page=index" onclick="linkAnimate(id)">
                        <img class="icon {{ pages == 'docu' ? ' icon1' }}" src="{{ icon0 }}edit_copy.svg"/></a>​
                    Nachher:
                    Code:
                    <a id="{{ page }}_menu-docu" class="icon1" data-ajax="false" href="index.php?pages=docu&amp;page=index" onclick="linkAnimate(id)">
                        <img class="icon {{ pages == 'docu' ? ' icon1' : ' icon0' }}" src="{{ icon0 }}edit_copy.svg"/></a>​​


                    Gruß
                    raman

                    Kommentar


                      #11
                      ramann,
                      super Idee, die Icons einfach mit einzubinden. Ich überlege mal, ob ich das für die anderen Designs übernehme.
                      Die Dateien sind jetzt wieder hochgeladen und die Änderung in der menu.html kommt mit dem nächsten Pull Request in den develop branch.

                      Gruß
                      Wolfram

                      Kommentar

                      Lädt...
                      X