Business Intelligence – Was ist das eigentlich?

Beitragsbild

Autor*in: Nick Jäger


Dir sagt es vielleicht nichts, aber Business Intelligence kann dich retten!

Das Scenario

Dein bester Freund/deine beste Freundin und du führen ein Unternehmen. Alles läuft gut. Der Umsatz stimmt, eure Angestellten sind klasse und du kannst sogar 3 mal im Jahr nach Malle fliegen. Doch dann kommt der Tag, an dem alles kippt.
Es trifft euch wie der Schlag!

Wie ein Schlag in das Gesicht - Geschäftsführung ohne Business Intelligence
Quelle: gifimage.net

Die Einnahmen brechen zusammen, die Kunden sind unzufrieden und der Kaffee im Büro schmeckt nach Fuß. Was ist passiert?

Nach einem Jahr bergauf, kam das Tal. Und das war tief. Euch war nicht bewusst, dass ein bisschen Nachdenken hilfreich sein könnte. Ihr habt den Überblick über euer Unternehmen verloren und alle eure Entscheidungen nach dem Erfolg eures Kick-offs waren Grütze.

Doch das muss nicht sein!

Auch wenn ihr nicht die intelligentesten seid, können es immerhin Eure Methoden sein. Business Intelligence (BI) ist das Stichwort. Doch was ist das und wie funktioniert das?

Business Intelligence in 6 Sätzen

Geschäftsanalytik – wie es auf deutsch heißt – ist eine technische und betriebswirtschaftliche Methode zur Entscheidungsfindung. Es ist die erweiterte Analyse des Unternehmens und seines Umfelds. Diese ist in den meisten Fällen von Tools gestützt. Das Ziel dabei ist “Wissensfindung” oder auch “Knowledge Discovery”.[ 1 ] Denn bei diesen Analysen generierst du Wissen. Nicht nur fallspezifisch, sondern über dein ganzes Unternehmen und darüber hinaus.

Warum genau ist Business Intelligence nun so wichtig?

Um es kurz zu beantworten: BI-Tools können viel mehr gleichzeitig beachten, als du es jemals könntest.

Die längere Antwort:
Entscheidungen zu treffen ist keine leichte Aufgabe. Es ist schwierig. Aufgrund deines Bauchgefühls oder in Anbetracht weniger Faktoren diese zu fällen, ist gefährlich. Eine umfassende Analyse lohnt sich.

Zunächst scheint der Aufwand enorm. Ein Business Intelligence-Tool zu finden, zu bezahlen, aufzusetzen und zu pflegen kostet Zeit und Geld. – Das, was ihr gerade überhaupt nicht habt. – Aber sobald es läuft, kann es euch in so gut wie allen Bereichen helfen.
Es wird euch ermöglicht durch komplexe Zusammenhänge durchzusteigen. Und nachdem ihr diese verstanden habt, könnt ihr nicht nur reaktiv, sondern auch proaktiv handeln.[ 2 ]

Nicht überzeugt? Dann schau mal bei BI-SURVEY.com vorbei – vorsicht Englisch! Dort wird dir der Nutzen auf dem Silbertablett präsentiert.

Befragung zum Nutzen von Business intelligence-Tools in Unternehmen
Befragung zum Nutzen von Business intelligence-Tools in Unternehmen | Quelle: BARC (Business Application Research Center)

Die Grundlagen von Business Intelligence

Vier Schritte trennen Dich und deinen Kumpel/deine Kumpeline vom erneuten Erfolg.

Wie Du sehen kannst, hat BI viel mit Daten zu tun. Doch keine Angst, viel Arbeit kann dir abgenommen werden.

Daten Sammeln und aufbewahren

Grundlage für jede Analyse sind Daten. So ist es auch bei der Geschäftsanalytik. Je nach Ziel deiner Analyse brauchst du sowohl interne, als auch externe, Daten.
Bevor Ihr also mit Analysen beginnt, heißt es sammeln, sammeln und noch mehr sammeln!

Daten sammeln
Quelle: gifimage.net

Natürlich sammelt Ihr nur Daten, die euer Unternehmen oder euren Markt betreffen. Aber lasst euch nicht dazwischen funken! Denn Grundsatz ist: Je mehr Daten Ihr sammelt, desto mehr könnt Ihr am Ende auswerten.
Wenn Ihr Daten(-quellen) habt, müssen diese natürlich auch bewahrt werden. Dafür eignen sich Datenbanken beziehungsweise ein Data Warehouse. Sobald ihr genügend Daten zur Verfügung habt, könnt Ihr mit dem nächsten Schritt beginnen.

Business Intelligence-Tool wählen und Daten aufbereiten

Je mehr ihr euch mit einem bestimmten Business Intelligence-Tool auseinander setzt, desto schneller könnt ihr euch in die Arbeit mit diesem stürzen. Falls ihr bei eurer Entscheidung ein bisschen Hilfe braucht schaut bei Gartner vorbei! Deren jährlicher Report “Gartner Magic Quadrant for Analytics and Business Intelligence Platforms” bietet euch einen umfassenden Überblick über den Markt.

Gartner Magic Quadrant für Analytics und Business Intelligence
Gartner Magic Quadrant für Analytics und Business Intelligence 2020 | Quelle: Gartner (Februar 2020)

Damit ihr die gesammelten Daten verwenden könnt, müsst ihr diese nun aufbereiten. Entweder ihr nutzt dazu das BI-Tool, für welches ihr euch entschieden habt oder ihr macht dies direkt an den Daten selbst. Letzteres kann jedoch schwierig sein. Insofern ihr also nicht darauf besteht an euren Daten direkt rumzupfuschen, lasst es!

Geschäftsrelevante Daten darstellen

Jetzt gehts ans eingemachte! Bevor ihr eure ersten qualifizierten Entscheidungen treffen könnt, müsst ihr die gesammelten und aufbereiteten Daten in einen Kontext bringen. Da kommt das Tool, aber auch euer Gehirnschmalz, ins Spiel. Auch wenn das Tool euch vieles abnimmt, müsst ihr überlegen, welche Verbindungen könnten für euch relevant sein und welche nicht. Das Tool stellt euch dann bspw. dar, wie stark die Verbindungen wirklich sind.
Was hängt zusammen? Was beeinflusst was? Es gibt Unmengen an Möglichkeiten der Darstellung. Probiert euch aus!
Indem ihr mit dem Tool arbeitet, gewinnt ihr an Verständnis für euer Unternehmen bzw. den Markt.

Und dann habt ihr es! Nachdem ihr nun Monate euer Unternehmen, die Mitarbeiter und den Markt analysiert habt, habt ihr es raus.

Euer Produkt ist Schrott!

Ihr realisiert, dass euer Produkt Schrott ist
Quelle: gifimage.net

Es besser machen, als es im Moment ist!

Nun heißt es: Alles besser machen. Das BI-Tool zaubert euch jetzt zwar keine Gelddruckmaschine ins Büro, aber es zeigt euch die Effektivität jeder Änderung im Detail.
Ihr kauft besseren Kaffee? Die Mitarbeiter werden produktiver. Ihr klaut Ideen bei der Konkurrenz und verkauft diese als eure? Eure Umsätze gehen hoch und die der Konkurrenz runter. Ihr landet im Gefängnis wegen Betriebsspionage? Doof, aber weil ihr das BI-Tool habt, kann sogar der Praktikant euer Unternehmen weiterführen.
Also was spricht jetzt noch gegen Business Intelligence in eurem Unternehmen?

Fazit

Natürlich ist das alles nicht so einfach, wie ich es jetzt dargestellt habe. Damit Business Intelligence wirklich gut funktioniert muss viel getan werden. Bis die oben aufgeführten Schritte alle durchgearbeitet sind, ist es ein weiter Weg.
Es dauert Monate, wenn nicht Jahre, bis Auswertungen über die Aussagekraft von simplen Analysen bzw. einem Blick auf eine Excel-Tabelle hinausgehen.

Doch es ist eine Investition in die Zukunft!

Die Zukunft mit BI
Quelle: makeameme.org

Je länger ihr mit einem solchem Tool arbeitet, desto umfassender wird der Nutzen.
Entscheidungen können, aufgrund von Daten, begründet werden. Der Überblick über alle Geschäftsbereiche wird zusammengeführt. Und ihr gewinnt immer mehr Nutzen aus den Daten, die in eurem Unternehmen über Jahre hinweg gesammelt wurden, aber nie genauer angesehen wurden.

Denn:

“There is significant hidden value locked away in corporate databases waiting to be discovered and exploited.”
– Loshin (2003, S.1)[ 3 ]

Quellen

Auf die [Hochzahl] klicken, um zum zugehörigen Absatz zurückzukehren.

[ 1 ] Klumbies, Hans (2019): Datengrundlagen für Entscheidungen schaffen. Online unter: https://www.mittelstandswiki.de/wissen/Geschäftsanalytik [Abruf am 21.07.2020]

[ 2 ] TABLEAU SOFTWARE, LLC (o.J.): Was ist Business Intelligence (BI)? Online unter:https://www.tableau.com/de-de/learn/articles/what-is-business-intelligence [Abruf am 23.07.2020]

