CSS- und HTML-Dokumentation: Unterschied zwischen den Versionen
MP (Diskussion | Beiträge) (→Klassen zur speziellen Verwendung) |
MP (Diskussion | Beiträge) |
||
Zeile 13: | Zeile 13: | ||
Alle Elemente im e-vendo-Shop sind mit box-sizing:border-box voreingestellt. Das heißt, dass bei Größenangaben Rahmen und Innenabstände mit einberechnet werden. Außenabstände kommen weiterhin extra dazu. | Alle Elemente im e-vendo-Shop sind mit box-sizing:border-box voreingestellt. Das heißt, dass bei Größenangaben Rahmen und Innenabstände mit einberechnet werden. Außenabstände kommen weiterhin extra dazu. | ||
Wichtig wird dies beim Floating. So werden zwei Boxen mit je 50% Breite und Innenabstand sowie Rahmen auch nebeneinander angezeigt, da Ihre Gesamtbreite bei 100% liegt. Nimmt man noch einen Außenabstand dazu, übersteigt die Gesamtbreite 100% (50% + Außenabstand) und die Boxen werden umbrechen. | Wichtig wird dies beim Floating. So werden zwei Boxen mit je 50% Breite und Innenabstand sowie Rahmen auch nebeneinander angezeigt, da Ihre Gesamtbreite bei 100% liegt. Nimmt man noch einen Außenabstand dazu, übersteigt die Gesamtbreite 100% (50% + Außenabstand) und die Boxen werden umbrechen. | ||
+ | |||
= allgemeine Klassen = | = allgemeine Klassen = | ||
Zeile 237: | Zeile 238: | ||
<div style="clear:both"></div> | <div style="clear:both"></div> | ||
</div> | </div> | ||
+ | |||
= Komplexere Strukturen = | = Komplexere Strukturen = | ||
Zeile 358: | Zeile 360: | ||
<div style="clear:left"></div> | <div style="clear:left"></div> | ||
</div> | </div> | ||
+ | |||
= Klassen zur speziellen Verwendung = | = Klassen zur speziellen Verwendung = | ||
Zeile 378: | Zeile 381: | ||
:Modifiziert den Link-Anker, sodass die Topnav (Navigation 1, 5) nicht darüber liegt und ihn verdeckt. | :Modifiziert den Link-Anker, sodass die Topnav (Navigation 1, 5) nicht darüber liegt und ihn verdeckt. | ||
:Das Anker-Element muss ein Block-Element sein oder die Klasse block bzw. inline-block bekommen. | :Das Anker-Element muss ein Block-Element sein oder die Klasse block bzw. inline-block bekommen. | ||
+ | |||
= JavaScript-Funktionen = | = JavaScript-Funktionen = |
Version vom 30. November 2018, 16:54 Uhr
Inhaltsverzeichnis
Vorwort
Mit den hier aufgeführten CSS-Klassen können eigene HTML-Inhalte einfacher gestaltet werden. Sie dienen als Ergänzung zu den bereits vorhandenen tp-Klassen. Diese Klassen dürfen nicht mit eigenem CSS überschrieben werden, da sie vom Shop selbst genutzt werden.
Als Leitfaden dient das mobile-first-Konzept. Das heißt, dass Inhalte zuerst für die kleinsten gängigen Mobilgeräte (ca. 320px) erstellt und dann mittels Media-Queries für größer werdende Bereiche optimiert werden.
Die Erläuterung zu den Farben im Shop-Management ist hier zu finden
Allgemeines
box-sizing:border-box
Alle Elemente im e-vendo-Shop sind mit box-sizing:border-box voreingestellt. Das heißt, dass bei Größenangaben Rahmen und Innenabstände mit einberechnet werden. Außenabstände kommen weiterhin extra dazu. Wichtig wird dies beim Floating. So werden zwei Boxen mit je 50% Breite und Innenabstand sowie Rahmen auch nebeneinander angezeigt, da Ihre Gesamtbreite bei 100% liegt. Nimmt man noch einen Außenabstand dazu, übersteigt die Gesamtbreite 100% (50% + Außenabstand) und die Boxen werden umbrechen.
allgemeine Klassen
wichtige Breiten
w_100 : 100%
w_75 : 75%
w_50 : 50%
w_33 : 33%
w_25 : 25%
Die Breiten können mit dem Zusatz -480, -640 und -880 versehen werden und wirken dann erst ab erreichen der entsprechenden Größe in Pixeln.
Abstände
Abstandsklassen gibt es in zwei Formen: Absolut mit festen Pixeln oder relativ an der Schriftgröße ausgerichtet. Erkennbar sind diese an dem letzten Buchstaben: "a" für absolut und "r" für relativ. Relative Abstände sind gut geeignet, wenn Texte mehr getrennt werden sollen, sodass diese bei Vergrößerung der Schrift im selben Verhältnis mitwachsen. Absolute Abstände werden eher bei Containern eingesetzt, wo der Abstand unabhängig von der Schrift immer gleich groß ist.
- nach außen (margin)
m_b-a : margin von 25px
m_m-a : margin von 15px
m_s-a : margin von 10px
m_ss-a : margin von 5px
m_b-r : margin von 2em
m_m-s : margin von 1,2em
m_s-r : margin von 0,8em
m_ss-r : margin von 0,4em
- nach innen (padding)
p_b-a : padding von 25px
p_m-a : padding von 15px
p_s-a : padding von 10px
p_ss-a : padding von 5px
p_b-r : padding von 2em
p_m-s : padding von 1,2em
p_s-r : padding von 0,8em
p_ss-r : padding von 0,4em
- Beispiele
<div class="m_s-r"></div>
<div class="p_s-r"></div>
Alle Abstände lassen sich auch für nur eine Seite festlegen. Dazu wird dem Klassennamen nach dem ersten "m" oder "p" der Zusatz "-t" für oben (top), "-r" für rechts (right), "-b" für unten (bottom) oder "-l" für links (left) angehangen.
Zum Beispiel für einen Margin von 0,8em auf der linken Seite: m-l_s-r
Rahmen
Rahmen können fast jedem Element beliebig gegeben werden:
b_ : Kompletter Rahmen
b_t : Nur oben
b_b : Nur unten
b_l : Nur links
b_r : Nur rechts
b_h : Horizintaler Rahmen oben und unten
b_v : Vertikaler Rahmen links und rechts
b_tub : Badewanne links, unten, rechts
b_hat : Hut links, oben ,rechts
- Beispiele
<div class="b_"></div>
<div class="b_t"></div>
<div class="b_tub"></div>
<div class="b_hat"></div>
<div class="b_t b_l"></div>
Formulare
Formulargestaltung passend zu den Shopformularen (z.B. Loginmaske). Der Feldtitel befindet sich im Eingabebereich und wird bei Aktivierung des Feldes sanft an den oberen Rand geschoben. Dadurch sind Formulare automatisch vom Design her für kleine Bildschirme optimiert. Es wird um jedes Eingabefeld und dem dazugehörige Label ein Element mit der Klasse input-field gelegt.
<form>
<div class="input-field">
<label for="Feld-ID">Feldtitel</label>
<input type="text" id="Feld-ID" name="Feld-Name">
</div>
</form>
Text
Texte können unterschiedlich ausgerichtet werden
acenter : Zentriert
aleft : Linksbündig
aright : Rechtsbündig
up : Hochgestellt
Texte können dekoriert werden
italic : Kursiv
bold : Fett
underline : Unterstrichen
crossline : Durchgestrichen
upper : Alles in Großbuchstaben
style-0 : Kursiv und fett zurücksetzen
no-deco : Alle Striche entfernen
- Beispiel
<span class="italic">Text</span>
Text
<span class="bold">Text</span>
Text
<span class="underline">Text</span>
Text
<span class="crossline">Text</span>
Text
<span class="upper">Text</span>
Text
<span class="italic bold underline upper">Text</span>
Text
Farben
Es werden alle wichtigen Farben aus dem Shop-Management zur Verfügung gestellt. So bleiben die eigenen Inhalte auch farblich flexibel.
Eine ausführliche Erläuterung zu den Farben ist hier zu finden
- Schriftfarben
Aufsteigend heller werdend:
f-color_basic : Grund-Farbe (im Standard #333333)
f-color_color1
f-color_color2, f-color_light
f-color_color3
f-color_color4, f-color_lighter
f-color_color5, f-color_lightest
Für besondere Texte:
f-color_warning : Warnfarbe (im Standard Rot)
f-color_notice : Hinweisfarbe (im Standard Grün)
f-color_high : In der Highlight-Farbe
highlight : In der Highlight-Farbe und fett
f-color_onhigh : Für einem Hintergrund in der Highlight-Farbe (am besten zusammen mit bg-color_high benutzen)
- Hintergrundfarben
Aufsteigend dunkler werdend:
bg-color_color1, bg-color_light
bg-color_color2
bg-color_color3, bg-color_smooth
bg-color_color4
bg-color_color5, bg-color_strong
bg-color_color6
bg-color_color7
bg-color_color8, bg-color_dark
Besondere Hintergründe:
bg-color_main : Haupthintergrund
bg-color_high : Highlight-Farbe
bg-color_high-hover : Highlight-Farbe bei Mouseover
- Rahmenfarben
Wie Hintergrundfarben aufsteigend dunkler werdend:
b_color1
b_color2, b_light
b_color3
b_color4
b_color5, b_standard
b_color6
b_color7
b_color8, b_dark
Erste Strukturen
Floating
Um Elemente nebeneinander auszurichten, wird das Floating benötigt. Die folgenden Klassen helfen bei einem sauberen Einsatz.
float_l : Das Element richtet sich links vom nächsten Nachbarn aus
float_r : Das Element richtet sich rechts vom nächsten Nachbarn aus
clear_b : Beendet ein float, sodass die nächsten Elemente wieder der normalen Ausrichtung folgen. Muss dem Elternelement angehängt werden.
- Beispiele
<div class="clear_b">
<div class="float_l m-r_m-a">1</div>
<div class="float_l">2</div>
</div>
Komplexere Strukturen
Catalog
Bei Catalog handelt es sich um eine Darstellung nebeneinander. Dabei wird die Box in zwei Bereiche zu 20% und 80% geteilt. Der größere Bereich ist noch einmal zur Hälfte geteilt.
HTML
<div class="catalog grid design">
<article>
<div class="pic"></div>
<div class="desc">
<div class="desc-left"></div>
<div class="desc-right"></div>
</div>
</article>
</div>
Klassen
- .catalog.grid
- erzeugt die Formatierung als Catalog
- .catalog.design
- Fügt Abstände und Hintergrundfarben hinzu
Vorschau
- kleiner 480px
- ab 480px
- ab 640px
- ab 880px
Es werden bis zu fünf Kacheln automatisch nebeneinander dargestellt je nach vorhandener linken oder rechten Seite im Shop.
HTML
<div class="tiles grid design">
<div>
<div></div>
</div>
</div>
Klassen
- .tiles.grid
- erzeugt die Formatierung als Kacheln
- .tiles.design
- Fügt Abstände und Hintergrundfarben hinzu
Vorschau
- kleiner 480px
- ab 480px
- ab 640px
- ab 880px
Eine Hauptspalte
Zwei oder drei Hauptspalten
Klassen zur speziellen Verwendung
Die folgenden Klassen erfüllen spezielle Funktionen, wie das Ausblenden von Elementen, wenn bestimmte Bedingungen erfüllt sind.
- show_with_login
- Element wird nur angezeigt, wenn der Kunde eingeloggt ist.
- show_with_url
- Element wird nur angezeigt, wenn das Attribut 'href' vorhanden ist und keinen Leerstring enthält.
- show_with_src
- Element wird nur angezeigt, wenn das Attribut 'src' vorhanden ist und keinen Leerstring enthält.
- no-print
- Element wird nur angezeigt, wenn es sich nicht um eine Druckausgabe handelt.
- show_with_order
- Element wird nur angezeigt, wenn wir uns im Bestellprozess befinden.
- indivdual_box
- Element wird nur angezeigt, wenn folgendes nicht zutrifft:
- Es gibt ein Kind-Element mit der Klasse individual_content, welches leer ist.
- anchor
- Modifiziert den Link-Anker, sodass die Topnav (Navigation 1, 5) nicht darüber liegt und ihn verdeckt.
- Das Anker-Element muss ein Block-Element sein oder die Klasse block bzw. inline-block bekommen.
JavaScript-Funktionen
Slider und Carousel
Der Shop verwendet das Plugin slick, um Slider darzustellen.
Carousel
- Das Grundlegende HTML
<div id="mySlider" class="carousel">
<div class="carousel-slider">
<div class="slider-item">Inhalt für Slider-Element 1</div>
<div class="slider-item">Inhalt für Slider-Element 2</div>
<div class="slider-item">Inhalt für Slider-Element 3</div>
<div class="slider-item">Inhalt für Slider-Element 4</div>
</div>
<div class="carousel-button carousel-next"><span class="fa angle-r_icon"></span></div>
<div class="carousel-button carousel-prev"><span class="fa angle-l_icon"></span></div>
</div>
- Das benötigte JavaScript
Der Slider kann auf verschiedenste Weise konfiguriert werden. Hier ist ein Beispiel der Bestseller des Shops mit verschiedenen Breakpoints (Pixelgröße des Bildschirms).
Mehr Informationen zur Konfiguration sind in der slick-Dokumentation zu finden.
Optionen für den Slider festlegen:
mySliderOptions = {
vertical:false
,slidesToShow:4
,slidesToScroll:4
,adaptiveHeight:true
,infinite:true
,responsive: [
{
breakpoint:700,
settings: {
slidesToShow:3
,slidesToScroll:3
}
}
,{
breakpoint:560,
settings: {
slidesToShow:2
,slidesToScroll:2
}
}
,{
breakpoint:450,
settings: {
slidesToShow:1
,slidesToScroll:1
}
}
]
};
Jetzt wird es etwas komplizierter, denn wir müssen den Slider über das hauseigene JS-Framework SEO-freundlich initialisieren:
overseer.addToEvent("", function(){
async.register('slick', '{shop}/js/jquery/slick.js').done(function(){
$('#mySlider .carousel-slider').slick(mySliderOptions);
});
}, events.LOAD);
Über den Overseer binden wir das Script an das globale einmalige Event window.load, da wir auf eventuelle Bilder im Slider warten müssen.
Da wir nicht wissen, ob das Plugin schon dem Shop bekannt gemacht worden ist, rufen wir die Funktion async auf und übergeben ihr den Pfad zum Script. Jetzt wird das Script automatisch asynchron geladen und wir können als Callback (done) den Slider endlich starten.
Slider
Ein Slider, wie auf der Startseite des Shops, wird genauso gebaut. Dazu müssen lediglich noch zwei Werte in der Konfiguration angepasst und die Breakpoints entfernt werden:
slidesToShow:1
slidesToScroll:1
weiteres JavaScript einbringen
JavaScript kann generell überall genutzt werden.
Der Shop bringt die Bibliothek JQuery mit, welche vieles vereinfacht. Um diese nutzen zu können muss mit dem e-vendo-Framework overseer gearbeitet werden, welches Scripte, die JQuery benötigen, ausführt, sobald die Bibliothek nach dem HTML geladen worden ist.
- Overseer
Der Overseer lässt sich nutzen, indem man ihm das eigene JavaScript in einer Funktion übergibt und an ein Event bindet:
overseer.add('MeineFunktion', function(){ Mache JQuery-Dinge und so ... });
Was passiert hier?
overseer.add(Name, function()) nimmt zwei Parameter entgegen: Einen frei gewählten Namen oder Leerstring und eine Funktion.
- Name
- Der Name dient dazu, auf eine spezielle schon registrierte Funktion zuzugreifen. In der Regel ist das nicht nötig und hier kann einfach ""(Leerstring) übergeben werden.
- Funktion
- In der Funktion befindet sich das gesamte JavaScript, welches mit JQuery arbeitet. Am besten schreibt man die Funktion außerhalb vom Overseer und übergibt dann nur noch den Namen
- myFunction(){ ... }
- Overseer.add("", myFunction);
Achtung: Der Overseer führt alle übergebenen Funktionen automatisch aus!