diff --git a/gulpfile.js b/gulpfile.js index caa7683..4f7d955 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -44,7 +44,16 @@ const input = { templates: 'source/templates', data: 'source/data/**/*.json', style: 'source/style/**/*.s+(a|c)ss', - code: ['source/code/hippie/variables.js', 'source/code/hippie/functions.js', 'source/code/hippie/global.js', 'source/code/variables.js', 'source/code/functions.js', 'source/code/global.js', 'source/code/**/*.js', '!source/vendor/**/*'], + code: [ + 'source/code/hippie/variables.js', + 'source/code/hippie/functions.js', + 'source/code/hippie/global.js', + 'source/code/variables.js', + 'source/code/functions.js', + 'source/code/global.js', + 'source/code/**/*.js', + '!source/vendor/**/*' + ], fonts: 'node_modules/@fortawesome/fontawesome-free/webfonts/**/*', art: { favicons: 'source/art/favicons/**/*.+(ico|png)', @@ -70,10 +79,10 @@ const output = { }; //Check for index file and deactivate demo content -if (fs.existsSync('source/screens/index.njk')){ +if (fs.existsSync('source/screens/index.njk')) { hippie.index = 'index.html'; } -if (fs.existsSync('source/templates/data.json')){ +if (fs.existsSync('source/templates/data.json')) { hippie.data = 'data.json'; } @@ -151,7 +160,7 @@ function style() { // Linting function styleLint() { var dir = output.reports; - if (!fs.existsSync(dir)){ + if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } var file = fs.createWriteStream(output.reports +'/sass-lint.html'); diff --git a/source/code/hippie/functions.js b/source/code/hippie/functions.js index f82d18b..a3b77dd 100644 --- a/source/code/hippie/functions.js +++ b/source/code/hippie/functions.js @@ -1,15 +1,55 @@ -"use strict"; +'use strict'; function setup() { - console.log('\n', hippie.brand, '\n\n'); - console.info('Debug information:\n\nHTML height is', htmlH, '\nBODY height is', bodyH, '\nVIEW height is', viewH); - - if($('#js_tph').length && viewHover) { + console.info('\n', hippie.brand, '\n\n'); + if (debugOn) { + console.log('Debug information:\n', 'HTML:', hippie.screen, 'BODY:', hippie.body); + } + if ($('#js_tph').length && viewHover) { // $('body').prepend("
"); $('#js_tph').addClass("hover_full_view_change"); } } +// MODULE Scroll navigation +function HippieScroll($el) { + 'use strict'; + // Toggle display on scroll position + // console.log('Scroll object added'); + this.check = function() { + // console.log('Scroll position checked'); + hippie.screen.y = Math.min($(document).scrollTop(), document.documentElement.scrollTop); + if (hippie.screen.y > initY) { + if (!initLeft) { + $el.parent().removeClass('magic'); + console.info('Initial viewport left'); + } + initLeft = true; + } else { + if (initLeft) { + $el.parent().addClass('magic'); + console.info('Initial viewport entered'); + } + initLeft = false; + } + } + // Add events to navigation elements + $('.js_scrolltop').click(function(event) { + event.preventDefault(); + $('html, body').animate({ + scrollTop: 0 + }, basicEase); + // console.log('Scrolled to top'); + }); + $('.js_scrolldown').click(function(event) { + event.preventDefault(); + var pos = Math.max(hippie.screen.dh, hippie.body.h) - hippie.screen.vh; + $('html').scrollTop(pos); + // document.documentElement.scrollTop = pos; + console.info('Scrolled down to', pos); + }); +} + // get document coordinates of the element // function getCoords(elem) { // let box = elem.getBoundingClientRect(); @@ -44,7 +84,7 @@ var Utils = new Utils(); // TEST function scrollNav() { - $('.nav a').click(function(){ + $('.nav a').click(function() { //Toggle Class $(".active").removeClass("active"); $(this).closest('li').addClass("active"); diff --git a/source/code/hippie/global.js b/source/code/hippie/global.js index c221269..8d39b3b 100644 --- a/source/code/hippie/global.js +++ b/source/code/hippie/global.js @@ -4,8 +4,8 @@ setup(); // DOM ready // ----------------------------------------------------------------------------- -$(document).ready(function(){ - "use strict"; +$(document).ready(function() { + 'use strict'; // logPerf('DOM ready.'); @@ -17,16 +17,16 @@ $(document).ready(function(){ // Displays explanation popup $('.js_pop').hover( - function(){ - // if($(this).attr('emmet')){ + function() { + // if ($(this).attr('emmet')) { // // } $(this).next('.exp_pop').show(); - }, function(){ + }, function() { $(this).next('.exp_pop').hide(); } ).mousemove( - function(event){ + function(event) { $(this).next('.exp_pop').css({ 'top': event.pageY - $(this).next('.exp_pop').outerHeight() - 4, 'left': event.pageX + 8 @@ -39,14 +39,14 @@ $(document).ready(function(){ // WIP Activates layer with explanation elements // Besser ::after oder ::before benutzen - $('.js_showmeta').click(function(e){ + $('.js_showmeta').click(function(e) { var $wrap, $pop; - if(expMode !== true){ + if (expMode !== true) { expMode = true; - $('.js_pop').each(function(i, e){ - if($(this).css('position') === 'static'){ + $('.js_pop').each(function(i, e) { + if ($(this).css('position') === 'static') { $(this).addClass('js_changed_pos'); $(this).css('position', 'relative'); } @@ -57,15 +57,15 @@ $(document).ready(function(){ }); } else { - $('.js_pop').each(function(i, e){ + $('.js_pop').each(function(i, e) { $wrap = $(this).parent('.exp_wrap'); $pop = $wrap.next('.exp_pop').detach(); $wrap.find('.exp_marker_pop').remove(); $(this).unwrap('.exp_wrap'); $(this).after($pop); - if($(this).hasClass('js_changed_pos')){ + if ($(this).hasClass('js_changed_pos')) { $(this).css('position', ''); - if($(this).attr('style') === ''){ + if ($(this).attr('style') === '') { $(this).removeAttr('style'); } $(this).removeClass('js_changed_pos'); @@ -78,49 +78,10 @@ $(document).ready(function(){ console.log('Explanation mode', expMode); }); - // WIP Scroll to top - $('.js_scrolltop').click(function(event){ - event.preventDefault(); - $('html, body').animate({ - scrollTop: 0 - }, basicEase); - }); - $('.js_scrolldown').click(function(event){ - event.preventDefault(); - var pos = Math.max(htmlH, bodyH) - viewH; - document.documentElement.scrollTop = pos; - console.info('scrolled down to', pos); - }); - - - - $('#gameIcon').click(function(event){ + $('#gameIcon').click(function(event) { event.preventDefault(); $(this).clone().appendTo('#gameDetail'); $(this).siblings().clone().appendTo('#gameDetail'); $('#gameDetail').removeClass('magic'); }); }); - - -// Scroll -// ------------------------------------------------------------------------------ -$( document ).scroll(function(){ - "use strict"; - - // Toggle navigation elements - docPosY = $( document ).scrollTop(); - if(docPosY > docInitY){ - if(!docInitleft){ - $('.js_scrolltop').parent().removeClass('magic'); - console.info('Initial viewport left'); - } - docInitleft = true; - } else { - if(docInitleft){ - $('.js_scrolltop').parent().addClass('magic'); - console.info('Initial viewport left'); - } - docInitleft = false; - } -}); diff --git a/source/code/hippie/variables.js b/source/code/hippie/variables.js index 87a0eea..b3c557b 100644 --- a/source/code/hippie/variables.js +++ b/source/code/hippie/variables.js @@ -1,16 +1,20 @@ var hippie = { - brand: "|-| | |^ |^ | [- " + brand: "|-| | |^ |^ | [- ", + screen: { + w: Math.max(document.documentElement.offsetWidth, document.documentElement.clientWidth, window.innerWidth, 0), + vh: Math.max(document.documentElement.clientHeight, window.innerHeight, 0), + dh: Math.max(document.documentElement.offsetHeight, document.documentElement.clientHeight, 0), + y: Math.min($(document).scrollTop(), document.documentElement.scrollTop) + // hippie.screen.y: document.documentElement.scrollTop + }, + body: { + w: Math.max(document.body.offsetWidth, document.body.clientWidth, window.innerWidth, 0), + h: Math.max(document.body.offsetHeight, document.body.clientHeight, 0), + } }; -var viewW = Math.max(document.documentElement.offsetWidth, document.documentElement.clientWidth, window.innerWidth, 0); -var viewH = Math.max(document.documentElement.clientHeight, window.innerHeight, 0); -var htmlH = Math.max(document.documentElement.offsetHeight, document.documentElement.clientHeight, 0); -var bodyW = Math.max(document.body.offsetWidth, document.body.clientWidth, window.innerWidth, 0); -var bodyH = Math.max(document.body.offsetHeight, document.body.clientHeight, 0); - -var docPosY = 0; -var docInitleft = false; -var docInitY = viewH; +var initLeft = false; +var initY = hippie.screen.vh; var viewHover = true; var basicEase = 600; diff --git a/source/screens/demo.njk b/source/screens/demo.njk index cfb684c..ab07a7e 100644 --- a/source/screens/demo.njk +++ b/source/screens/demo.njk @@ -1,52 +1,56 @@ - -{% set pageId = "index" %} -{% set pageClass = "h_full_view" %} - -{% extends "demo/_default.njk" %} - -{% block title %}Index{% endblock %} -{% block head %} -{{ super() }} -{% endblock %} - -{% block body %} -
-
-

This is {{hippie.brand | upper}}

-

You can start using it by replacing this file with your own index page.

-

To do this you need to create a file /index.njk inside the source/screens folder. You can also create a data.json file inside the source/templates folder as a data source for your nunjucks files.

-

For a very basic start you can make a copy of the demo page blank.njk. You can find it at /source/screens/demo.

-

The source/demo folder contains an overview of all HTML elements and also examples for CSS style combinations and even whole page layouts.
Follow the white rabbit.

-
-
  ()()
(..)
C(")(")
-

Overview

-
- -

Demo Pages

- -
-
-{% endblock %} - -{% block script %} -{{ super() }} - - -{% endblock %} + +{% set pageId = "index" %} +{% set pageClass = "h_full_view" %} + +{% extends "demo/_default.njk" %} + +{% block title %}Index{% endblock %} +{% block head %} +{{ super() }} +{% endblock %} + +{% block body %} +
+
+

This is {{hippie.brand | upper}}

+

You can start using it by replacing this file with your own index page.

+

To do this you need to create a file /index.njk inside the source/screens folder. You can also create a data.json file inside the source/templates folder as a data source for your nunjucks files.

+

For a very basic start you can make a copy of the demo page blank.njk. You can find it at /source/screens/demo.

+

The source/demo folder contains an overview of all HTML elements and also examples for CSS style combinations and even whole page layouts.
Follow the white rabbit.

+
+
  ()()
(..)
C(")(")
+

Overview

+
+ +

Demo Pages

+ +
+
+{% endblock %} + +{% block script %} +{{ super() }} + + +{% endblock %} diff --git a/source/screens/demo/intro.njk b/source/screens/demo/intro.njk index ee582d6..6e433ea 100644 --- a/source/screens/demo/intro.njk +++ b/source/screens/demo/intro.njk @@ -1,592 +1,603 @@ - -{% set pageId = "intro" %} - -{% extends "demo/_extended.njk" %} - -{% block title %}Intro{% endblock %} -{% block head %} -{{ super() }} -{% endblock %} - -{% block main %} -{% include "hippie/partials/_body_nav.njk" %} - -
- Dies ist einfach nur Text.
Weniger wäre Nichts, denn dieser Text ist nicht durch ein spezifisches Element umschlossen.
Dies ist normalerweise nicht vorgesehen und wird hier nur zur Einführung und Anschauung verwendet.

-
-

Es wirken nur die Eigenschaften des <body> Elements. Dieses Element umschließt den gesamten Inhalt des Dokumentes und kommt daher nur einmal vor. Inhalte sind normalerweise durch Elemente definiert. Grundlegende Elemente teilen das Dokument zunächst in Abschnitte.

-

Bereiche

- {# // body // article // section // nav // aside // h1-h6 // header // footer #} -
-

Einen Abschnitt, welcher für sich alleine stehen kann, definiert sich durch <article>. Solch ein Element wird oft detailliert gestaltet, kommt aber auch ohne jegliche Gestaltung aus.

-

Noch allgemeiner ist das <section> Element. Es schafft Bereiche um Inhalte zu strukturieren.

-

Bestimmte Bereiche haben einen vorgegebene Zweck.
Folgende Bereiche sind vorgegeben:

-
- - -
-
-

Um einleitenden Inhalt festzuhalten, wird das <header> Element eingesetzt. Es beinhaltet häufig auch Navigationselemente. Dabei bezieht es sich auf den nächsten, umgebenden Abschnitt.

- -
-
-

Auch abschließender Inhalt kann für einen Abschnitt definiert werden. Dazu wird <footer> eingesetzt.

-
-
- -

Zur feineren Strukturierung und Gliederung von Texten sind einige weitere Elemente verfügbar. Diese werden nun der Reihe nach aufgeführt. Zu Beginn die Überschriften, da sie noch zu den Abschnitten gehören. Das kommt vermutlich daher, da Abschnitte häufig eine kennzeichnende Überschrift beinhalten.

-

Überschrift 1

-

Eine Überschrift erster Ordnung <h1> ist sehr groß und steht daher oft außerhalb eines Textflusses. Sie schafft eine deutliche Trennung sowohl inhaltlich wie auch optisch. Sie erzeugt einen Abstand gleich der horizontalen Linie über sich.

-

Überschrift 2

-

Die weiteren Überschriften <h2> bis <h6> gliedern Text und werden auch als Titel für andere Elemente eingesetzt.

-

Überschrift 3 ist in Großbuchstaben gesetzt

-

Überschrift 4 verwendet normale Buchstaben und gleicht ansonsten Überschrift 3

-
Überschrift 5 ist Überschrift 5
-
Überschrift 6
-

Schließlich eine Überschrift in der Größe des Fließtextes. Allerdings in fett.

-
-
-

Gruppierung

- {# // p // address // hr // pre // blockquote // ol // ul // li // dl // dt // dd // figure // figcaption // main // div #} -

Ein Absatz <p>. Zugegeben ein kurzer.

-

Aus mehreren Absätzen wird ein ganzer Text. Solche Texte haben gelegentlich großen informativen oder unterhaltsamen Charakter.
Einfache Zeilenumbrüche werden darin mit <br> erreicht. Dies ist allerdings ein Element der Textebene und keine Gruppierung.

-

Die Unterteilung in Absätze ist eine von vielen Möglichkeiten Texte zu gruppieren und ihnen Struktur zu verleihen. In diesem Dokument flattert Text normalerweise von Links daher. Er ist schwarz und in einer serifenlosen Schrift gesetzt. Zu weiteren Formatierungen, die eher auf einer Ebene der Zeichen einzuordnen ist, wird im Verlauf näher eingegangen. Zunächst die Struktur:

-

Text sitzt gerne auch mal zentriert.

p.txt_center
-

Rechtsbündig ist schon eher eine Ausnahme bzw. Besonderheit.

p.txt_right
-
Das Element <address> hat den Zweck, Kontaktinformationen bereit zu stellen. Diese werden, je nach Position des Elements im Kontext der gesamten Seite, anders gewertet.
-

Texte können auf verschiedene Arten unterteilt werden. Dafür werden unterschiedlich formatierte <hr> Elemente verwendet. Die horizontale Linie ist die Ausgangsformatierung, daher auch der abgekürzte Name des Elements. Eine Linie ist schwarz und durchgezogen.

-
-

Es ist auch eine unsichtbare Unterteilung möglich:

-
hr.hr_hidden
-

Die Linie darf auch gepunkted sein. Zudem sind verschiedene Längen möglich. Diese sind immer ein Prozentwert der verfügbaren Breite. Hier in gleicher Reihenfolge 100%, 50% und 25%:

-
hr.hr_dotted
-
hr.space_even_half
-
hr.hr_dotted.space_even_fourth
-

Zur horizontalen Unterteilung kommt natürlich auch eine vertikale Trennung hinzu. Text kann so zum Beispiel in mehrere Spalten unterteilt werden. Dies ist hilfreich, wenn ein Text durch eine breite Fläche sehr lange Zeilen bekommen würde. Es ist dann schwer den neuen Zeilanfang zu finden. Die vertikale Trennung dient in erster Linie dazu, diesem Umstand zu begegnen. Auch hier kann die Unterteilung viele Formen annehmen.

p.column_2
-

Drei Spalten gilt es jetzt also zu Füllen. Dann erst wird die Trennung der Spalten durch eine Linie sichtbar.

p.column_3.column_line
-

Ist der Text nicht lang genug bleibt eventuell eine Spalte leer. Diesmal wird dies aber nicht passieren, denn das Anschauungsbeispiel ist ja nun durch den vorherigen Absatz schon gegeben.
Oft ist es sinnvoll, Absätze mit mehreren Spalten deutlich von nachfolgenden Absätzen zu trennen. Da der Textfluss spaltenweise verläuft, liest man eventuell an der falschen Stelle weiter. Ach das ziegen diese beiden Absätze ganz gut.

-

Es gibt die Möglichkeit vorformatierten Text darzustellen <pre>.

-
Dadurch
bleiben
Einrückungen
durch
Tabulatoren
erhalten.
-

Wird Bezug auf fremde Inhalte genommen, kommt ein Zitat <blockquote> zur Anwendung. Es besteht aus der Aussage und der Quelle.

-
-

Ein Zitat (das, lateinisch citatum „Angeführtes, Aufgerufenes“ zu lat. citāre „in Bewegung setzen, vorladen“, vgl. „jemanden vor Gericht zitieren“) ist eine wörtlich übernommene Stelle aus einem Text oder ein Hinweis auf eine bestimmte Textstelle.

-

Wikipedia

-
-
blockquote>p+p.quote_source
-

Gerade bei wörtlichen Zitierungen kommt häufig das Anführungszeichen zum Einsatz. Es kann durch die Formatierung automatisch ergänzt werden.

-
-

Das kannst du schon so machen aber dann isses halt Kacke.

-

o. V.

-
-
blockquote.quote_mark>p+p.quote_source
-

Listen

-

Text bekommt durch Listen besondere optische wie auch inhaltliche Struktur. Es gibt ungeordnete <ul> und geordnete Listen <ol> sowie Beschreibungslisten <dl>. Die beiden ersten Varianten beinhalten das Listenelement <li>. Beschreibungslisten beinhalten jeweils das Paar von Ausdruck <dt> und Beschreibung <dd>. Im Folgenden eine Liste der Listen in ihrer Ausgangskonfiguration:

- - -
    -
  1. Geordnete
  2. -
  3. Liste
  4. -
-
-
Beschreibungsliste
-
Auch Definitionslisten genannt
-
Ausdruck
-
Beschreibung
-
-

Auch Inhalte, die nicht in Textform sind, können durch einen Bezug integriert werden. Wie diese Fahne werden sie mit <figure> umschlossen und tragen eine Bezeichnung, welche mit <figcaption> ausgezeichnet wird.

-
-
Fahne
- - - - - - - - - - - -
-
figure>figcaption+{element}
-

Eine sehr klar definierte Gruppierung stellt das Element <main> dar. Es umschließt den hauptsächlichen Inhalt des Dokumentes.

-

Eine von sich aus undefinierte Möglichkeit zur Gruppierung von Text besteht durch <div>. Dieses Element hat, ohne weitere Klassifizierung keine Auswirkungen auf die Erscheinung oder die inhaltliche Aussage. Daher der allgemeine Einsatz.

-

Es wird allerdings häufig eingesetzt und bekommt vielfältige Funktionen zugeordnet wie diese hervorgehobene Information zeigt.

-
-
-

Textebene

- {# // a // em // strong // small // s // cite // q // dfn // abbr // ruby // rb // rt // rtc // rp // data // time // code // var // samp // kbd // sub // sup // i // b // u // mark // bdi // bdo // span // br // wbr // -- Edits -- // ins // del #} -

Verweise

-

Ein wesentlicher Bestandteil von Hypertext sind Verweise <a>. Sie dienen als Sprungmarken innerhalb des Netzwerks. Es kann grob zwischen internen und externen Verweisen unterschieden werden. Interne Verweisea.a_line können Verknüpfungen innerhalb des aktuellen Dokumentes sein oder auch Funktionen aktivieren. Externe Verweise verknüpfen Inhalte über das gesamte Netzwerk hinweg. Sie können zum Beispiel auch auf E-Mail Adressen oder Dateien zeigen. Theoretisch kann solch ein Verweis Alles auslösen. Anweisungen werden im URL Standard übergeben.

-

Nicht nur Text kann als Verweis verwendet werden. Auch andere Elemente wie Bilder können verknüpft werden. Abhängig von ihrer Funktion und ihrem Zweck, werden Verweise unterschiedlich formatiert. Farbige oder unterstrichene Varianten sind einfache Beispiele.

-

Wird der Verweis innerhalb eines <nav> Elementes notiert, bekommt er die spezielle Bedeutung eines Navigationsverweises innerhalb des Dokumentes oder der Anwendung. Verweise werden dann durchaus auch wie Schaltflächen dargestellt.

- - -

Formatierungen

-

Texte, Wörter oder Zeichen können vielfältig formatiert werden.

-

Sie können fett <b> oder kursiv <i> geschrieben sein. Auch beides ist möglich!?! Sollen sie nicht nur anders aussehen, sondern auch eine besondere inhaltliche Bedeutung bekommen, werden sie mit <strong> und <em> ausgezeichnet.

-

Das <u> Element stellt eine Spanne von Text mit einer unartikulierten, wenn auch explizit dargestellten, nicht-textuellen Anmerkung dar, wie z.B. die Beschriftung des Textes als Eigenname wie Interaktionsweise, oder die Beschriftung des Textes als falsch geschrieben.

-

Ähnlich ist es mit dem Element <small>. Es steht für Randnotizen wird aber häufig auch kleiner dargestellt.

-

Ist ein Text nicht mehr korrekt oder relevant kann er mit <s> markiert werden:
Die Erde ist eine Scheibe.

-

Ein besonderer inhaltlicher Bezug ist der Titel eines Werkes. Sowas kann mit <cite> ausgezeichnet werden. Pulp Fiction, ist ein super Film - zum Beispiel.

-

Um ein Zitat direkt im Text zu verwenden benutzt man das <q> Element. Es platziert Anführungszeichen um die Aussage:

-

Sie sagte: Du wolltest staubsaugen!
Er sagte: Mach' ich morgen.

-

Mit dem <dfn> Element werden Begriffe definiert. Es wird häufig mit dem Element für Abkürzungen <abbr> gemeinsam verwendet. Die eigentliche Definition kann dabei auch im Attribut title stehen.

-

Hippie is an recursive acronym for Hippie interweaves preeminent personal interface elements.

-

Die besondere Auszeichnungen <ruby> bezeichnet ein Anmerkungssystem, bei dem der Text zusammen mit seiner Anmerkung in einer Zeile erscheint. Das System verwendet die folgenden weiteren Elemente mit spezifischer Bedeutung:

-
- <rb> -
Basis Textkomponente
- <rt> -
Annotation
- <rtc> -
Einzelne Komponente einer Annotation
- <rp> -
Alternative bei fehlender Unterstützung
-
-
-
- BasisAuszeichnung - 今日きょう - - ♥: Herz, Cœur. - ☘: Kleeblatt, Trèfle. - ✶: Stern, Étoile. - -
-
-

Wikipedia erklärt dies ausführlicher unter Ruby Annotation.

-

Es gibt auch mehrere besondere Elemente um Maschinensprache oder Programmkode zu bezeichnen. Dabei wird unterschieden, ob der Inhalt nur für Menschen ausgezeichnet wird oder auch maschinen-lesbar sein soll. Die Elemente <data> und <time> enthalten eine maschinen-lesbare Repräsentation des Inhaltes:

-
-
0NULL
-
<data>0</data> ≠ <data>NULL</data>
-
Der Wert NULL mit Attribut
-
<data value="NULL">NULL</data>
-
-
<time>2018-10-08</time>
-
Die Zeitangabe mit Attribut
-
<time datetime="2018-10-08">Gestern</time>
-
-

Die Auszeichnung <code> wurde bis hier hin schon verwendet. Sie markiert ebenfalls Maschinensprache. Allerdings dient sie dazu von Menschen gelesen zu werden. In diesem Dokument werden alle Elemente, die erklärt werden wiederum mit diesem Element markiert.

-

Für zusammenhängende Blöcke wird die Auszeichnung oft in Kombination mit dem Element <pre> verwendet:

-
<html>
<head>
<title>Hyper Text Markup Language</title>
</head>
<body id="root">
<!-- Content goes here -->
<p class="example">Just like this.</p>
</body>
</html>
-

Dabei bleiben vorhandene Textformatierungen wie Zeilenumbrüche und Einrückung erhalten.

-

var def = "Definition einer Variablen";

-

In diesem Beispiel wird die Variable def definiert. Solch ein spezieller Typ Programmkode kann mit dem dafür vorgesehenen Element <var> ausgezeichnet werden.

-

Soll beispielhaft auf Ausgaben von Computern verwiesen werden, wird das <samp> Element verwendet. Der Computer hat gesagt: Ich kann das angegebene Objekt nicht finden.

-

Benutzereingaben haben ebenfalls ein eigenes Element <kbd>. Damit werden Eingaben durch den Nutzer, wie zum Beispiel Drücken Sie gleichzeitig Strg und A, gekennzeichnet.

-

Hoch- und Tiefgestellte Zeichen werden durch die Elemente <sup> und <sub> repräsentiert. Sie dienen nicht dazu rein optische Auszeichnungen zu erreichen sondern werden für ihren jeweiligen Zweck eingesetzt. In der Mathematik oder Chemie sind sie üblich:

-

Beispielsweise die Formel E=mc2 oder das Element H2O

-

Die Zeichen in Absätzen bis hin zu ganzen Texten können, mit einem geeigneten Eingabegerät, markiert werden. Dies stellt sich wie folgt dar:

-

Beispiel zum markieren 😉.

-

Eine Markierung kann, mittels <mark>, auch durch den Autor geschehen. Diese stellt sich ein wenig anders dar: Diese Worte sind markiert.

-

Um Text, dessen schreibweise nicht vorhersehbar ist, zu markieren wie z.B. Benutzernamen كائن بشري, die auch rechtsbündig geschrieben sein können, wird das <bdi> Element eingesetzt.
Die Schreibweise kann auch auch vom Author vorgegeben und expliziert geändert werden. Dies wird dem <bdo> Element umgesetzt. Die Richtung wird dann mit dem Attribut dir angegeben.

- -
    -
  • كائن بشري
  • -
  • إنسان آلي
  • -
-
-

Neben den vielen speziellen Elementen gibt es auch ein Element, das keine vordefinierte Bedeutung hat. Es ist das <span> Element.
Es dient dazu ganz individuelle Auszeichnungen zu ermöglichen die eher optische Auswirkungen haben und eben keine inhaltlichen. Mit den Attributen id oder class werden dazu eigene Typen des Elements definiert. Diese Möglichkeit der Definition von individuellen Elementen ist ein Grundprinzip der Auszeichnungssprache HTML.

-

Mit der Einführung von Absätzen wurde auch schon das <br> Element erwähnt und seitdem häufig benutzt. Es erzeugt einen Zeilenumbruch. Es wird dadurch kein neuer Absatz erstellt. Es dient auch nicht dazu optischen Abstand zu erzeugen, sondern innerhalb eines Absatzes den Text umzubrechen.

-

Eine besondere Form des Zeilenumbruchs kann mit <wbr> eingesetzt werden. Es stellt die Möglichkeit für einen Zeilenumbruch dar. Da das Format eines HTML-Dokumentes häufig nicht vorhersehbar ist, kann solch ein Element einen Umbruch erzeugen falls ein Wort zu lang für eine Textzeile sein sollte.

-

Und der Löwe brüllte "RRRRrrrrooooooooaaaaAAAAAAAAHHHHhhhhrrrrrrrrr"!

-

Es kann auch innerhalb von vorformatierten Texten Zeilenumbrüche ermöglichen

-

Änderungen

-

Werden Texte geändert, können solche Änderungen sichtbar gemacht werden. Somit können sie besser nachvollzogen werden.
Zum Beispiel eine Ergänzung von Inhalt.

- -

Der Inhalt wird dann mit <ins> ausgezeichnet. Wird Text entfernt, kommt das <del> zum Einsatz.

-
Zu Tun
- -
-
-

Eingebundene Inhalte

- {# // picture // source // img // iframe // embed // object // param // video // audio // track // map // area #} - Fahne von Interaktionsweise -

Die ist ein Bild. Es wird mit dem Element <img> eingebunden. Solch ein Bild hat üblicherweise die Attribute width und height. Mit ihnen werden die Abmessungen (Breite und Höhe) festgelegt. Außerdem sollte immer das Attribut alt für eine alternative Beschreibung in Textform verwendet werden.

-

Das Bild selbst liegt normalerweise als Datei vor. Die Quelle wird mit dem Attribut src angegeben. Es können einige Alternativen zur Angabe einer konkreten Datei eingesetzt werden. Zum Beispiel können mehrere Dateien in Abhängigkeit zur Darstellung oder dem unterstützen Format angegeben werden. Dafür können dann die Elemente <source> und <picture> in Kombination verwendet werden.

- - - - -
-
-

Tabellen

-

Tabellen bieten besonders geordnete Struktur. Häufig werden in ihnen Text und Daten kombiniert dargestellt. Dies erfordert individuelle Formatierungen. Einige grundlegende Eigenschaften werden im folgenden aufgezeigt. Tabellen sind in ihrer Größe entweder vordefiniert (fixiert) oder richten sich nach ihrem Inhalt. Das bedeutet, die Spaltenbreite entspricht der breitesten ihrer Zellen.

- - - - - - - - - - -
Eineeinfache
Tabelle
-
table.width_full>tbody>tr>td*2^tr>td[colspan=2]
-
- - - - - - - - - - -
Einefreie (nicht fixierte)
Tabelle
-
table>tbody>tr>td*2^tr>td[colspan=2]
- - - - - - - - - - -
Mitohne
Linien
-
table.table_blank>tbody>tr>td*2^tr>td[colspan=2]
-
-

Die nächste Tabelle verwendet alle zur Auszeichnung verfügbaren Elemente und hat eine starre Zellverteilung:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Beschreibung bzw. Zusammenhang der Tabelle
KopfzeileAB
FußzeileAB
Tabelle
mitTitel
Kopf-und
Fußzeile
-
table.width_full.table_fix>caption+thead>tr>th*3^^tfoot>tr>td*3^^tbody>(tr>td*3)*3
-
-

Viele weitere Formate sind möglich. Hier nur einige typische Beispiele:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KopfzeileAB
VorspalteEine
1erweiterte
2Tabelle
-
table.width_full.table_stripe.table_free>tbody>tr>td*3
- - - - - - - - - - - - - - - - - - - - - - - -
Tabelle
ohneRahmen
jedochmit
Streifen
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Die Verteilung der Zellen ist hier von ihrem Inhalt abhängig.
BezeichnungMenge>9000
Summe9001
Alpha18990
Bravo101
Charlie11
-
-
-

Formulare

-

Spätestens hier werden Betrachter zu Benutzern. Texteingabefelder und verschiedene Bedienelemente geben Möglichkeiten zur Interaktion. Diese Elemente sind in vielerlei Hinsicht besonders. Werden sie nicht explizit gestaltet, ist ihre Erscheinung system- bzw. browserabhängig.
Üblicherweise stehen alle Bedienelemente innerhalb eines <form> Elementes. Dieses ist notwendig um Angaben zur Kommunikation mit dem Server zu setzen. Es hat normalerweise keine gestalterische Funktion.

-

Grundlegend ist das Element <input>. Es hat viele Attribute um den Typ der Eingabe anzupassen. Ist es undefiniert nimmt es jegliche textbasierte Information auf und erhält eine Standardgröße.

-

-

Ein spezieller Typ des Eingabefeldes hat die Funktion einer Schaltfläche <input[type="button"]>. Es gibt allerdings auch ein eigenes Element <button> dafür.

-

-

-

Interaktive Elemente können durch das Attribut readonly nur lesbar gemacht werden oder mittels disabled gänzlich deaktiviert werden.

-

-

-

Das Element <label> ergänzt interaktive Elemente um eine Beschriftung. Wichtig ist hier, dass die Beziehung beider Elemente zu einander deutlich ist.

-

- -

-
-
- - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - -
-
-

Zusätzlich zur Beschriftung einzelner Elemente gibt es auch die Möglichkeit Gruppierungen zu schaffen. Diese werden mit <fieldset> realisiert.

-
-
- - -
-
-

Sie können mittels <legend> auch eine eigene Beschriftung erhalten.

-
- Einfache Eingabeelemente -
-
-
-
-
- -
- - -
- - -
-
-
- Einfache Eingabeelemente mit Stil -
-
-
-
-
- -
- - -
- - -
-
-
- Weitere Eingabemöglichkeiten -

Innerhalb einer Gruppe können nicht nur Ein- und Ausgabefelder platziert werden. Andere Elemente ergänzen Information oder lockern das Erscheinungsbild auf.

-

Hier nun eine Liste weiterer Arten von Eingabefeldern:

-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -

Interaktive Elemente

-
-
-

Struktur

-
-
-
- - - - -
-
-
-
-
-

Medien

-
-
-

Druck

-
- -
-
-

Ende der Einführung

-

Dies war eine Übersicht der grundlegenden Elemente. Nun folgen weitere Elemente mit besonderen Formatierungen.

-
-
-
- -
-
-

HIPPIE Erklärung

-

Aufbau, Standardwerte

-
-
-

-
-
- -{% endblock %} - -{% block script %} -{{ super() }} - - -{% endblock %} + +{% set pageId = "intro" %} + +{% extends "demo/_extended.njk" %} + +{% block title %}Intro{% endblock %} +{% block head %} +{{ super() }} +{% endblock %} + +{% block main %} +{% include "hippie/partials/_body_nav.njk" %} + +
+ Dies ist einfach nur Text.
Weniger wäre Nichts, denn dieser Text ist nicht durch ein spezifisches Element umschlossen.
Dies ist normalerweise nicht vorgesehen und wird hier nur zur Einführung und Anschauung verwendet.

+
+

Es wirken nur die Eigenschaften des <body> Elements. Dieses Element umschließt den gesamten Inhalt des Dokumentes und kommt daher nur einmal vor. Inhalte sind normalerweise durch Elemente definiert. Grundlegende Elemente teilen das Dokument zunächst in Abschnitte.

+

Bereiche

+ {# // body // article // section // nav // aside // h1-h6 // header // footer #} +
+

Einen Abschnitt, welcher für sich alleine stehen kann, definiert sich durch <article>. Solch ein Element wird oft detailliert gestaltet, kommt aber auch ohne jegliche Gestaltung aus.

+

Noch allgemeiner ist das <section> Element. Es schafft Bereiche um Inhalte zu strukturieren.

+

Bestimmte Bereiche haben einen vorgegebene Zweck.
Folgende Bereiche sind vorgegeben:

+
+ + +
+
+

Um einleitenden Inhalt festzuhalten, wird das <header> Element eingesetzt. Es beinhaltet häufig auch Navigationselemente. Dabei bezieht es sich auf den nächsten, umgebenden Abschnitt.

+ +
+
+

Auch abschließender Inhalt kann für einen Abschnitt definiert werden. Dazu wird <footer> eingesetzt.

+
+
+ +

Zur feineren Strukturierung und Gliederung von Texten sind einige weitere Elemente verfügbar. Diese werden nun der Reihe nach aufgeführt. Zu Beginn die Überschriften, da sie noch zu den Abschnitten gehören. Das kommt vermutlich daher, da Abschnitte häufig eine kennzeichnende Überschrift beinhalten.

+

Überschrift 1

+

Eine Überschrift erster Ordnung <h1> ist sehr groß und steht daher oft außerhalb eines Textflusses. Sie schafft eine deutliche Trennung sowohl inhaltlich wie auch optisch. Sie erzeugt einen Abstand gleich der horizontalen Linie über sich.

+

Überschrift 2

+

Die weiteren Überschriften <h2> bis <h6> gliedern Text und werden auch als Titel für andere Elemente eingesetzt.

+

Überschrift 3 ist in Großbuchstaben gesetzt

+

Überschrift 4 verwendet normale Buchstaben und gleicht ansonsten Überschrift 3

+
Überschrift 5 ist Überschrift 5
+
Überschrift 6
+

Schließlich eine Überschrift in der Größe des Fließtextes. Allerdings in fett.

+
+
+

Gruppierung

+ {# // p // address // hr // pre // blockquote // ol // ul // li // dl // dt // dd // figure // figcaption // main // div #} +

Ein Absatz <p>. Zugegeben ein kurzer.

+

Aus mehreren Absätzen wird ein ganzer Text. Solche Texte haben gelegentlich großen informativen oder unterhaltsamen Charakter.
Einfache Zeilenumbrüche werden darin mit <br> erreicht. Dies ist allerdings ein Element der Textebene und keine Gruppierung.

+

Die Unterteilung in Absätze ist eine von vielen Möglichkeiten Texte zu gruppieren und ihnen Struktur zu verleihen. In diesem Dokument flattert Text normalerweise von Links daher. Er ist schwarz und in einer serifenlosen Schrift gesetzt. Zu weiteren Formatierungen, die eher auf einer Ebene der Zeichen einzuordnen ist, wird im Verlauf näher eingegangen. Zunächst die Struktur:

+

Text sitzt gerne auch mal zentriert.

p.txt_center
+

Rechtsbündig ist schon eher eine Ausnahme bzw. Besonderheit.

p.txt_right
+
Das Element <address> hat den Zweck, Kontaktinformationen bereit zu stellen. Diese werden, je nach Position des Elements im Kontext der gesamten Seite, anders gewertet.
+

Texte können auf verschiedene Arten unterteilt werden. Dafür werden unterschiedlich formatierte <hr> Elemente verwendet. Die horizontale Linie ist die Ausgangsformatierung, daher auch der abgekürzte Name des Elements. Eine Linie ist schwarz und durchgezogen.

+
+

Es ist auch eine unsichtbare Unterteilung möglich:

+
hr.hr_hidden
+

Die Linie darf auch gepunkted sein. Zudem sind verschiedene Längen möglich. Diese sind immer ein Prozentwert der verfügbaren Breite. Hier in gleicher Reihenfolge 100%, 50% und 25%:

+
hr.hr_dotted
+
hr.space_even_half
+
hr.hr_dotted.space_even_fourth
+

Zur horizontalen Unterteilung kommt natürlich auch eine vertikale Trennung hinzu. Text kann so zum Beispiel in mehrere Spalten unterteilt werden. Dies ist hilfreich, wenn ein Text durch eine breite Fläche sehr lange Zeilen bekommen würde. Es ist dann schwer den neuen Zeilanfang zu finden. Die vertikale Trennung dient in erster Linie dazu, diesem Umstand zu begegnen. Auch hier kann die Unterteilung viele Formen annehmen.

p.column_2
+

Drei Spalten gilt es jetzt also zu Füllen. Dann erst wird die Trennung der Spalten durch eine Linie sichtbar.

p.column_3.column_line
+

Ist der Text nicht lang genug bleibt eventuell eine Spalte leer. Diesmal wird dies aber nicht passieren, denn das Anschauungsbeispiel ist ja nun durch den vorherigen Absatz schon gegeben.
Oft ist es sinnvoll, Absätze mit mehreren Spalten deutlich von nachfolgenden Absätzen zu trennen. Da der Textfluss spaltenweise verläuft, liest man eventuell an der falschen Stelle weiter. Ach das ziegen diese beiden Absätze ganz gut.

+

Es gibt die Möglichkeit vorformatierten Text darzustellen <pre>.

+
Dadurch
bleiben
Einrückungen
durch
Tabulatoren
erhalten.
+

Wird Bezug auf fremde Inhalte genommen, kommt ein Zitat <blockquote> zur Anwendung. Es besteht aus der Aussage und der Quelle.

+
+

Ein Zitat (das, lateinisch citatum „Angeführtes, Aufgerufenes“ zu lat. citāre „in Bewegung setzen, vorladen“, vgl. „jemanden vor Gericht zitieren“) ist eine wörtlich übernommene Stelle aus einem Text oder ein Hinweis auf eine bestimmte Textstelle.

+

Wikipedia

+
+
blockquote>p+p.quote_source
+

Gerade bei wörtlichen Zitierungen kommt häufig das Anführungszeichen zum Einsatz. Es kann durch die Formatierung automatisch ergänzt werden.

+
+

Das kannst du schon so machen aber dann isses halt Kacke.

+

o. V.

+
+
blockquote.quote_mark>p+p.quote_source
+

Listen

+

Text bekommt durch Listen besondere optische wie auch inhaltliche Struktur. Es gibt ungeordnete <ul> und geordnete Listen <ol> sowie Beschreibungslisten <dl>. Die beiden ersten Varianten beinhalten das Listenelement <li>. Beschreibungslisten beinhalten jeweils das Paar von Ausdruck <dt> und Beschreibung <dd>. Im Folgenden eine Liste der Listen in ihrer Ausgangskonfiguration:

+ + +
    +
  1. Geordnete
  2. +
  3. Liste
  4. +
+
+
Beschreibungsliste
+
Auch Definitionslisten genannt
+
Ausdruck
+
Beschreibung
+
+

Auch Inhalte, die nicht in Textform sind, können durch einen Bezug integriert werden. Wie diese Fahne werden sie mit <figure> umschlossen und tragen eine Bezeichnung, welche mit <figcaption> ausgezeichnet wird.

+
+
Fahne
+ + + + + + + + + + + +
+
figure>figcaption+{element}
+

Eine sehr klar definierte Gruppierung stellt das Element <main> dar. Es umschließt den hauptsächlichen Inhalt des Dokumentes.

+

Eine von sich aus undefinierte Möglichkeit zur Gruppierung von Text besteht durch <div>. Dieses Element hat, ohne weitere Klassifizierung keine Auswirkungen auf die Erscheinung oder die inhaltliche Aussage. Daher der allgemeine Einsatz.

+

Es wird allerdings häufig eingesetzt und bekommt vielfältige Funktionen zugeordnet wie diese hervorgehobene Information zeigt.

+
+
+

Textebene

+ {# // a // em // strong // small // s // cite // q // dfn // abbr // ruby // rb // rt // rtc // rp // data // time // code // var // samp // kbd // sub // sup // i // b // u // mark // bdi // bdo // span // br // wbr // -- Edits -- // ins // del #} +

Verweise

+

Ein wesentlicher Bestandteil von Hypertext sind Verweise <a>. Sie dienen als Sprungmarken innerhalb des Netzwerks. Es kann grob zwischen internen und externen Verweisen unterschieden werden. Interne Verweisea.a_line können Verknüpfungen innerhalb des aktuellen Dokumentes sein oder auch Funktionen aktivieren. Externe Verweise verknüpfen Inhalte über das gesamte Netzwerk hinweg. Sie können zum Beispiel auch auf E-Mail Adressen oder Dateien zeigen. Theoretisch kann solch ein Verweis Alles auslösen. Anweisungen werden im URL Standard übergeben.

+

Nicht nur Text kann als Verweis verwendet werden. Auch andere Elemente wie Bilder können verknüpft werden. Abhängig von ihrer Funktion und ihrem Zweck, werden Verweise unterschiedlich formatiert. Farbige oder unterstrichene Varianten sind einfache Beispiele.

+

Wird der Verweis innerhalb eines <nav> Elementes notiert, bekommt er die spezielle Bedeutung eines Navigationsverweises innerhalb des Dokumentes oder der Anwendung. Verweise werden dann durchaus auch wie Schaltflächen dargestellt.

+ + +

Formatierungen

+

Texte, Wörter oder Zeichen können vielfältig formatiert werden.

+

Sie können fett <b> oder kursiv <i> geschrieben sein. Auch beides ist möglich!?! Sollen sie nicht nur anders aussehen, sondern auch eine besondere inhaltliche Bedeutung bekommen, werden sie mit <strong> und <em> ausgezeichnet.

+

Das <u> Element stellt eine Spanne von Text mit einer unartikulierten, wenn auch explizit dargestellten, nicht-textuellen Anmerkung dar, wie z.B. die Beschriftung des Textes als Eigenname wie Interaktionsweise, oder die Beschriftung des Textes als falsch geschrieben.

+

Ähnlich ist es mit dem Element <small>. Es steht für Randnotizen wird aber häufig auch kleiner dargestellt.

+

Ist ein Text nicht mehr korrekt oder relevant kann er mit <s> markiert werden:
Die Erde ist eine Scheibe.

+

Ein besonderer inhaltlicher Bezug ist der Titel eines Werkes. Sowas kann mit <cite> ausgezeichnet werden. Pulp Fiction, ist ein super Film - zum Beispiel.

+

Um ein Zitat direkt im Text zu verwenden benutzt man das <q> Element. Es platziert Anführungszeichen um die Aussage:

+

Sie sagte: Du wolltest staubsaugen!
Er sagte: Mach' ich morgen.

+

Mit dem <dfn> Element werden Begriffe definiert. Es wird häufig mit dem Element für Abkürzungen <abbr> gemeinsam verwendet. Die eigentliche Definition kann dabei auch im Attribut title stehen.

+

Hippie is an recursive acronym for Hippie interweaves preeminent personal interface elements.

+

Die besondere Auszeichnungen <ruby> bezeichnet ein Anmerkungssystem, bei dem der Text zusammen mit seiner Anmerkung in einer Zeile erscheint. Das System verwendet die folgenden weiteren Elemente mit spezifischer Bedeutung:

+
+ <rb> +
Basis Textkomponente
+ <rt> +
Annotation
+ <rtc> +
Einzelne Komponente einer Annotation
+ <rp> +
Alternative bei fehlender Unterstützung
+
+
+
+ BasisAuszeichnung + 今日きょう + + ♥: Herz, Cœur. + ☘: Kleeblatt, Trèfle. + ✶: Stern, Étoile. + +
+
+

Wikipedia erklärt dies ausführlicher unter Ruby Annotation.

+

Es gibt auch mehrere besondere Elemente um Maschinensprache oder Programmkode zu bezeichnen. Dabei wird unterschieden, ob der Inhalt nur für Menschen ausgezeichnet wird oder auch maschinen-lesbar sein soll. Die Elemente <data> und <time> enthalten eine maschinen-lesbare Repräsentation des Inhaltes:

+
+
0NULL
+
<data>0</data> ≠ <data>NULL</data>
+
Der Wert NULL mit Attribut
+
<data value="NULL">NULL</data>
+
+
<time>2018-10-08</time>
+
Die Zeitangabe mit Attribut
+
<time datetime="2018-10-08">Gestern</time>
+
+

Die Auszeichnung <code> wurde bis hier hin schon verwendet. Sie markiert ebenfalls Maschinensprache. Allerdings dient sie dazu von Menschen gelesen zu werden. In diesem Dokument werden alle Elemente, die erklärt werden wiederum mit diesem Element markiert.

+

Für zusammenhängende Blöcke wird die Auszeichnung oft in Kombination mit dem Element <pre> verwendet:

+
<html>
<head>
<title>Hyper Text Markup Language</title>
</head>
<body id="root">
<!-- Content goes here -->
<p class="example">Just like this.</p>
</body>
</html>
+

Dabei bleiben vorhandene Textformatierungen wie Zeilenumbrüche und Einrückung erhalten.

+

var def = "Definition einer Variablen";

+

In diesem Beispiel wird die Variable def definiert. Solch ein spezieller Typ Programmkode kann mit dem dafür vorgesehenen Element <var> ausgezeichnet werden.

+

Soll beispielhaft auf Ausgaben von Computern verwiesen werden, wird das <samp> Element verwendet. Der Computer hat gesagt: Ich kann das angegebene Objekt nicht finden.

+

Benutzereingaben haben ebenfalls ein eigenes Element <kbd>. Damit werden Eingaben durch den Nutzer, wie zum Beispiel Drücken Sie gleichzeitig Strg und A, gekennzeichnet.

+

Hoch- und Tiefgestellte Zeichen werden durch die Elemente <sup> und <sub> repräsentiert. Sie dienen nicht dazu rein optische Auszeichnungen zu erreichen sondern werden für ihren jeweiligen Zweck eingesetzt. In der Mathematik oder Chemie sind sie üblich:

+

Beispielsweise die Formel E=mc2 oder das Element H2O

+

Die Zeichen in Absätzen bis hin zu ganzen Texten können, mit einem geeigneten Eingabegerät, markiert werden. Dies stellt sich wie folgt dar:

+

Beispiel zum markieren 😉.

+

Eine Markierung kann, mittels <mark>, auch durch den Autor geschehen. Diese stellt sich ein wenig anders dar: Diese Worte sind markiert.

+

Um Text, dessen schreibweise nicht vorhersehbar ist, zu markieren wie z.B. Benutzernamen كائن بشري, die auch rechtsbündig geschrieben sein können, wird das <bdi> Element eingesetzt.
Die Schreibweise kann auch auch vom Author vorgegeben und expliziert geändert werden. Dies wird dem <bdo> Element umgesetzt. Die Richtung wird dann mit dem Attribut dir angegeben.

+ +
    +
  • كائن بشري
  • +
  • إنسان آلي
  • +
+
+

Neben den vielen speziellen Elementen gibt es auch ein Element, das keine vordefinierte Bedeutung hat. Es ist das <span> Element.
Es dient dazu ganz individuelle Auszeichnungen zu ermöglichen die eher optische Auswirkungen haben und eben keine inhaltlichen. Mit den Attributen id oder class werden dazu eigene Typen des Elements definiert. Diese Möglichkeit der Definition von individuellen Elementen ist ein Grundprinzip der Auszeichnungssprache HTML.

+

Mit der Einführung von Absätzen wurde auch schon das <br> Element erwähnt und seitdem häufig benutzt. Es erzeugt einen Zeilenumbruch. Es wird dadurch kein neuer Absatz erstellt. Es dient auch nicht dazu optischen Abstand zu erzeugen, sondern innerhalb eines Absatzes den Text umzubrechen.

+

Eine besondere Form des Zeilenumbruchs kann mit <wbr> eingesetzt werden. Es stellt die Möglichkeit für einen Zeilenumbruch dar. Da das Format eines HTML-Dokumentes häufig nicht vorhersehbar ist, kann solch ein Element einen Umbruch erzeugen falls ein Wort zu lang für eine Textzeile sein sollte.

+

Und der Löwe brüllte "RRRRrrrrooooooooaaaaAAAAAAAAHHHHhhhhrrrrrrrrr"! +

+

Es kann auch innerhalb von vorformatierten Texten Zeilenumbrüche ermöglichen

+

Änderungen

+

Werden Texte geändert, können solche Änderungen sichtbar gemacht werden. Somit können sie besser nachvollzogen werden.
Zum Beispiel eine Ergänzung von Inhalt.

+ +

Der Inhalt wird dann mit <ins> ausgezeichnet. Wird Text entfernt, kommt das <del> zum Einsatz.

+
Zu Tun
+ +
+
+

Eingebundene Inhalte

+ {# // picture // source // img // iframe // embed // object // param // video // audio // track // map // area #} + Fahne von Interaktionsweise +

Die ist ein Bild. Es wird mit dem Element <img> eingebunden. Solch ein Bild hat üblicherweise die Attribute width und height. Mit ihnen werden die Abmessungen (Breite und Höhe) festgelegt. Außerdem sollte immer das Attribut alt für eine alternative Beschreibung in Textform verwendet werden.

+

Das Bild selbst liegt normalerweise als Datei vor. Die Quelle wird mit dem Attribut src angegeben. Es können einige Alternativen zur Angabe einer konkreten Datei eingesetzt werden. Zum Beispiel können mehrere Dateien in Abhängigkeit zur Darstellung oder dem unterstützen Format angegeben werden. Dafür können dann die Elemente <source> und <picture> in Kombination verwendet werden.

+ + + + +
+
+

Tabellen

+

Tabellen bieten besonders geordnete Struktur. Häufig werden in ihnen Text und Daten kombiniert dargestellt. Dies erfordert individuelle Formatierungen. Einige grundlegende Eigenschaften werden im folgenden aufgezeigt. Tabellen sind in ihrer Größe entweder vordefiniert (fixiert) oder richten sich nach ihrem Inhalt. Das bedeutet, die Spaltenbreite entspricht der breitesten ihrer Zellen.

+ + + + + + + + + + +
Eineeinfache
Tabelle
+
table.width_full>tbody>tr>td*2^tr>td[colspan=2]
+
+ + + + + + + + + + +
Einefreie (nicht fixierte)
Tabelle
+
table>tbody>tr>td*2^tr>td[colspan=2]
+ + + + + + + + + + +
Mitohne
Linien
+
table.table_blank>tbody>tr>td*2^tr>td[colspan=2]
+
+

Die nächste Tabelle verwendet alle zur Auszeichnung verfügbaren Elemente und hat eine starre Zellverteilung:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Beschreibung bzw. Zusammenhang der Tabelle
KopfzeileAB
FußzeileAB
Tabelle
mitTitel
Kopf-und
Fußzeile
+
table.width_full.table_fix>caption+thead>tr>th*3^^tfoot>tr>td*3^^tbody>(tr>td*3)*3
+
+

Viele weitere Formate sind möglich. Hier nur einige typische Beispiele:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KopfzeileAB
VorspalteEine
1erweiterte
2Tabelle
+
table.width_full.table_stripe.table_free>tbody>tr>td*3
+ + + + + + + + + + + + + + + + + + + + + + + +
Tabelle
ohneRahmen
jedochmit
Streifen
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Die Verteilung der Zellen ist hier von ihrem Inhalt abhängig.
BezeichnungMenge>9000
Summe9001
Alpha18990
Bravo101
Charlie11
+
+
+

Formulare

+

Spätestens hier werden Betrachter zu Benutzern. Texteingabefelder und verschiedene Bedienelemente geben Möglichkeiten zur Interaktion. Diese Elemente sind in vielerlei Hinsicht besonders. Werden sie nicht explizit gestaltet, ist ihre Erscheinung system- bzw. browserabhängig.
Üblicherweise stehen alle Bedienelemente innerhalb eines <form> Elementes. Dieses ist notwendig um Angaben zur Kommunikation mit dem Server zu setzen. Es hat normalerweise keine gestalterische Funktion.

+

Grundlegend ist das Element <input>. Es hat viele Attribute um den Typ der Eingabe anzupassen. Ist es undefiniert nimmt es jegliche textbasierte Information auf und erhält eine Standardgröße.

+

+

Ein spezieller Typ des Eingabefeldes hat die Funktion einer Schaltfläche <input[type="button"]>. Es gibt allerdings auch ein eigenes Element <button> dafür.

+

+

+

Interaktive Elemente können durch das Attribut readonly nur lesbar gemacht werden oder mittels disabled gänzlich deaktiviert werden.

+

+

+

Das Element <label> ergänzt interaktive Elemente um eine Beschriftung. Wichtig ist hier, dass die Beziehung beider Elemente zu einander deutlich ist.

+

+ +

+
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+

Zusätzlich zur Beschriftung einzelner Elemente gibt es auch die Möglichkeit Gruppierungen zu schaffen. Diese werden mit <fieldset> realisiert.

+
+
+ + +
+
+

Sie können mittels <legend> auch eine eigene Beschriftung erhalten.

+
+ Einfache Eingabeelemente +
+
+
+
+
+ +
+ + +
+ + +
+
+
+ Einfache Eingabeelemente mit Stil +
+
+
+
+
+ +
+ + +
+ + +
+
+
+ Weitere Eingabemöglichkeiten +

Innerhalb einer Gruppe können nicht nur Ein- und Ausgabefelder platziert werden. Andere Elemente ergänzen Information oder lockern das Erscheinungsbild auf.

+

Hier nun eine Liste weiterer Arten von Eingabefeldern:

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +

Interaktive Elemente

+
+
+

Struktur

+
+
+
+ + + + +
+
+
+
+
+

Medien

+
+
+

Druck

+
+ +
+
+

Ende der Einführung

+

Dies war eine Übersicht der grundlegenden Elemente. Nun folgen weitere Elemente mit besonderen Formatierungen.

+
+
+
+ +
+
+

HIPPIE Erklärung

+

Aufbau, Standardwerte

+
+
+

+
+
+ +{% endblock %} + +{% block script %} +{{ super() }} + + +{% endblock %} diff --git a/source/screens/demo/tests.njk b/source/screens/demo/tests.njk index fb16bd4..b667bea 100644 --- a/source/screens/demo/tests.njk +++ b/source/screens/demo/tests.njk @@ -1,94 +1,94 @@ - -{% set pageId = "tests" %} -{% set pageClass = "h_full_view" %} - -{% extends "demo/_default.njk" %} -{% import "demo/macros/_nav.njk" as nav %} - -{% block title %}Tests{% endblock %} -{% block head %} -{{ super() }} - -{% endblock %} - -{% block body %} - - - -
- Caps Lock is ON. -
- -

Navigation

-{{ nav.main(data.demoadditionallinks, 'Tests') }} -{% endblock %} - -{% block script %} -{{ super() }} - - -{% endblock %} + +{% set pageId = "tests" %} +{% set pageClass = "h_full_view" %} + +{% extends "demo/_default.njk" %} +{% import "demo/macros/_nav.njk" as nav %} + +{% block title %}Tests{% endblock %} +{% block head %} +{{ super() }} + +{% endblock %} + +{% block body %} + + + +
+ Caps Lock is ON. +
+ +

Navigation

+{{ nav.main(data.demoadditionallinks, 'Tests') }} +{% endblock %} + +{% block script %} +{{ super() }} + + +{% endblock %} diff --git a/source/templates/demo/_default.njk b/source/templates/demo/_default.njk index 3c5bfee..992dffe 100644 --- a/source/templates/demo/_default.njk +++ b/source/templates/demo/_default.njk @@ -1,32 +1,35 @@ - - - - - - - {% block head %} - {% block title %}{% endblock %} - HIPPIE - - {% include "demo/partials/_meta.njk" %} - {% block meta %}{% endblock %} - - {% include "hippie/partials/_head_script.njk" %} - - {% include "demo/partials/_links.njk" %} - {% block links %} - - {% endblock %} - {% endblock %} - - - - {% block body %}{% endblock %} - - {% block script %} - - {% endblock %} - - + + + + + + + {% block head %} + {% block title %}{% endblock %} - HIPPIE + + {% include "demo/partials/_meta.njk" %} + {% block meta %}{% endblock %} + + {% include "hippie/partials/_head_script.njk" %} + + {% include "demo/partials/_links.njk" %} + {% block links %} + + {% endblock %} + {% endblock %} + + + + {% block body %}{% endblock %} + + {% block script %} + + + {% endblock %} + + diff --git a/source/templates/demo/_extended.njk b/source/templates/demo/_extended.njk index 44b367b..f88905d 100644 --- a/source/templates/demo/_extended.njk +++ b/source/templates/demo/_extended.njk @@ -1,53 +1,56 @@ - - - - - - - {% block head %} - {% block title %}{% endblock %} - HIPPIE - - {% include "demo/partials/_meta.njk" %} - {% block meta %}{% endblock %} - - {% include "hippie/partials/_head_script.njk" %} - - {% include "demo/partials/_links.njk" %} - {% block links %} - - - - - - - - - {% endblock %} - {% endblock %} - - - - {% include "hippie/partials/_body_hover.njk" %} -
- {% include "hippie/partials/_header.njk" %} - -
- {% block main %}{% endblock %} -
- - {% include "hippie/partials/_footer.njk" %} -
- - {% block script %} - - {# #} - {% endblock %} - - + + + + + + + {% block head %} + {% block title %}{% endblock %} - HIPPIE + + {% include "demo/partials/_meta.njk" %} + {% block meta %}{% endblock %} + + {% include "hippie/partials/_head_script.njk" %} + + {% include "demo/partials/_links.njk" %} + {% block links %} + + + + + + + + + {% endblock %} + {% endblock %} + + + + {% include "hippie/partials/_body_hover.njk" %} +
+ {% include "hippie/partials/_header.njk" %} + +
+ {% block main %}{% endblock %} +
+ + {% include "hippie/partials/_footer.njk" %} +
+ + {% block script %} + + + {# #} + {% endblock %} + + diff --git a/source/templates/demo/_maintenance.njk b/source/templates/demo/_maintenance.njk index ddf7e61..d6abd57 100644 --- a/source/templates/demo/_maintenance.njk +++ b/source/templates/demo/_maintenance.njk @@ -1,28 +1,28 @@ - - - - - - - {% block head %} - {% block title %}{% endblock %} - HIPPIE - - {% include "demo/partials/_meta.njk" %} - {% block meta %}{% endblock %} - - {% block links %} - - - - {% endblock %} - {% endblock %} - - - - {% block main %} - - {% import "hippie/macros/footer-status.njk" as status %} - {{ status.footer() }} - {% endblock %} - - + + + + + + + {% block head %} + {% block title %}{% endblock %} - HIPPIE + + {% include "demo/partials/_meta.njk" %} + {% block meta %}{% endblock %} + + {% block links %} + + + + {% endblock %} + {% endblock %} + + + + {% block main %} + + {% import "hippie/macros/footer-status.njk" as status %} + {{ status.footer() }} + {% endblock %} + + diff --git a/source/templates/hippie/partials/_head_script.njk b/source/templates/hippie/partials/_head_script.njk index 944ed49..4869de5 100644 --- a/source/templates/hippie/partials/_head_script.njk +++ b/source/templates/hippie/partials/_head_script.njk @@ -1,32 +1,58 @@