[ 3 ] Loshin, David (2003) (Morgan Kaufmann Publishers), Business Intelligence: The Savvy Manager’s Guide, Getting Onboard with Emerging IT, Seite 1.


Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Content Management  (Sommersemester 2020, Andre Kreutzmann) entstanden.

Die besten Beiträge stellen wir Euch hier in den nächsten Wochen nach und nach vor.

Was sind Progressive Web Apps (PWAs)?

Beitragsbild

Autor*in: Pascal Wissner


Bestimmt bist du im Netz schon mal der Abkürzung PWA über den Weg gelaufen. Doch, wofür steht diese Abkürzung überhaupt? Was sind PWAs? Um es schnell auf den Punkt zu bringen: PWA steht für Progressive Web App. Jetzt bleibt nur noch die nächste Frage. Was sind Progressive Web Apps?

Im Rahmen dieses Beitrages erkläre ich dir die Grundlagen zum Thema PWAs. Am Ende dieses Beitrages erwartet dich ein Link zu einer Anleitung. Mit Hilfe dieser Anleitung kannst du dir im Handumdrehen eine eigene Progressive Web App erstellen. In relativ kurzer Zeit und ohne viel Aufwand kannst du erste Ergebnisse erzielen! Probier es doch mal aus.

Zunächst kämpfen wir uns durch ein bisschen Theorie. Wir schauen uns den technischen Aufbau und mögliche Funktionen von Progressive Web Apps an. Danach werfen wir einen kurzen Blick auf bereits erfolgreich umgesetzte PWAs. Zum Schluss zeige ich dir am Beispiel der Twitter PWA, wie du diese erfolgreich auf deinem Endgerät installierst.

Ob Laptop, Tablet oder Smartphone - der Inhalt einer Webseite muss heutzutage responsiv dargestellt werden können! Progressive Web Apps erfüllen diesen Punkt.

Ob Laptop, Tablet oder Smartphone – der Inhalt einer Webseite muss heutzutage responsiv dargestellt werden können! Progressive Web Apps erfüllen diesen Punkt.
Bild: pexels.com

PWA – Progressive Web App

Der technische Aufbau

Eine Progressive Web App besteht, wie viele Internetseiten heutzutage aus diesen drei wesentlichen Bestandteilen:

Auf Grundlage dieser drei Technologien, die eine unabhängige Plattform darstellen, sollen sich Web-Anwendungen an Zielgeräte so weit anpassen, dass die Nutzung möglich ist. [1]

In diesem Zusammenhang ist auch häufig die Rede von einem sogenannten “responsiven Design” einer Webseite. Responsive Webdesign stellt eine aktuelle Technik zur Verfügung, welche es ermöglicht mit Hilfe von HTML5 und CSS3 Media-Queries das einheitliche Anzeigen von Inhalten auf einer Website zu gewährleisten. Hierbei wird das Layout einer Website so flexibel gestaltet, dass dieses auf dem Computer- Desktop, Tablet und Smartphone eine gleichbleibende Benutzerfreundlichkeit bietet. Somit kann der Inhalt gänzlich und schnell vom Besucher aufgenommen werden. [2]

Was macht eine Webseite zu einer Progressive Web App?

Progressive Web Apps sind, anders als normale Webseiten, auf dem jeweiligen Endgerät installierbar. Durch diesen Vorteil, bieten sie eine App-ähnliche Erfahrung, wie man sie bereits von Programmen auf einem Computer oder aus Apps aus dem Apple AppStore oder Google Play Store kennt. Das bedeutet auch, dass eine Progressive Web App in einem bestimmten Umfang auch “offline”, also ohne aktive Internetverbindung funktionieren kann. Somit kann eine PWA auch als eine Art Symbiose aus einer responsiven Webseite und einer App beschrieben werden.

Eine große Rolle spielt ebenfalls die Performance deiner PWA. Die Ladegeschwindigkeit und User Experience ist das A und O für den Erfolg.

Kurz zusammengefasst: Ausgehend von einer gemeinsamen Code-Basie, funktionieren PWAs auf allen möglichen Endgeräten in unterschiedlichsten Browsern. [3]

Sowohl die Browser Google Chrome, Firefox und Microsoft Edge, sowie Apples Safari unterstützen, Stand heute (26.07.2020), die Nutzung von Progressive Web Apps. [4]

Bei der Erstellung einer Progressive Web App kommen dieselben Web-Technologien zum Einsatz, wie bei einer normalen Webseite auch. Nämlich HTML5, CSS3 und JavaScript.
Bild: pexels.com

Twitter – Eine erfolgreiche Progressive Web App

Als prominentes Beispiel für eine erfolgreiche Progressive Web App, kann ich dir die Twitter PWA empfehlen. Anstatt die App über den Google PlayStore oder Apple AppStore zu beziehen, kannst du auch einfach die PWA installieren. Über folgende Schritte bekommst du die schlanke App-Web-Version von Twitter über den Browser Google Chrome installiert:

Twitter PWA auf einem PC oder Laptop

Wenn du dich gerade am PC oder Laptop befindest, dann folge dieser Anleitung:

  1. Rufe auf deinem Endgerät die Webseite www.twitter.com auf.
  2. Nachdem du Schritt 1 durchgeführt hast, kannst du oben rechts auf die drei Punkte klicken.
  3. Jetzt wählst du den Punkt: “Twitter installieren” aus.
  4. Insofern alles korrekt geklappt hat, kannst du die PWA nun über eine Verknüpfung auf dem Desktop/Schreibtisch starten.

Twitter - Eine erfolgreiche Progressive Web App

Klicke oben rechts auf die drei Punkte und wähle „Twitter installieren“ aus:

Twitter - Eine erfolgreiche Progressive Web AppInstallierte Twitter PWA auf macOS in Google Chrome.
Klicke auf „Installieren“.

Twitter PWA auf einem Android Endgeräit installieren

Wenn du dich gerade an einem Android Smartphone befindest, dann folge dieser Anleitung:

  1. Rufe auf deinem Android-Endgerät die Webseite www.twitter.com auf.
  2. Nachdem du Schritt 1 durchgeführt hast, kannst du oben rechts auf die drei Punkte klicken.
  3. Jetzt wählst du den Punkt: “Zum Startbildschirm hinzufügen” aus.
  4. Installiere die Twitter PWA, indem du auf “Hinzufügen” klickst.
  5. Insofern alles korrekt geklappt hat, kannst du die PWA nun über eine Verknüpfung auf dem Homescreen starten.

Twitter

Twitter PWA auf einem Apple Endgerät installieren

Wenn du dich gerade an einem Apple-Smartphone mit dem Safari Browser befindest, dann folge dieser Anleitung:

  1. Rufe auf deinem Apple-Endgerät die Webseite www.twitter.com auf.
  2. Nachdem du Schritt 1 durchgeführt hast, kannst du unten in der Mitte auf den “Teilen…”-Knopf klicken.
  3. Als nächstes wählst du den Punkt: “Zum Home-Bildschirm” aus.
  4. Installiere die Twitter PWA, indem du auf “Hinzufügen” klickst.
  5. Insofern alles korrekt geklappt hat, kannst du die PWA nun über eine Verknüpfung auf dem Homescreen starten.

Twitter

Probiere es gerne auf deinem eigenen Gerät aus!

Weitere Progressive Web Apps

Da es für PWAs keine Art AppStore oder PlayStore gibt, haben sich diverse Internetseiten mit der Sammlung von bekannten Progressive Web Apps beschäftigt.

Unter folgenden Links kannst du dir zahlreiche weitere PWAs anschauen:

https://pwa.bar/ oder https://findpwa.com/

Ob ich wohl dein Interesse wecken konnte und dich das Thema nun brennend interessiert? Dann schaue dir doch mal dieses übersichtliche Tutorial von Google an: https://codelabs.developers.google.com/codelabs/your-first-pwapp/#0

 

Eigene Meinung und Ausblick von PWAs

Ich finde die Idee und die umfangreichen Einsatzzwecke von Progressive Web Apps enorm spannend. Die Möglichkeit seinen Webseitenbesuchern auf einfach Art und Weise eine App-Version seines Internetauftritts zur Verfügung zu stellen, bietet großes Potential.

Gerade die Kosteneinsparung bei der Entwicklung von “nur” einer Webseite, die dann zusätzlich mit wenig Aufwand als App erscheinen kann, finde ich für Unternehmen sehr interessant. Solche Unternehmen, die PWAs einsetzen können mit einer höheren Verweildauer ihrer Kunden auf ihrer Webseite rechnen. Dies fördert zugleich die Conversion-Rate.

In Zukunft werden sicher mehr und mehr Unternehmen auf den erst kurzen Erfolgszug der Progressive Web Apps aufspringen. Die einzigen benachteiligten dürften hier der Google PlayStore und der Apple Appstore sein, da ihnen wohlmöglich ein gewisser Anteil In-App-Verkäufe weg brechen könnte.

Mich persönlich hat das Konzept einer PWA überzeugt und ich werde es bei einem meiner nächsten privaten Projekte auf jeden Fall in Betracht ziehen.

 

 

Literatur und Quellen

