diff --git a/src/components/slides/css-introduction/basic-selectors.astro b/src/components/slides/css-introduction/basic-selectors.astro new file mode 100644 index 0000000..8aa7d8c --- /dev/null +++ b/src/components/slides/css-introduction/basic-selectors.astro @@ -0,0 +1,137 @@ +
+
+

Nur bestimmte Elemente stylen - Selektoren

+
+ +
+

Bisher haben wir gesehen, wie wir Styles einbinden können, ein paar erste "Grundregeln" denen CSS folgt und wie wir Textfarbe mit color ändern können.

+
+ +
+

+ Nun möchten wir näher betrachten, wie man Selektoren benutzt um nur bestimmte Elemente zu stylen. +

+
+ +
+

Tags stylen

+
+
+

+ Die "einfachste" Anwedung von styles geschieht durch die Tag-Selektoren. + Wir können einfach schreiben, welches Tag gestyled werden soll. Style-Regeln werden dabei in geschweiften Klammer platziert +

+
+
+

+      span {
+        color: hotpink;
+      }
+    
+ Hallo Welt! +
+ +
+

Klassen & ID's

+
+
+

Weitere gängige Werkzeuge für die Selektierung sind Klassen und ID's.

+

Klassen-Namen werden in CSS mit einem Punkt (.) prefixed.

+

ID's werden mit einem Hashtag (#) prefixed.

+
+
+

+      span {
+        color: hotpink;
+      }
+      span.meine-klasse {
+        color: coral;
+      }
+      span#meine-id {
+        color: brown;
+      }
+    
+
+ Ich bin nur ein Span! +
+ Ich habe eine Klasse "meine-klasse" +
+ Ich habe eine ID "meine-id" +
+
+ +
+

Spezifität

+
+
+

Nun ein paar weitere Regeln: Eine ID ist spezifischer als eine Klasse ist spezfischer als ein Tag-Selektor

+
+
+

Es ist möglich, mehrere Klassen-Namen eines Elements zu selektieren:

+
+
+

+      span.eins {
+        color: blue;
+      }
+      span.eins.zwei {
+        color: green;
+      }
+    
+
+ Klase "eins" +
+ Klase "zwei" +
+ Klase "eins und zwei" +
+
+
+

Weil das letzte span zwei "zutreffende" Klassen hat, hat dies mehr Gewicht (1 vs 2)

+

Zusätzlich ist nun der span-Selektor hinfällig: Da eine Klasse generell spezifischer wie ein Tag ist, wird der Tag-Selektor "überflüssig".

+
+
+

Dies trifft natürlich nicht in Situationen zu, in denen explizit ein bestimmtes Tag mit einer bestimmten Klasse gestyled werden soll.

+

In der Regel wird aber vermehrt einfach nur mit einer Klasse gestyled (auch hier wieder für die wiederverwendbarkeit).

+
+ +
+

Manchmal werden Klassen auch als Singulare "Modifikationen" auf Elemente "gepackt".

+

+      <span class="bold">Fetter Text</span>
+      <span class="font-blue">Blauer Text</span>
+      <span class="font-blue bold">Blauer, fetter Text</span>
+    
+
+ Fetter Text +
+ Blauer Text +
+ Blauer, fetter Text +
+
+
+ +
+

Es ist auch möglich beliebige Attribute eines HTML-Tags zu selektieren und zum stylen zu verwenden

+

+      
+      span[data-red] {
+        color: red;
+      }
+      
+      span[data-color="red"] {
+        color: red;
+      }
+    
+
+ +
+

Was ist besser? Jedes Element speziell an seine Bedürfnisse stylen? Jedes Element mit Klassen "vollpacken" um den gewünschten Style zu erhalten?

+
+
+

Beide Wege sind valide und natürlich haben sich auch Systeme hierfür Entwickelt, die das ermöglichen. Trotzdem ist und bleibt die Entscheidung im Team bei den Entwicklern.

+
+
\ No newline at end of file diff --git a/src/components/slides/css-introduction/how-to-embed.astro b/src/components/slides/css-introduction/how-to-embed.astro new file mode 100644 index 0000000..d98c7a6 --- /dev/null +++ b/src/components/slides/css-introduction/how-to-embed.astro @@ -0,0 +1,64 @@ +
+
+

Styles im HTML einbinden

+
+
+

Es gibt 3 Möglichkeiten CSS auf einer HTML-Seite zu verwenden:

+ +
+
+

Inline-Styles

+
+
+

+ Die meisten HTML-Elemente können mithilfe des style Attributes direkt gestyled werden. +

+

+ Im Normalfall sollte von dieser Möglichkeit abgesehen werden, da inline-Styles eine höhere "Wichtigkeit" haben als andere Styling-Methoden und eine Suche nach einem Styling-Fehler sehr mühselig wird. +

+
+
+

+      <span style="color: red;">
+        Hier könnte Ihre Werbung stehen!
+      </span>
+    
+
+
+

Das style-Tag

+
+
+

Mithilfe des Style-Tag können mehrere Regeln auf einmal definiert werden, die Mithilfe von Selektoren bestimmte Elemente im HTML stylen

+
+
+

