Flexibles Layout mit unterschiedlichen Spaltenbreiten (Bootstrap Grid)

Raspberry Pi Monitor, EVICIV 7 Inch Touchscreen-Monitor Mit Micro-USB-Anschluss, HDMI-Anschlüsse, Verwendung Für Smart Home Center, Networked Ai Core, Roboterhirn, Media Center, Werkscontroller, Etc
Raspberry Pi Monitor, EVICIV 7 Inch Touchscreen-Monitor Mit Micro-USB-Anschluss, HDMI-Anschlüsse, Verwendung Für Smart Home Center, Networked Ai Core, Roboterhirn, Media Center, Werkscontroller, Etc
Unverb. Preisempf.: 135,31 €
102,86 €
Sie sparen 32,45 € (24%)

Jeder der mit Home Assistant anfängt, kennt das Problem, dass Lovelace einem nur eine begrenzte Möglichkeit bietet, was das Spaltenlayout angeht. Trotz der Vielzahl an Karten die einem spätestens mit HACS zur Verfügung stehen, sind die Spaltenbreiten doch statisch. Mit verschachteln von horizontal- und vertical-stack und dem Panel-Mode kann man das Layout zwar schon etwas durchbrechen, aber auch diese Variante teilt die Bereiche immer in gleiche Breiten bzw. Höhen auf.

Anders sieht es mit der Bootstrap-Grid-Card aus, welche Ihr über HACS installieren könnt. Hier haben wir die Möglichkeit mit Hilfe von Bootstrap CSS-Klassen die Höhen und Breiten der Zeilen, Spalten gezielter zu definieren.

Innerhalb der Bootstrap-Grid-Card kann man einzelne Zeilen über die Karte vom Typ “row” definieren. Spaltenbreiten innerhalb der Zeile kann man z.B. über das “class” Attribut mit Werten wie “col-3” oder “col-9” auslösen. Standardmäßig kann man von einer Spaltenanzahl von 12 über die volle Breite der Karte ausgehen.
die Klasse “col-3” gibt also an, dass man 1/4 der zur Verfügung stehenden Breite nutzen soll. “col-9” hingegen soll 3/4 des Platzes einnehmen.

Weitere Informationen zu den möglichen Klassen-Definitionen von Bootstrap findet Ihr unter folgendem Link:
https://getbootstrap.com/docs/4.0/layout/grid/

Der große Vorteil dieser Vorgehensweise gegenüber der Variante mit horizontal- und vertical-stack liegt darin, dass wenn die Breite des Displays für die Darstellung nicht ausreicht, die Bereiche sich weiterhin untereinander anordnen können.

Beispiel Code für ein Bootstrap-Grid mit verschiedenen Größenangaben

type: custom:bootstrap-grid-card
class: col-md-12
cards:
  - type: row
    class: justify-content-md-center
    cards:
      - type: vertical-stack
        class: col-md-3
        cards:
          - type: button
            tap_action:
              action: toggle
            entity: light.flurlicht_unten
          - type: button
            tap_action:
              action: toggle
            entity: scene.haus_verlassen
          - type: button
            tap_action:
              action: toggle
            entity: alarm_control_panel.master
      - type: vertical-stack
        class: col-md-9
        cards:
          - type: button
            entity: binary_sensor.carport_tor_geschlossen
            show_state: true
            name: Carport
            show_name: true
            show_icon: true
            tap_action:
              action: call-service
              service: switch.toggle
              service_data: {}
              target:
                entity_id: switch.carport_tor
  - type: row
    class: justify-content-md-center
    cards:
      - type: button
        tap_action:
          action: toggle
        entity: light.flurlicht_unten
      - type: button
        tap_action:
          action: toggle
        entity: scene.haus_verlassen
      - type: button
        tap_action:
          action: toggle
        entity: alarm_control_panel.master
  - type: row
    class: justify-content-md-center
    cards:
      - type: button
        tap_action:
          action: toggle
        entity: light.flurlicht_unten
      - type: button
        tap_action:
          action: toggle
        entity: scene.haus_verlassen
      - type: button
        tap_action:
          action: toggle
        entity: alarm_control_panel.master
      - type: button
        tap_action:
          action: toggle
        entity: scene.haus_verlassen
      - type: button
        tap_action:
          action: toggle
        entity: alarm_control_panel.master