[ 1 ] Ruppert, Sven (2019): How-to: Progressive Web Apps praktisch erklärt. Online unter: https://entwickler.de/online/web/progressive-web-apps-tutorial-tipps-579830771.html [Abruf am 26.07.2020]

 

[ 2 ] wendweb GmbH (2020): Was ist Responsive Webdesign. Online unter: https://www.responsive-webdesign.mobi/was-ist-responsive-webdesign/ [Abruf am 26.07.2020]

 

[ 3 ] Google LLC (2020): Your First Progressive Web App. Online unter: https://codelabs.developers.google.com/codelabs/your-first-pwapp/#0 [Abruf am 26.07.2020]

 

[ 4 ] Vaadin Ltd. (2020): Progressive Web App Browser Support. Online unter: https://vaadin.com/pwa/learn/browser-support [Abruf am 26.07.2020]

Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Content Management (Sommersemester 2020, Andre Kreutzmann) entstanden.

Die besten Beiträge stellen wir Euch hier in den nächsten Wochen nach und nach vor.

Tutorial: Interaktive Karte für Stipendiaten an deutschen Hochschulen

Interaktive Karte: Stipendiaten an Hochschulen

Autor*in: Linda Khorami


Zur interaktiven Karte (Hochschulwebspace Linda Khorami)
Quellcode zum Download (Zip-Archiv)

Stipendiaten an deutschen Fachhochschulen
One Pager – Stipendiaten an deutschen Fachhochschulen

1. Einleitung 

Im Rahmen des Seminars „Multimediasysteme 2“ wurde ein One Pager zum Thema „Stipendiaten an deutschen Fachhochschulen“ erstellt. Hierfür wurden Informationen des Statistischen Bundesamtes herangezogen. Die Daten stammen aus dem Jahr 2018. Bei der Deutschlandkarte handelt es sich um eine SVG-Datei von „amcharts“

Step by Step – eine Übersicht 

Die Realisierung des One Pager kann in mehrere Schritte unterteilt werden. Für die Umsetzung des Beispiels wurden Arbeitspakete im Wochenrhythmus formuliert. Dadurch war eine realistische Einschätzung des Arbeitsaufwandes möglich:

Zeitraum Tätigkeiten
 

 

 

Woche 1

Themenfindung

  • Allgemeine Recherche zu verschiedenen Themen
  • Themensammlung
  • Präzise Recherche zu einzelnen Themen
  • Thema wählen und benötigte Informationen zusammenfassen

Umsetzung prüfen

  • Fragen klären:
  • In welcher Form kann das gewählte Thema umgesetzt werden (Als Diagramm, Landkarte usw.)
  • Form wählen  ( z.B. Landkarte)
  • Geeignete Landkarte finden
  • Quellcode der SVG übersichtlicher gestalten bzw.      Aufräumen
 

 

 

Woche 2

Animationen und Layout

Recherche, um folgende Fragen zu beantworten:

  • Wie können Inhalte eingepflegt werden, ohne die Seite bzw. die Karte zu überladen?
  • Welche Animationen können dabei unterstützen?
  • Finale Festlegung der Animationen
 

 

Woche 3

Umsetzung

  • Umsetzung der Animationen
  • Quellcode erneut aufräumen
  • Funktionalität testen

Dokumentation der bisherigen Vorgehensweise

 

Woche 4

 

Kontrolle und Abgabe

 

Konzept

Ziel der Karte ist es Informationen zu dem Thema kompakt dazustellen und Studenten die Möglichkeit zu geben sich einen Überblick zu verschaffen. Hierfür werden folgende Informationen vermittelt: Anzahl der Stipendiaten sowie die Anzahl der Frauen und Männer die im Vorjahr ein Stipendium erhalten haben. Für die technische Umsetzung wird dabei HTML, CSS und JavaScript verwendet.

Besonderheiten im Code

Im Header der HTML-Datei befinden sich externe Libraries die eingebunden werden müssen, um gewisse Styles unabhängig von den Animationen umzusetzen. Dazu gehören z.B. die Schriftfarbe und die Navigationsleiste des One Pager, die mittels Bootstrap realisiert werden. Die Programmlogik ist mit JQuery umgesetzt, dazu ist im Header eine Library eingebunden, die auch für Bootstrap relevant ist.

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
      integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <!-- Bootstrap for Navigation-->

  <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
      integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous">
  </script> <!--jquery-->
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
      integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous">
  </script> <!-- popper externe Libary für Tooltips-->
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"
      integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous">
  </script>

Aufwand und Funktionalität 

Die Animationen des One Pager unterteilen sich in zwei Teile. Zum einen sind Animationen innerhalb der SVG-Datei und somit in der Deutschlandkarte eingebaut. Zum anderen wird eine Animation für die Infotext-Anzeige außerhalb der Karte verwendet, welche durch einen Klick auf das jeweilige Bundesland ausgelöst wird. Dabei verfolgen beide dasselbe Ziel: Informationen online übermitteln, ohne zu verwirren.

1.  Karte

Innerhalb der Deutschlandkarte wird beim hovern eine Animation ausgelöst. Wenn der Besucher mit der Maus über ein Bundesland fährt, ändert sich die Farbe des Bundeslandes und die Animation mit einer Zoom-Funktion wird ausgelöst. Dies dient zur Veranschaulichung sowie Verdeutlichung, damit der Besucher genau weiß, welches Bundesland gemeint ist.

Um die Farbe bei einem Mouse-Over zu verändern, kann z.B. der folgende Code verwendet werden:

/* changing color while hovering*/

        .state:hover {

            fill: #004085;

            animation: zoominout 1s infinite;

        }

Diese Angabe gilt für alle Bundesländer, da diese zur Klasse “state” gehören.  Wie und wo eine Klasse vergeben werden kann, zeigt der folgende Code:

<path id="DE-BW" title="Baden-Württemberg" class="state" data-description="<ul><li>Stipendiaten: 1.375 </li><li>Frauen: 666</li><li>Männer: 709</li</ul>"

1.1 Animation der Karte umsetzen

Beim initialen mouse-over wird das Bundesland innerhalb einer Sekunde von der Originalgröße um 2% auf und wieder zurück skaliert. Die Animation kann mittels Keyframes umgesetzt werden und sieht aus wie folgt:

@keyframes zoominout {
            0% {
                transform: scale(1.0);
            }

            50% {
                transform: scale(1.02);
            }

            100% {
                transform: scale(1.0);
            }
        }

2. Infobox 

Durch die Infobox werden nähere Informationen vermittelt. Durch einen Klick auf das jeweilige Bundesland erscheint eine Infobox, in der die Gesamtanzahl der Stipendiatinnen und Stipendiaten sowie die Verteilung unter Männern und Frauen zu finden sind.

Die einzelnen Informationen zu den Stipendiaten sind in das “data-description”-Attribut der jeweiligen Bundesländer eingetragen. Das Attribut ist nicht Teil der SVG-Datei und muss manuell hinzugefügt werden.

<path id="DE-BW" title="Baden-Württemberg" class="state" data-description="<ul><li>Stipendiaten: 1.375 </li><li>Frauen: 666</li><li>Männer: 709</li</ul>"

Technische Umsetzung  der Ränder

Die Animation der Infobox kann mit zwei Keyframes umgesetzt werden. Die definierte Regel “beforeBorders” löst eine Animation aus, bei der ein Rahmen um die Infobox gezogen wird:

@keyframes beforeBorders {

          0% {

              top: calc(var(--border-width) * -1);

              left: 50%;

              bottom: auto;

              right: auto;

              width: 0;

              height: var(--border-width);

          }



          33% {

              top: calc(var(--border-width) * -1);

              left: calc(var(--border-width) * -1);

              bottom: auto;

              right: auto;

              width: calc(var(--border-width) + 50%);

              height: var(--border-width);

          }



          66% {

              top: calc(var(--border-width) * -1);

              left: calc(var(--border-width) * -1);

              bottom: auto;

              right: auto;

              width: var(--border-width);

              height: calc((var(--border-width) * 2) + 100%);

          }



          100% {

              top: auto;

              left: calc(var(--border-width) * -1);

              bottom: calc(var(--border-width) * -1);

              right: auto;

              width: calc(var(--border-width) + 50%);

              height: calc((var(--border-width) * 2) + 100%);

          }

      }

Für die Farbe der Ränder wird eine zweite Regel definiert, auch diese besteht aus vier Teilen:

/* border color */
@keyframes borderColors {

    0% {

        border-top-color: transparent;

        border-right-color: transparent;

        border-bottom-color: transparent;

        border-left-color: transparent;

    }



    33% {

        border-top-color: var(--color);

        border-right-color: transparent;

        border-bottom-color: transparent;

        border-left-color: transparent;



    }



    66% {

        border-top-color: var(--color);

        border-right-color: var(--color);

        border-bottom-color: transparent;

        border-left-color: var(--color);

    }



    100% {

        border-top-color: var(--color);

        border-right-color: var(--color);

        border-bottom-color: var(--color);

        border-left-color: var(--color);

    }

}

Technische Umsetzung  der Box