+      <style>
+        // Hier sind die selektoren sowie die dazugehörigen Styles zu finden!
+      </style>
+    
+
+ +
+

Styles in einer CSS-Datei definieren

+
+
+

Die wahrscheinlich üblichste Variante ist es, die Style-Deklarationen in einer gesonderten Datei zu definieren und diese im HTML einzubinden

+
+
+

Fördert die "Portabilität" zwischen HTML-Dateien

+

Alles an einem Platz

+

Seperation of Concerns

+
+
+

Die Einbindung von CSS in HTML-Dateien erfolgt mit dem link-Tag

+
+
+
 
+      <link rel="stylesheet" href="style.css">
+    
+
+
\ No newline at end of file diff --git a/src/components/slides/css-introduction/index.astro b/src/components/slides/css-introduction/index.astro new file mode 100644 index 0000000..5c731c2 --- /dev/null +++ b/src/components/slides/css-introduction/index.astro @@ -0,0 +1,53 @@ +--- +import Title from './title.astro' +import WhatIsCss from "./what-is-css.astro"; +import HowToEmbed from './how-to-embed.astro'; +import BasicSelectors from './basic-selectors.astro' +--- + +
+ + <WhatIsCss /> + <HowToEmbed /> + <BasicSelectors /> +</div> + +<style lang="scss" is:global> +.apply-style { + &.one { + span { + color: hotpink; + } + span.meine-klasse { + color: coral; + } + span#meine-id { + color: brown; + } + } + + &.two { + span.eins.zwei { + color: green; + } + span.eins { + color: blue; + } + } + + &.three { + .bold { + font-weight: bold; + } + .font-green { + color: green; + } + .font-blue { + color: blue; + } + .font-red { + color: red; + } + } +} +</style> \ No newline at end of file diff --git a/src/components/slides/css-introduction/title.astro b/src/components/slides/css-introduction/title.astro new file mode 100644 index 0000000..f160003 --- /dev/null +++ b/src/components/slides/css-introduction/title.astro @@ -0,0 +1,4 @@ +<section> + <h1>Einführung in CSS</h1> + <p>Wie man seine Website schön macht (oder so ähnlich)</p> +</section> \ No newline at end of file diff --git a/src/components/slides/css-introduction/what-is-css.astro b/src/components/slides/css-introduction/what-is-css.astro new file mode 100644 index 0000000..31a1d76 --- /dev/null +++ b/src/components/slides/css-introduction/what-is-css.astro @@ -0,0 +1,62 @@ +<section> + <section> + <h2>Was genau ist CSS?</h2> + </section> + + <section> + <p>CSS steht für <strong>Cascading Style Sheet</strong>.</p> + <p>Im Grunde <strong>selektieren</strong> wir bestimmte <em>tags</em> innerhalb der Website anhand spezieller Regeln um diese daraufhin mit bestimmten Instruktionen <em>visuell</em> zu modifizieren.</p> + </section> + + <section> + <p>Im Regelfall werden Farben auf Vorder- sowie Hintergründe angewendet;</p> + <p>Die Schriftart sowie weitere Attribute wie Schriftgröße, Fettdruck und mehr modifiziert;</p> + <p>Weitere visuelle Effekte wie Schattierungen, Ränder und mehr verwendet;</p> + </section> + + <section> + <p>Zusätzlich bietet CSS auch die Möglichkeit, Abstände zwischen Elementen hinzuzufügen;</p> + <p>Als auch Layouts im HTML zu implementieren;</p> + </section> + + <section> + <p>Weitere Features:</p> + <ul> + <li>Animationen & Transitionen</li> + <li>Spezielle Positionierungs-Regeln</li> + <li>Meta-Attribute stylen</li> + </ul> + </section> + + <section> + <h3>Was bedeutet "Cascading" in CSS?</h3> + </section> + + <section> + <p>Cascading bezieht sich auf die Funktionsweise von CSS selber</p> + </section> + + <section> + <p>Im Grunde lassen sich CSS-Regeln überschreiben. Dies Funktioniert im ersten Sinne von "Die letzte Regel gilt"</p> + </section> + + <section> + <pre class="css"><code data-trim data-line-numbers="1|2,3" is:raw> + color: blue; // Textfarbe "blau" stellen + color: red; // Textfarbe "rot" stellen, + // dies überschreibt das blau aus der ersten Zeile + </code></pre> + <p> + Resultat: + </p> + <p><span style="color: blue; color: red;"> + Hallo Welt! + </span></p> + </section> + + <section> + <p> + Um komplexere Anforderungen zu bewältigen, enthält CSS eine Reihe an weiteren "Regeln", die die <strong>"Spezifität"</strong> eines Selektors bestimmt. + </p> + </section> +</section> \ No newline at end of file diff --git a/src/pages/slides/css-introduction.astro b/src/pages/slides/css-introduction.astro new file mode 100644 index 0000000..9a266a1 --- /dev/null +++ b/src/pages/slides/css-introduction.astro @@ -0,0 +1,8 @@ +--- +import Reveal from "../../layouts/Reveal.astro"; +import Slides from '../../components/slides/css-introduction/index.astro'; +--- + +<Reveal title="Einführung in CSS"> + <Slides /> +</Reveal> \ No newline at end of file