Mit Hilfe der JavaScript Funktion öffnet sich eine Infobox beim Klicken auf eines der Bundesländer und zeigt den Namen des Bundeslandes sowie die oben erwähnten Informationen über die Stipendiaten (siehe Kommentare).

$(function () {
          $('.state').on('click', function (e) {
              let box = $('.state-description-box'), // select the description-box
                  clonedBox = box.clone(true); // clone this box
              box.before(clonedBox); // put this cloned-box before the first box
              $('.state-description-box:last')
                  .remove(); // remove the old one to trigger the same animation again

              let title = $(this).attr('title'); // get the title from the clicked element
              let description = $(this).attr(
                  'data-description'); // get the description from the clicked element
              let fullText = '<h4>' + title + '</h4><p>' + description +
                  '</p>'; // put this text together
              $('#state_description').html(fullText); // write the text into the box
              $('#state_description').parent().show(); // show the box, just the first time
          });

      });

Gestalterische Umsetzung

Die Navigationsleiste, sowie der Footer werden in diesem Beispiel mittels Bootstrap verwirklicht.

Im Allgemeinen ist das Design sehr schlicht gehalten, damit die Informationen der Seite im Vordergrund stehen. Daher besteht die Seite hauptsächlich aus Blau- und Grautönen.

Eine Besonderheit bei der gestalterischen Umsetzung ist, dass für die SVG-Datei andere Attribute als für HTML Elemente verwendet werden.  Im Folgenden werden die einzelnen Klassen mittels Kommentare beschrieben:

       /* Setting for the states*/
       .state {

          fill: lightgrey;

          stroke: white;

          stroke-width: 1.5;

          stroke-linecap: butt;

          stroke-linejoin: miter;

          stroke-miterlimit: 10;

          stroke-dasharray: none;

          stroke-opacity: 1;

      }



      /* changing color while hovering*/

      .state:hover {

          fill: #004085;

          animation: zoominout 1s infinite;

      }



      /* Setting for description-box that appears after clicking on the Map */

      .state-description-box {

          --border-width: 0.2em;

          --animation-speed: 0.5s;

          --color: #004085;

          color: var(--color);

          transform: scale(1, 0.8);

          border: var(--border-width) solid transparent;

          animation: borderColors var(--animation-speed) steps(1) forwards;

          outline: none;

      }



      .state-description-box-inner {

          width: 100%;

          cursor: pointer;

          padding: 0.2em;

          background: #cce5ff;

          z-index: 1;

          border: solid var(--border-width) transparent;

      }

      /*Setting for the Footer */
      .footer {

          padding: 2.5rem 0;

          color: #999;

          text-align: center;

          background-color: #f9f9f9;

          border-top: .05rem solid #e5e5e5;

      }

 


Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Entwicklung von Multimediasystemen (Sommersemester 2020, Amy Linh Hoang, Prof. Dr.-Ing. Steinberg) entstanden. Verwendete Techniken sind HTML5, CSS3 und JavaScript.

Die besten Tutorials stellen wir Euch hier in den nächsten Wochen nach und nach vor.

React & Angular im Vergleich – Was führt dich zum Erfolg?

Beitragsbild

Autor*in: Melanie Hartkopf


Ihr habt euch für die Webentwicklung entschieden – Glückwunsch. Ein Feld, so überlaufen wie kaum ein anderes. Hinter jeder Ecke wartet ein neues Projekt mit dem die Entwicklung einfacher, effektiver, schneller und sicherer sein soll. In dem Dschungel an Möglichkeiten ist es leicht, sich zu verirren. Deswegen stelle ich euch heute zwei der beliebtesten Frameworkes in Sachen Single-Page-Webanwendungen vor und vergleiche. React oder Angular (nicht zu verwechseln mit der Vorgängerversion AngularJS) – welches Framework passt am besten zu dir?

Der Beitrag in der Übersicht

Du kennst dich bereits aus? Dann spring doch gleich an die Stelle, die dich interessiert!

Die Welt der Single-Page-Webanwendungen

Single-Page-Applications, kurz SPA unterscheiden sich von herkömmlichen Webanwendungen insbesondere in einem Punkt – es gibt nur eine einzige HTML-Datei. Hierauf können Daten verändert und/oder dynamisch geladen werden. Die Verarbeitung ist somit client-seitig. Soll also beispielsweise etwas durch User-Interaktion geändert werden, wird keine neue HTML-Datei geladen, sondern die Datei client-seitig verändert.

Ablauf SPA vs normale Webanwendungen
Ablauf einer Webanwendung vs. SPA – Quelle: Selbst erstellt

Veranschaulicht seht ihr den Vorgang in dieser Grafik. Am Anfang arbeiten normale Webanwendungen genau wie SPAs. Die allererste Anfrage wird vom Client an den Server geschickt, welche mit einer HTML-Datei antwortet. Während sich bei der SPA diese niemals ändert, wird bei einer herkömmlichen Webanwendung dieser Vorgang wiederholt (sieht rote Pfeile). Findet eine neue Abfrage mittel POST statt, wird auch eine neue HTML-Datei von dem Server an den Client geschickt – und die Seite lädt neu. Bei SPAs (siehe grüne Pfeile) wird eine Anfrage mittels AJAX gesendet und mittels JSON wird die HTML Datei verändert.
Kein neues Laden, keine langen Wartezeiten. SPAs sind schneller und genau deshalb in der Webentwicklung immer beliebter.1 Nun aber zurück zu unseren SPAs Angular und React.

Angular & React – Was haben sie gemein?

Beide Plattformen sind Vorreiter in der Webentwicklung, genauer gesagt der Frontend-Entwicklung, da sowohl Angular, wie auch React eine Komponentenhierachie verwenden.

Kleiner Exkurs: Komponenten verwalten immer einen Teil einer View und können Unterkomponenten haben. Beide Projekte sind Open Source unter MIT Lizenz. Freier Zugang also. Auch auf die Community hinter beiden Plattformen könnt ihr euch verlassen.2 So glänzt insbesondere React mit inzwischen rund 149.000 Sternen auf Github. So gut wie jede Frage, die während der Entwicklung aufkommen wird, wurde bereits gefragt und beantwortet. Aber was zeichnet Angular und React aus? Und wer steht dahinter?
Wenn ihr einen schnellen Einblick über den Aufbau von Angular und React sucht, dann schaut am besten auf Stackblitz oder einer ähnlichen Seite vorbei. Dort könnt ihr ohne großen Aufwand ein Projekt mittels Angular oder React starten und euch mit den Strukturen vertraut machen, bevor ihr euch entscheidet.

Angular – Googles Framework 2.0

Hello World Aufbau von Angular
Hello World von Angular – Quelle: eigener Screenshot

So könnte auch euer erstes Projekt in Angular starten. Das Hello World der komplexen Ordnerstruktur von Angular.

Ihr fangt grade erst mit der Webentwicklung an und versteht schon jetzt die Welt nicht mehr? Ihr habt noch nie etwas von Angular gehört? Dann schaut dieses Video, in dem Angular simpel für Beginner erklärt wird und lest danach weiter.
Angular ist ein Framework von Google, welches 2016 auf dem Markt erschienen ist, es ist also relativ „frisch“. Allerdings ist Angular kein Neuling, denn schon lange vor Angular gab es AngularJS. Die Vorgängerversion erschien bereits 2010. AngularJS und Angular sind nicht kompatibel, da Angular ein komplett neues Konzept vertritt und auch in einer neuen Sprache geschrieben ist – TypeScript. Diese Sprache wird auch in der Entwicklung mittels Angular verwendet.3

TypeScript? Aber ich kann doch nur JavaScript? Muss ich für Angular eine komplett neue Sprache lernen?

Keine Sorge, Angular ist für jeden verwendbar. Zwar empfiehlt das Team von Angular, TypeScript zu verwenden, aber auch reines JavaScript ist möglich. Die Chancen, die TypeScript bietet, sind aber nicht zu verachten. Und der Unterschied zwischen TypeScript und JavaScript ist gar nicht groß. Der Name sagt schon alles, was ihr Wissen müsst. TypeScript arbeitet mit Typen, erkennt, wenn falsche Typen deklariert werden – und warnt, was JavaScript allein nicht tut.4 Ein schneller Einstieg gelingt euch beispielsweise mit diesem Kurs.
Angular verwendet das Model-View-View Model. Sagt dir nichts? Macht nichts, im nachfolgenden Video wird es schnell und simpel erklärt.

React – Facebooks mächtige Bibliothek

Hello World Aufbau von React
Hello World von React – Quelle: eigener Screenshot

Simple Ordnerstrukturen, verwirrender Code. So beginnt das Hello World von React.


Ein großes Fragezeichen steht über euren Köpfen, wenn Ihr React hört? Dann schaut am besten dieses Video als fixen Einstieg.
React ist genaugenommen gar kein Framework, sondern nur eine JavaScript Bibliothek. Geschaffen 2011, von niemand anderem als Facebook, ist React wohl der beste Indikator dafür, dass eine einfache Bibliothek mächtiger sein kann, als man denkt. Der wichtigste Unterschied zu einem Framework ist, dass React sich einzig auf die View Ebene beschränkt. Zwar ist React relativ simpel aufgebaut, es lassen sich aber viele weitere Bibliotheken sehr einfach integrieren.5
Hinzu bietet React eine JavaScript-Syntax-Erweiterung mittels JSX, was vergleichbar mit XML ist. Aber wieso? Das Ziel von JSX ist es, das komplette User-Interface mittels einzelner Komponenten nachzubauen, um HTML in JavaScript zu integrieren. Richtig gehört, die Realität ist bei React einmal komplett verdreht worden. Standardgemäß wird nämlich JavaScript in HTML integriert. So wird nicht nur der Code übersichtlicher, sondern auch DOM-Manipulation fast unmöglich gemacht.6

Was solltest du wählen?

Viel Input, aber immer noch keine klare Empfehlung. Ich entschuldige mich – auch dafür, dass ihr vielleicht noch immer eine klare Empfehlung erwartet. Denn leider ist es nicht einfach zu sagen, zu wem React und zu wem Angular passt. Ein paar einfache Tipps kann ich euch aber mit auf den Weg geben.

Logo von Angular
Angular Logo – Quelle: angular.io

Angular gilt im allgemeinen als einsteigerfreundlicher, sowohl für Neulinge in der Web-Entwicklungswelt, als auch für Entwickler, die bereits Erfahrungen mit Java oder C++ gesammelt haben. Aber auch React hat viele Vorteile und ist nicht umsonst das beliebteste Framework, ohne überhaupt ein Framework zu sein.

Logo von React
React Logo – Quelle: reactjs.org

Ein Anreiz für React ist der Virtueller DOM, wodurch alles deutlich schneller wird, Angular kann hier nicht mithalten. Hinzu ist React auch bei kleineren Projekten gut geeignet, Angular wirkt dahingehend schnell überladen. Durch die schnell hinzufügbaren Bibliotheken ist React sehr flexibel und auch bei großer Interaktivität nützlich. Angular ist durch seine vielen vordefinierten Funktionen eher funktionabel als flexibel und bei geringer Interaktivität besser.7

React arbeitet mit JSX, was für Einsteiger abschreckend wirken kann. Oft kommt viel Code in einer Datei zusammen. Angular hingegen arbeitet mit HTML, erweitert mit Direktiven. React arbeitet mit dem One-Way-Binding, wodurch die Applikation schneller und flüssiger wird, aber insbesondere wird das Debuggen erleichtert. Angular arbeitet mit einem Double-Blind-Feature, wird also auf der einen Seite etwas verändert, verändert sich die andere Seite ohne, dass dafür etwas getan werden muss. So wird die Seite sehr schnell und responsiv, ein wichtiger Faktor.8

Angulars größter Anreiz ist wohl das, was viele Neulinge auf den ersten Blick abschreckt – TypeScript. Diese Sprache ist allerdings nicht mehr aufzuhalten und wird immer mehr verwendet. Sie ist relativ schnell zu lernen und öffnet viele neue Möglichkeiten. Wenn nicht jetzt, wann dann?

React oder Angular? And the winner is …

Auf wen fällt meine Wahl? Das wird wohl immer davon abhängen, was ich mit meiner Single-Page-Webanwendung erreichen will und wie. Arbeite ich allein oder im Team? Wie ist die Vorerfahrung von jedem einzelnen und wie die Vorlieben? Was ist das Ziel des Projekts?

Eine richtige oder falsche Wahl gibt es kaum. Eher zählt das subjektive Empfinden jedes Einzelnen. Also, wie fällt deine Wahl aus? React oder Angular?
Erstellen Sie Ihre eigene Umfrage zu Nutzerfeedback.

Quellen

1 Domin, Andreas (2018): Was ist eigentlich eine Single-Page-Webanwendung? Online unter https://t3n.de/news/single-page-webanwendung-1023623/ [Abruf am 11.05.2020]

2 Schlemmer, Frederik (2019): Angular, React oder vue.js? Eine Entscheidungshilfe. Online unter https://www.adesso.de/de/news/blog/angular-react-oder-vue-js-eine-entscheidungshilfe.jsp[Abruf am 19.05.2020]

3 Gosebrink, Fabian (2017): Ein Überblick über Angular. Online unter https://www.digicomp.ch/blog/2017/01/16/angular-ein-uberblick [Abruf am 16.05.2020]

4 Tillmann, Janna (2017): Was ist eigentlich Typescript? Online unter https://t3n.de/news/eigentlich-typescript-859869/ [Abruf am 14.05.2020]

5 Österle, Jonas (2017): React — Eine Einführung in fünf Minuten. Online unter https://medium.com/brickmakers/react-eine-einf%C3%BChrung-in-f%C3%BCnf-minuten-515dc38ceb73 [Abruf am 12.05.2020]

6 Gude, Thomas (2016): React und seine Alternativen. Online unter https://entwickler.de/online/javascript/react-244922.html [Abruf am 12.05.2020]

7 Ventzke Media (2018): Angular vs. React – Ein ausführlicher Vergleich. Welche Bibliothek passt zu Ihrem Projekt? Online unter https://www.ventzke-media.de/blog/angular-vs-react-vergleich.html [Abruf am 19.05.2020]

8 Tillmann, Janna (2017): React vs. Angular – wann ist was besser? Online unter https://t3n.de/news/react-vs-angular-besser-845241/2/ [Abruf am 19.05.2020]


Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Content Management (Sommersemester 2020, Andre Kreutzmann) entstanden.

Die besten Beiträge stellen wir Euch hier in den nächsten Wochen nach und nach vor.

Tutorial: Visual Graphic Novel Animation

Tutorial: Visual Graphic Novel Animation

Autori*n: Julia Karaschewski


Vollansicht: Visual Graphic Novel Animation auf Codepen.io
Quellcodeansicht: Visual Graphic Novel Animation auf Codepen.io
ZIP-Datei zum Download (direkt von Codepen.io)

Das Konzept

Die Idee der Animation ist, ein erheiterndes, kleines Visual Graphic Novel zu erstellen, durch das der User mit visuellen Effekten durchgeführt wird.

Das Ziel ist, den User von Anfang bis Ende durch mehrere kleine Animationen zu führen, während er Interaktionen ausführt und Feedback zu den ausgeführten Aktionen erhält. Das Feedback besteht ebenfalls aus visuellen Effekten, sodass der User jederzeit weiß, wo und in welcher Ebene er sich befindet.

Die Führung durch das Visual Graphic Novel erfolgt visuell durch verschieden aufleuchtende Buttons. Durch sich farblich (türkis) abgrenzende Umrandungen der Buttons wird der User zu den gewünschten Aktionen gelotst, da diese am meisten auffallen (über Bewegung und Farbe).

Das Visual Graphic Novel besteht aus zwei Szenen, die der Nutzer frei wählen kann. Die Reihenfolge der Auswahl hat dabei keine Auswirkungen.

Inhaltsverzeichnis des Beitrags

Aufbau des Visual Graphic Novels

Es gibt 4 Ebenen:

  • 1. Start-Bildschirm
  • 2. Szenen-Wahl
  • 3. Home-Scene
  • 3. Outdoor-Scene
  • 4. End-Bildschirm

Die erste Ebene, der Startbildschirm, dient dem User dazu, das Visual Graphic Novel zu starten.
Auf der zweiten Ebene kann der User eine Szene (Home- oder Outdoor-Szene) auswählen, ohne jedoch das Szenenbild vorher zu sehen. Hier liest er nur den Text der Entscheidungsmöglichkeiten, was auch einen kleinen Überraschungseffekt bei der Auswahl geben soll.
Auf der dritten Ebene kann der User dann zwischen den beiden Szenen hin und her springen, so oft er möchte. Um das ganze unterhaltsamer zu machen, spricht die Figur einen Text. Die Sprechblase wiederholt sich hierbei unendlich oft, sodass der User den Text gut lesen kann, ungeachtete der Lesegeschwindigkeit.
Die vierte Ebene ist der Endbildschirm, wo sich ein “Thanks for playing” (DE: “Danke für das Spielen”) bei dem User verabschiedet. Auf dieser Ebene hat der User die Möglichkeit, das Visual Graphic Novel erneut zu starten.

Verwendete Programmiersprachen:

Die ganze Animation wurde auf Codepen erstellt. Für die Erstellung der einzelnen Animation/-en wurden verwendet:

    • HTML5
    • CSS3
    • JavaScript & JQuery

Um JQuery zu verwenden, muss dies bei den Codepen-Einstellungen erst mit diesem Link https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js importiert werden, wie auf der folgenden Abbildung:

Eigene Abbildung: Bei Codepen JQuery importieren
Eigene Abbildung: Bei Codepen JQuery importieren

Besonderheiten

Die Besonderheiten bei dem Visual Graphic Novel sind klein, haben jedoch einen großen Effekt und Einfluss.
Zunächst ist das Design schlicht gehalten, bzw. der Hintergrund und die Hauptfarbe der Buttons. Dadurch wird die Aufmerksamkeit des Users auf die Szenen(-bilder) und die einzelnen, visuellen Effekte gelenkt.

Die Effekte der Klasse ‘hint

Die Klasse ‘hint’ hat das Ziel, den User durch das Visual Graphic Novel zu führen. Der visuelle Effekt ist ein türkis-farbenes Pulsieren (in CSS definiert). Beim Startbildschirm (Ebene 1) wird die Aufmerksamkeit des Users somit vor allem auf den Start-Button gelenkt. Danach (Ebene 2) wird der Effekt “verschoben” und ist nun nur auf der Szenen-Auswahl zu sehen, damit der User weiß, dass er sich nun für eine der beiden Optionen entscheiden soll. Ist nun eine Szene ausgewählt (Ebene 3), wird der pulsierende Farb-Effekt auf die nicht ausgewählte Option verschoben, sowie den Stop-Button. Damit weiß der User zum Einen, dass die andere Option noch ausgewählt werden kann, und zum Anderen, dass jederzeit das Spiel nun beendet werden kann. Wird nun auf den Stop-Button geklickt, wird der Farb-Effekt erneut auf den Start-Button geschoben, damit der User nun die Möglichkeit erkennt, erneut auf Start zu klicken. Die Steuerung, wann der Farb-Effekt, bzw. die Klasse ‘hint’ wo hin verschoben werden soll, wird mit Hilfe der Buttons in JavaScript festgelegt. Der Effekt selbst wird mit CSS erstellt, mehr dazu unter dem Abschnitt Visuelle Effekte.

Die Figur und Objekte

Die Figur ist nicht nur eine Dekoration, sondern erfüllt auch einen Zweck: Ein Feedback an den User. Das Feedback ist simpel: Wurde sich nun für eine Szene entschieden, taucht eine Sprechblase von der Figur auf. Damit wird dem User gezeigt, dass die Szenen-Auswahl durchgeführt wurde und etwas passiert ist. Dabei wird der gesprochene Text in der Sprechblase unendlich oft wiederholt, damit der User jederzeit den Text erneut und so oft er will lesen kann. Des Weiteren erheitert der gesprochene Text der Figur (hoffentlich!) den User und hinterlässt somit einen positiven Eindruck. Die Figur wird in CSS mit der Klasse ‘figure’ definiert.
Die anderen Objekte / Graphiken dienen hier der Dekoration und erhöhen den Spaß-Effekt beim Umschalten der Szenen.

Der Wegweiser

Der Wegweiser (eine SVG-Graphik), der einzig allein in Ebene 2 auftaucht, besitzt eine wichtige Funktion: Das Wegweisen. Da Graphiken, bzw. Bilder, meist mehr für sich sprechen als Text, wird dem User vor dem Lesen der Optionen bereits gezeigt, dass nun eine Entscheidung auf ihn zukommt. Ein Wegweiser ist hierbei ein allgemein bekanntes Symbol, dass von dem User nicht falsch verstanden werden kann, und dabei schneller auffällt als der Text in den Optionen. Der Wegweiser wird mit der ID ‘#signpost’ in CSS definiert und mit Hilfe von JavaScript gesteuert. Mehr dazu unter dem Abschnitt Buttons & Option.

Grundbausteine

Da es in dem Visual Graphic Novel viele verschiedene Elemente gibt, die von JavaScript gesteuert werden und auf verschiedenen Instanzen auftauchen sollen, schließen verschiedene div-Container diese ein.

Body

body {
background-size:cover;
font-family: "Comic Sans MS", Helvetica, sans-serif;
border: 1px dashed #ffffff;
border-radius: 30%;
box-shadow:0px 0px 350px; #000000;;
background: radial-gradient(#28427B,#14213D, #0d001f);
justify-content:center;
background-position: center;

Im ‘body’ wird alles Wichtige wie background-size, background-color, sowie die Inhaltsplatzierung innerhalb des ‘bodys’ und die Schriftart definiert. Die border- und box-shadow-Einstellungen schaffen hierbei eine Abgrenzung von dem restlichen Browserfenster und begrenzen die Darstellungsoberfläche des Visual Graphic Novels.

Main-Content-Container

.main-content {
max-width: 700 px;
margin: 0em auto 0;
text-align: center;
max-height:500px;
overflow: hidden;

Der div-Container mit der Klasse ‘main-content’ ist dafür da, um den gesamten Inhalt (also alle Graphiken) als eine Einheit zu platzieren und sie durch JavaScript und JQuery zu steuern, d.h. einen Start-Bildschirm zu erschaffen. Damit kann der gesamte Inhalt in ‘main-content‘ mit einem Klick aus- und eingeblendet werden, wenn einer der Buttons gedrückt wird. Das geschieht dadurch, dass dieser Klasse eine Id ‘gamestop’ und ‘gamestart’ (definiert in CSS) mit der Eigenschaft ‘visibility:hidden’ zugewiesen und wieder entfernt wird.

<!-- die Id wird in JS genutzt, um einen Startbildschirm zu erschaffen --!>
<div id="gamestart" class="main-content"> <!-- wird genutzt, um den main-content zu steuern und zu positionieren -->
$(".start-button").on("click", function() {
$(".main-content").removeAttr("id", "gamestart");
$(".stop-button").on("click", function() {
$(".main-content").attr("id", "gamestop");

 

Mehr zu den Buttons später.

Illustration-Container

.illustration {
position: relative;
align-self: flex-end;
marfin: auto;
height: 250px;
width: 250px;

Der div-Container ‘illustration’ enthält alle Graphiken, bzw. SVG-Graphiken, und fixiert diese. Da nicht alle SVG-Graphiken eine geeignete Proportionalität besitzen, um zusammen dargestellt zu werden, hilft das Fixieren auch dabei, um sie gegenseitig aufeinander abzustimmen.

Person-type: Home-Body & Outdoor-Person

<div class="person-type home-body active"> <!-- hier ist die home-scene mit dazugehörigen Objekten -->
<div class="scenery">
<img src="https://image.freepik.com/free-vector/living-room-interior-with-panoramic-window-night-time_33099-1735.jpg" class="backgroundimg"/>
</div>
<div class="background.items">
<img src="https://image.flaticon.com/icons/svg/214/214283.svg" width="100px" height="400px"/>
</div>
<div class="foreground-items">
>img src="http://image.flatcon.com/icons/svg/198/198916.svg" width="65px" style="margin-left:-10%"/>
<img src="Http://image.flaticon.com/icons/svg/3145/3145435.svg" width="65px" style="padding-left:30%;"/>
</div>
</div>

Mit der Klasse ‘person-type‘ werden in CSS alle Kindelemente dieser Klasse definiert und in JavaScript zwischen den Szenen hin- und hergewechselt, wenn die jeweilige Option ausgewählt wird.

.person-type > div {
transform: scale(0);
opacity:0;
}
.person-type.active > div {
transform: scale(1);
opacity: 1;

Durch ‘person-type > div’ werden alle Kindelemente der Klasse ‘person-type‘ ausgewählt. Es gibt ‘person-type‘ einmal für die Home-Szene (inklusive der dazugehörigen Graphiken) und dann für die Outdoor-Szene. Wenn eine der Szenen ausgewählt wird, wird diese Szene durch ‘person-type.active’ (definiert in CSS) nach “vorne geschoben‘(transform:scale (1))’ und durch ‘opacity:1’ sichtbar gemacht. Die andere Szene wird durch ‘person-type > div’ nach “hinten geschoben ‘(transform:scale(0))’ und mit ‘opacity:0’ unsichtbar gemacht. Dadurch können beide Szenen an den gleichen Platz im Container geschoben werden, ohne dass sie sich gegenseitig verdrängen. Die Szenenauswahl wird durch den Button mit JavaScript ausgelöst. Darauf wird später in Buttons & Option noch mehr eingegangen.

Container Scenery & Backgroundimg

Der div-Container ‘scenery’ umfasst das Szenenbild (für jeweils die Home- und Outdoor-Szene). Mit dieser Klasse wird der Einblendungseffekt / Übergangseffekt beim Szenenwechsel in CSS mit ‘transition:’ definiert.

<div class="scenery">
<img src="https://image.freepik.com/free-vector/living-room-interior-with-panoramic-window-night-time_33099-1735.jpg" class="backgroundimg"/>
</div>

Der div-Container ‘backgroundimg’ wird in CSS definiert und erfüllt den Zweck, die Hintergrundbilder der Szenen auf die gleiche Größe zu skalieren und dem Bild mit ‘border-radius’ und ‘box-shadow’ eine Form und einen visuellen Tiefen-Effekt zu geben.

.scenery 7
transition: all 200ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
z-index: -2;
0/* Styled die Hintergrundbilder der Scenen */
.backgroundimg7
border-radius:50%;
margin-left:-73%;
width:626px;
height: 3356px;
box-shadow: 0px 0px 15px #000000;

Foreground-items Container

<div class="foreground-items">
<img src="https://image.flaticon.com/icons/svg/198/198916.svg" width="65px" style="margin-left:-10%;"/>
<img src="https://image.flaticon.com/icons/svg/3145/3145435.svg" width="65px" style="padding-left:30%;"/>
</div>

Der ‘foreground-items’ div-Container beinhaltet die Graphiken, die sich in den beiden Szenen jeweils weiter vorne befinden und bei einem Szenenwechsel später eingeblendet werden als die Graphik im Hintergrund und das Hintergrundbild.

.forground-items {
transition: all 300ms cubuic-bezier(0.68, -0,55, 0.265, 1.55) 200ms;
margin-top:100%;
}

Mit ‘transition:’ wird der Einblendungseffekt / Übergangseffekt dieser Objekte beim Szenenwechsel festgelegt.

Background-items Container

Der div-Container mit der Klasse “background-items” beinhaltet die eine Graphik (jeweils in beiden Szenen), die zu einem früheren Zeitpunkt als die Graphiken in dem ‘foreground-items container’ in der ausgewählten Szene auftauchen. Dies ist in CSS mit ‘transition:’ definiert, wie in der folgenden Abbildung zu sehen ist.

.backgrouznd-items {
transition: all 200ms cubic-bezier(0.68, -0.55, 0.265, 1.55) 100ms;
top: 23px;
}

Option-Wrapper

Der div-Container ‘option-wrapper’ beinhaltet beide Szenen-Optionen und umschließt diese, damit sie zusammen in einem Button erscheinen können. Außerdem wird mit dieser Klasse der div-Container per JavaScript “anvisiert”, bzw. mit einem Leuchteffekt versehen, damit dieser zum geeigneten Augenblick die Aufmerksamkeit des Users bekommt. Zu den Buttons unter Buttons und zu dem Leucht-Effekt unter Visuelle Effekte mehr.

<div class="option-wrapper">
<aclass="option active wobble-vertical-on-hover homeoption hint" data-option="home">
I'm gonna read a nice book and stay in. </a>
<a class="option wobble-vertical-on-hover outdooroption hint" data-option="outdoor">
I'm gonna explore the wide world and beyond! </a>
</div>

Buttons & Option

Die Klasse ‘option’ ist allen Buttons zugeteilt. Also jeweils dem Start- und Stop-Button sowie beiden Szenen-Optionen. Die Klasse ‘option’ regelt mit ‘transition:’ in CSS den Übergang der ausgewählten Option sowie den Style der einzelnen Optionen. Somit grenzen sich z.B. die Outdoor-Szene und Home-Szene innerhalb des ‘Option-Wrappers’ voneinander ab und erscheinen als zwei eigene Buttons. Mit ‘cursor’ wird zudem der Cursor über dem Button definiert.
Die Klasse ‘active’ definiert, wie die ausgewählte Option aussieht. Durch die Klasse ‘active’ verändert sich die Hintergrundfarbe und Schriftfarbe des Buttons (gelber Hintergrund, schwarze Schrift), wenn dieser angeklickt wird.

.option {
transition: all 200ms ease;
padding: 10px 10px 8px;
width: 50%;
border-radius: 50px;
cursor: pointer;
color: #ffffff;
} /* gibt aktiver Option style */
.active{
background: #FFB200;
pointer-events: none;
color: '000000;
}
.option:hover: {
text-decoration: none;
}

Bei der Szenenauswahl wird der ‘person-type’ der jeweiligen Option angesprochen, der bei beiden Szenen unterschiedlich ist und in der JavaScript-Funktion jeweils definiert ist, bzw. welche Elemente dazugehören. Der Wechsel der Optionen, sowie die Zuweisung der Klasse ‘active’, geschieht mit folgender Funktion in JavaScript:

$(".option").on("click", function() {
$(".person-type").removeClass(active");
$(".option").removeClass("active");
$(this).addClass("active");
var type = $(this).data("option");
console.log($(type));

Die beiden Person-Types (‘data-option’ in HTML) der Optionen, also ‘person-type home’ und ‘person-type outdoor’ in JavaScript, bestimmen, welche weiteren Grafiken / Objekte dargestellt werden. Dies ist definiert als if und else if (untere Abbildung) in der Funktion “click”, (obere Abbildung). Wird also die ‘option’ mit dem ‘type == “home”‘ (in HTML data-option) angeklickt, wird der Klasse ‘home-body’ die Klasse ‘active’ zugewiesen. Desweiteren werden damit alle benötigten Elemente für diese Szene eingeblendet, sowie nicht benötigte ausgeblendet, mit folgender Funktion:

setTimeout(function() {
if (type === "home") {
$(".home-body").addClass("active");
$("#signpost").css({"visibility": "hidden"});
$("#bubbletoggle1").css({"visibility": "visible"});
// Hier der Wechsel der Sprachblasen
$(".bubble2").hidden();
$(".bubble1").show();
$".stop-button").addClass("hint");
$(".homeoption").removeClass("hint");
}
<div class="option-wrapper ">
<a class="option active wobble-vertical-on-hover homeoption hint" data-option="home">
I'm gonna read a nice book and stay in.</a>
<a class="option wobble-vertical-on-hover outdooroption hint" data-option="outdoor">
I'm gonna explore the wide world and beyond! </a>
</div>

Der ‘Signpost’ ist eine Grafik, die in Ebene 2 eingeblendet wird, hier jedoch ausgeblendet werden soll. Mit der Klasse ‘hint’ wird eine farbliche (türkis-farbene) Umrandung um den Stop-Button gesetzt, damit der User darauf aufmerksam gemacht wird, dass er das Visual Graphic Novel ab jetzt beenden kann. Gleichzeitig wird diese Klasse der jetzt ausgewählten Option entzogen, da die Aufmerksamkeit des Users bereits auf diesem Button liegt. Die ID ‘#bubbletoggle1’ ist in einem anderen Abschnitt erklärt.

Der Start- und Stop-Button

Der Start- und Stop-Button dient dazu, einen Start-Bildschirm und einen End-Bildschirm zu erschaffen, sowie dem User die Möglichkeit zu geben, dass Visual Graphic Novel jederzeit zu verlassen. Dazu wird den beiden Buttons die Klasse ‘active’ gegeben, damit diese genauso wie die Szenen-Options reagieren (weiter oben beschrieben). Ebenso wird zum Zwecke der User-Lenkung und User-Aufmerksamkeit die Klasse ‘hint’ vergeben, die farbliche Effekte (türkis-farbene Umrandung) vergibt.

<span class="hint">
<div class="button hint" style="">
<a class="Start-button option wobble-veretical-on-hover hint">Star !</a>
<a class="stop-button option wobble-vertical-on-hover">Stop playing !</a>
</div>
</span>

Der Style der beiden Buttons wird in CSS festgelegt. Dafür wird die Klasse ‘buttons’ vergeben. Der Zweck der Klasse ‘hint’ wird im Abschnitt ‘Besonderheiten’ und die CSS-Definition unter Visuelle Effekte  mehr erläutert.

.button{
display: flex;
position: center;
margin:0en auto;
background: rgba(255,255,255,0.25);
border-radius: 50px;
padding: 5px;
max-width: 300px;
font-size: 15px;
line-height: 1.2;
} /* Wird genutzt, um per JS zu steuern, wann der Inhalt auftaucht, wenn die buttons gedrückt werden*/
#gamestart{
visibility:hidden;
}
#gamestop{
visibility:hidden;
}/* Danke-Text am Ende des Spiels */

Die ID ‘#gamestart{visibility:hidden;}’ und ‘#gamestop{visibility:hidden;}’ werden in JavaScript dafür verwendet, um beim Klicken der Buttons den ‘main-content’ einzublenden und beim Drücken des Stop-Buttons den ‘main-content’ auszublenden. Zur Übersichtlichkeit der Steuerung in JavaScript wurden also die beiden ID’s jeweils einzeln in CSS definiert, obwohl sie die gleichen Attributwerte besitzen. Die beiden Funktionen für den Start-Button und den Stop-Button sehen wie folgt aus:

$(".star-button").on("click", function() {
$(".main-content").removeAttr("id", "gamestart");
$(".thanks").css({"visibility": "hidden"});
$("#signpost").css({"visibility": "visible"});
// "hint" gibt dem User Hinweise, wo hingeklickt werde
$(".button").removeClass("hint");
$(".start-button").removeClass("hint");
$(".option-wrapper").addClass("hint");
});
//Funktion und eizelne Aktionen, die ausgeführt werde
$(".stop-button").on("click", function() {
$(".mnain-content").attr("id", "gamestop");
$(".bubble").hide();
$("#signpost").removeAttr("style", "visible");
$(".thanks").css({"visibility": "visible"});
$(".button").addClass("hint");
// wenn der stop-button geklickt wird, muss das lightni
$(".stop-button").removeClass("hint");
//hiermit wird die Klasse "hint" den beiden Scenen-Opt
$(".homeoption").addClass("hint");
$(":outdooroption").addClass("hint");
});

Die beiden Funktionen definieren auch, was beim Drücken des Buttons eingeblendet und ausgeblendet werden soll. Dies geschieht durch die Klassen und ID’s, die in CSS definiert sind (wenige Ausnahmen befinden sich als Attributwert in HTML).

Sprechblase

Die Sprechblase der Figur in beiden Szenen hat jeweils einen verschiedenen Text. Aus diesem Grund wurden einmal die Klassen ‘bubble1’, ‘bubbletoggle1’, ‘bubble2’, ‘bubbletoggle2’ vergeben und an beide jeweils die Klassen ‘bubble’ und ‘anim-typewriter’.

<div id="bubbletoggle1" class="buble1" style="visibility:hidden;">
<a lass="bubble bubble1 anim-typewriter "> Ah! That was a good desicion! Now a nice cup of tea...would you set the kettle on? </a>
</div>
<div id="bubbletoggle2" class="bubble2" style="visibilioty:hidden;">
<a class="bubble bubble2 anim-typewriter">What a lovely day, isn't it? Ans such charming strangeers visiting!</a>
</div>

Die Klasse bubble

Die Klasse ‘bubble’ ist dafür da, um die Sprechblase per CSS zu stylen. Die CSS-Attributwerte von ‘min-width’, ‘max-width’, ‘max-height’ sind hierbei besonders wichtig, da sie bestimmen, wie groß die Sprechblase werden kann, wenn der Text auftaucht. Je nachdem, wie lang der Text ist, muss natürlich auch die ‘min-width’, ‘max-width’ und ‘max-height’ angepasst werden. Wäre ‘max-height’ in diesem Fall kleiner als die festgelegten ’50px’, würde nicht der ganze Text auftauchen können.

.bubble {
z-index:4;
min-width: 0px;
max-width: 210px;
max-height: 50px;
font-size: 15px;
line-height: 1.2;
display: flex;
text-align: center;
position: absolute;
border-radius: 50px;
margin-right:auto;
margin-left: auto;
left: 85%;
righht:0;
top:50%;
padding:1px;

Des Weiteren ist die Klasse ‘bubble’ auch dafür da, um mit dem Stop-Button die Sprechblase an sich vollends auszublenden (siehe Abschnitt Buttons.

Die Klasse anim-typewriter

Diese Klasse ist in CSS definiert. Sie sorgt für den Effekt der auftauchenden Sprechblase, wo der Text nach und nach erscheint.

.anim-typewriter{
animation: typing 7s steps(8,end) intinite normal both;
-webkit-animation-duration: 7s;
}
@keyframes typing{
from{width: 0;}
to{width: 20em;}

Wichtig hierbei ist der Attributwert infinite, der leider etwas schwierig zu handhaben ist. Darauf wird in “bubbletoggle: Der unendliche Text” weiter eingegangen.

Die Klassen bubble1 und bubble2

Die Klassen ‘bubble1’ und ‘bubble2’ werden in JavaScript verwendet, um die jeweilige Sprechblase in der richtigen Szene einzublenden und auszublenden. Die Klasse ‘bubble1’ ist hierbei für die Home-Szene, ‘bubble2’ für die Outdoor-Szene. Aus- und eingeblendet wird die Klasse in JavaScript mit ‘$(.bubble1).hide()’ und ‘$(.bubble1).show()’. Da beide Szenen auch unterschiedlich helle Hintergründe haben, wird mit dieser Klasse in CSS auch die Farbe der Sprechblasen angepasst.

.bubble.bubble1{
background:rgba(255, 255, 255, 0.30);
padding: 6px 6px 4px;
}
.bubble.bubble2{
background:rgba(26, 22, 95, 0.55);
padding: 6px 6px 4px;

Bubbletoggle: Der unendliche Text

Eigene Abbildung: Der unendliche Text der Sprechblase
Eigene Abbildung: Der unendliche Text der Sprechblase

Der Text in den Sprechblasen wird unendlich wiederholt, um dem User das Lesen zu ermöglichen und zu vereinfachen, wann auch immer die Szene ausgewählt wird und unabhängig davon, wie schnell die Lesegeschwindigkeit des Users ist. Die Klassen ‘bubbletoggle1’ und ‘bubbletoggle2’ werden dafür verwendet, um den Text der Sprechblasen durch JavaScript (und CSS) in HTML mit ‘visibility:hidden’ und ‘visibility:visible’ unsichtbar und sichtbar zu machen. Dies ist sehr ähnlich wie das, was die Klassen ‘bubble’ und ‘bubble1’ (oder bubble2) schon machen. Hierbei gibt es aber ein Problem: Unendlich heißt unendlich. Die einzige Möglichkeit in diesem Fall, den sich unendlich wiederholenden Text in der Sprechblase unsichtbar zu machen, ist über eine extra ID und ein dazugehöriger Style-Attributwert in HTML, der in JavaScript gezielt angesprochen wird. Damit wird keine andere Klasse beeinflusst oder verändert, was später zu Komplikationen führen könnte. In JavaScript sieht das dann folgendermaßen aus: $(“bubbletoggle1″).css({visibility:”visible”}); für die Home-Szene und für die Outdoor-Szene $(“#bubbletoggle2”).css({“visibility:”visible”}); . In dem Abschnitt Buttons ist die gesamte Funktion erklärt und zu sehen.

<div id="bubbletoggle1" class="bubble1" style="visibility:hidden;">
<a class="bubble bubble1 anim-typewriter ">Ah! That was a good decision! Now a nice cup of tea...would you set the kettle on?</a>
</div>
<div id="bubbletoggle2" class="bubble2" style="visibility:hidden;">
<a class="bubble bubble2 anim-typewriter">What a lovely day, isn't it? And such charming strangers visiting!</a>
</div>

Visuelle Effekte

Die Klasse hint

Eigene Abbildung: Klasse hint beim Start-Button und Stop-Button
Eigene Abbildung: Klasse hint beim Start-Button und Stop-Button

Die User-Lenkung durch die Klasse ‘hint’ wurde vom Zweck und der Funktion her im Abschnitt Besonderheiten erläutert. Der Licht-Pulse-Effekt wird in CSS erstellt und definiert.

.hint{
-moz-border-radius: 200px/200px;
-webkit-border-radius: 200px 200px;
border-radius: 200px/ 200px;;
border:1px solid #52c7aa;
width: auto;
height:auto;
outline:none;
-webkit-animation-name: hintPulse;
-webkit-animation-duration: 2s;
-webkit-animation-interation-count: infinite;
}
@-webkit-keyframe hintPulse {
from { -webkit-box-shadow: 0 0 3px #0c2720; }
50% { -webkit-box-shado: 0 0 21px #52c7aa; }
to {-webkit-box-shadow: 0 0 12px #246E5B; }
}

Die Dauer der Animation ist mit ‘-webkit-animation-duration:2s;’ festgelegt. Der Farbwechsel (oder auch die Intensität) im Verlauf der Animation ist durch die ‘@-webkit-keyframes hintpulse’ definiert. Dabei wurden verschiedene Abstufungen des original Farbtons für die Intensität verwendet.

Der Wobble-Effekt

Der Wobble-Effekt wird durch die Klasse ‘wobble-vertical-on-hover’ in CSS definiert. Beim Hovern über ein Element mit dieser Klasse “wobbelt” jenes. Damit weiß der User, dass mit diesem Element interagiert werden kann. Die Definition und Animation ist in CSS festgelegt.

.wobble-vertical-on-hover:hover, .wobble-vertical-on-hover:focus, .wobble-verical-on-hover:active {
-webkit-animation-name: wobble-vertical-on-hover;
animation-name: wobble-vertical-on-hover;
-webkit-animation-duration: 1s;
animation-duration: 1.5s;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: 1;
-webkit-animation-interation-count: 1;
animation-interation-count: infinite;
} /* Bewegungen der Animation wobble, aufgeteilt nach Prozent */
@keyframes wobble-vertical-on-hover {
16.65% {-webkit-transform: translateY(8px);transform: translateY(8px);}
33.3% {-webkit-transform: translateY(-6px);transform: translateY(-6px);}
49.95% {-webkit-transform: translateY(4px);transform: translateY(4px);}
66.6% {-webkit-transform: translateY(-2px);transform: translateY(-2px);}
83.25% {-webkit-transform: translateY(1px);transform: translateY(1px);}
100% {-webkit-transform: translateY(0);transform: translateY(0);}
}

Mit der Klasse ‘wobble-vertical-on-hover’ und zusätzlich ‘:hover’, ‘:focus’, ‘:active’ wird festgelegt, dass sowohl beim hover, als auch so lange die Maus darauf ist der Effekt gilt. Mit ‘animation-iteration-count:infinite’ wird dieser Effekt so lange wiederholt, bis weder ‘hover’,’active’ noch ‘focus’ für dieses Element gilt, bzw. es dadurch nicht mehr ausgelöst wird. Mit ‘@keyframes wobble-vertical-on-hover’ wird die Bewegung nach oben und unten definiert/ festgelegt; also die Vektoren, wo sich das Element mit dieser Klasse an einem bestimmten Prozent(-punkt) der Bewegung befinden muss.

Und nun sind alle wichtigen Code-Abschnitte erklärt. Falls das Interesse an dem Quellcode (inklusive Kommentare darin!) vorhanden ist, muss nur wieder nach zum Seitenanfang gesprungen, die ZIP-Datei heruntergeladen und entpackt werden!


Dieser Beitrag ist im Studiengang Informationsmanagement an der Hochschule Hannover im Rahmen des Kurses Entwicklung von Multimediasystemen (Sommersemester 2020, Amy Linh Hoang,  Prof. Dr.-Ing. Steinberg) entstanden. Verwendete Techniken sind HTML5, CSS3 und JavaScript.

Die besten Tutorials stellen wir Euch hier in den nächsten Wochen nach und nach vor.