HTML5-Tutorium: JavaScript: Hello World 06: Unterschied zwischen den Versionen
Kowa (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Kowa (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 63: | Zeile 63: | ||
Wenn eine Konstante definiert wurde, kann man | Wenn eine Konstante definiert wurde, kann man | ||
im übrigen CSS-Code mittels <code>var</code> darauf zugreifen (und nicht etwa mittels <code>const</code>, :-( ) | im übrigen CSS-Code mittels <code>var</code> darauf zugreifen (und nicht etwa mittels <code>const</code>, :-( ) | ||
<syntaxhighlight lang="CSS"> | |||
:root | |||
{ --font-family-serif: "Times New Roman", Times, serif; } | |||
p | |||
{ font-family: var(--font-family-serif); } | |||
label | |||
{ font-family: var(--font-family-serif); } | |||
</syntaxhighlight> | |||
Auch die Möglichkeit, Werte zu berechnen, gibt es in der Zwischenzeit (SCSS: <code>math</code>, CSS: <code>calc</code>). | |||
Das heißt, die Bedeutung von SCSS, Less etc. schwindet. Aber zurzeit bieten sie immer noch genügend mächtige Erweiterungen gegenüber CSS, | |||
wie {{zB}} die Möglichkeit, CSS-Elemente zu verschachteln, sodass sich der Einsatz von SCSS noch lohnt. | |||
==== Transformation von SCSS in CSS ==== | |||
Leider unterstützt kein Browser SCSS direkt (im Gegensatz zu CSS). Aber für was gibt es Transpiler, die eine SCSS-Datei | |||
automatisch in eine CSS-Datei übersetzen können. Vite unterstützt CSS-Transpiler von Haus aus. Man muss den gewünschten Transpiler lediglich installieren: | |||
<syntaxhighlight lang="bash"> | |||
npm i -D sass | |||
</syntaxhighlight> | |||
Benennen Sie die Datei <code>src/css/body.css</code> in <code>src/css/body.scss</code> um. Ersetzen Sie außerdem | |||
in der Datei <code>src/js/main.js</code> den Import-Befehl | |||
<syntaxhighlight lang="javascript"> | |||
import '/css/body.css'; | |||
</source> | |||
durch | |||
<source lang="javascript"> | |||
import '/css/body.scss'; | |||
</source> | |||
Wenn Sie Ihren Code nun mittels <code>npm run dev</code> laufen lassen oder mittels <code>npm run build</code> übersetzen, | |||
sollte die Anwendung noch funktionieren, da der SASS-Loader die neue SCCS-Datei in geeigneten CSS-Code übersetzt. | |||
Schwieriger ist der direkte Import von <code>head.scss</code> in der Datei <code>index.html</code>, | |||
da diese SCSS-Datei von Vite nicht in CSS transformiert wird. Ein Workaround für dieses Problem wird später vorgestellt. | |||
===Vite-Konfiguration=== | |||
Fügen Sie <code>"config"</code> als Abkürzung für <code>"./src/css/_config.scss"</code> in die Datei <code>vite.config.js</code> ein. | |||
<syntaxhighlight lang="javascript"> | |||
... | |||
resolve: | |||
{ alias: | |||
{ ... | |||
'config': fileURLToPath(new URL('./src/css/_config.scss', import.meta.url)), | |||
... | |||
} | |||
} | |||
... | |||
</syntaxhighlight> | |||
===SCSS-Konfiguration=== | |||
In der Datei <code>_config.scss</code> werden alle von den anderen SCSS-Dateien benötigten Konstanten definiert. | |||
Das heißt, das DRY-Prinzip „Konstanten gehören nicht in den Code, sondern in Konfigurationsdateien“ wird ab sofort beachtet. | |||
Wenn man künftig am Layout einen Zeichensatz, eine Farbe, einen Hintergrund oder Ähnliches ändern will, | |||
reicht es, die entsprechenden Konstanten anzupassen und schon erzeugt Vite automatisch aktualisiere | |||
CSS-Dateien. | |||
Der Underscore <code>_</code> am Beginn des Dateinamens deutet an, dass diese SCSS-Datei nur von anderen SCSS-Dateien | |||
aber nicht von HTML- oder JavaScript-Dateien importiert werden. Durch SCSS-Import-Befehle ist es möglich, auch SCSS-Dateien | |||
zu modularisieren. | |||
'''<code>src/css/_config.scss</code>''' | |||
<syntaxhighlight lang="CSS"> | |||
@use 'sass:math'; | |||
$background-color: #C5EFFC; | |||
$font-family-sans: Verdana, Helvetica, sans-serif; | |||
$font-family-serif: "Times New Roman", Times, serif; | |||
$font-size-base: 3vw; | |||
$font-size-factor: 1.25; /* cmp. https://type-scale.com/ */ | |||
$font-size-h5: math.pow($font-size-factor,1)*$font-size-base; | |||
$font-size-h4: math.pow($font-size-factor,2)*$font-size-base; | |||
$font-size-h3: math.pow($font-size-factor,3)*$font-size-base; | |||
$font-size-h2: math.pow($font-size-factor,4)*$font-size-base; | |||
$font-size-h1: math.pow($font-size-factor,5)*$font-size-base; | |||
$font-size-p: math.pow($font-size-factor,0)*$font-size-base; | |||
$font-size-p-large: math.pow($font-size-factor,2)*$font-size-base; | |||
$font-size-small: math.pow($font-size-factor,-1)*$font-size-base; | |||
</syntaxhighlight> | |||
In dieser SCSS-Datei werden folgende SCSS-Erweiterungen verwendet: | |||
* Mathematische Berechnungen: <code>@use 'sass:math';</code> | |||
* Definition von Konstanten (die teilweise per Berechnung ermittelt werden) | |||
* Fonts sollten aus designerischen Gründen besser lokal gespeichert und per CSS eingebunden werden. | |||
Konstanten starten in SCSS mit einem Dollarzeichen. Sobald eine Konstante definiert wurde, | |||
kann sie in allen weiteren SCSS-Konstrukten verwendet werden. In SCSS stehen einen Operatoren zur Verfügung wie | |||
<code>+</code>, <code>-</code>, <code>*</code> und <code>/</code>, um Maße zu berechnen. Es gibt | |||
weitere Operatoren zum Vergleichen von Zahlen und Maßen sowie zur Berechnung von Strings und booleschen Werten: | |||
https://sass-lang.com/documentation/operators.<ref>https://sass-lang.com/documentation/operators</ref> | |||
Die Datei <code>_config.scss</code> kann nun mit Hilfe des SCSS-Befehls <code>@import 'config';</code> (ohne Underscore und ohne Endung, wegen der zuvor eingeführten Vite-Aliase) | |||
in die anderen beiden SCSS-Dateien eingefügt werden. Das Sass-Package | |||
kennt diesen Befehl und führt ihn beim Erstellen der zugehörigen CSS-Dateien auch aus. | |||
Der Import-Befehl hat erst dann einen Effekt, wenn in den anderen Dateien auf diese Konstanten zugegriffen wird. | |||
Aber er schadet auch nicht, wenn auf keine der dort definierten Konstanten zugegriffen wird. Der Import-Befehl selbst | |||
taucht ebenso wenig in den generierten CSS-Dateien auf, wie die Konstantendefinitionen. Der Transpiler ersetzt Konstanten | |||
in CSS-Definitionen durch ihren jeweiligen Wert. | |||
Sie können nun beispielsweise in der Datei <code>head.scss</code> die Konstante <code>$background-color</code> | |||
verwenden. In der daraus erzeugten CSS-Datei steht weiterhin der Farbwert <code>#C5EFFC</code>; | |||
'''<code>src/css/head.scss</code>''' | |||
<syntaxhighlight lang="CSS"> | |||
@import 'config'; | |||
body | |||
{ background-color: $background-color; } | |||
.hidden | |||
{ display: none; } | |||
</syntaxhighlighte> | |||
Die Datei <code>body.scss</code> ist deutlich umfangreicher. Daher wird der zugehörige CSS-Code | |||
ja auch erst dynamisch gemeinsam mit der Datei <code>web/js/main.js</code> geladen. | |||
'''<code>src/css/body.scss</code>''' | |||
<syntaxhighlight lang="CSS"> | |||
@import 'config'; | |||
html | |||
{ height: 100%; | |||
width: 100%; | |||
display: table; | |||
} | |||
body | |||
{ display: table-cell; | |||
text-align: center; | |||
vertical-align: middle; | |||
background-color: $background-color; | |||
font-size: $font-size-base !important; | |||
font-family: $font-family-sans; | |||
} | |||
h1 | |||
{ padding: 0; | |||
margin: 0; | |||
font-size: $font-size-h1; | |||
} | |||
p, label | |||
{ font-family: $font-family-serif; | |||
font-size: $font-size-p !important; | |||
} | |||
label, input, button | |||
{ width: 10em; | |||
font-size: 100%; | |||
display: inline-block; | |||
box-sizing: border-box; | |||
margin: 0.5ex; | |||
} | |||
label | |||
{ text-align: right; | |||
} | |||
#section_form | |||
{ text-align: center; | |||
margin-left: auto; | |||
margin-right: auto; | |||
h1 | |||
{ margin-bottom: 0.5ex; } | |||
} | |||
#section_hello | |||
{ p | |||
{ font-size: $font-size-p-large !important; } | |||
} | |||
</syntaxhighlight> | |||
In dieser SCSS-Datei werden folgende SCSS-Erweiterungen verwendet: | |||
* Import-Befehl: <code>@import 'config';</code> | |||
* Konstanten: <code>$font-family-sans</code>, <code>$font-size-base</code> etc. (Es sind noch viele weitere konstante Werte in <code>body.scss</code> enthalten, für die in <code>_config.scss</code> Konstanten definiert werden sollten) | |||
* Verschachtelte Anweisungen: {{zB}} <code>h1</code> innerhalb von <code>#section_form</code> | |||
Die verschachtelten Anweisungen strukturieren den CSS-Code deutlich besser. Es ist nicht mehr | |||
notwendig, einen Selektor wie <code>#section_form</code> mehrfach zu verwenden. | |||
Sehen Sie sich den Unterschied an. In der Datei <code>src/css/body.css</code> der Musterlösungen vom dritten Teil des Tutoriums hatte ich | |||
Folgendes geschrieben: | |||
<syntaxhighlight lang="CSS"> | |||
#section_form | |||
{ text-align: center; | |||
margin-left: auto; | |||
margin-right: auto; | |||
} | |||
#section_form > h1 | |||
{ margin-bottom: 0.5ex; } | |||
</syntaxhighlight> | |||
Die SCSS-Variante ist deutlich strukturierter und prägnanter. | |||
<syntaxhighlight lang="CSS"> | |||
#section_form | |||
{ text-align: center; | |||
margin-left: auto; | |||
margin-right: auto; | |||
h1 | |||
{ margin-bottom: 0.5ex; } | |||
} | |||
</syntaxhighlight> | |||
Insbesondere bei großen CSS-Dateien erweist sich diese kompaktere Schreibweise als vorteilhaft. | |||
===Weitere SCSS-Konstrukte=== | |||
SCSS ist sehr mächtig. Es gibt neben der Import-Anweisung eine Use-Anweisung (<code>@use</code>)<ref>https://sass-lang.com/documentation/at-rules/use</ref>, die SCSS-Konstrukten im Gegensatz zur Import-Anweisung einen Namespace zuweist. Damit ist es möglich, mehrere SCSS-Module zu verwenden, auch wenn | |||
dieses gleichbenannte Elemente enthalten, ohne dass es zu Namenskollisionen kommt. | |||
Darüber hinaus gibt es Mixins<ref>https://sass-lang.com/documentation/at-rules/mixin</ref> und Funktionen<ref>https://sass-lang.com/documentation/at-rules/function</ref>. Mit Mixins kann man ganze Styleblöcke definieren, um sie mehrfach zu verwenden. Mixins werden mit <code>@include</code> eingebunden. Dabei kann man Argumente an die Mixins übergeben, mit denen die entsprechenden Konstanten innerhalb des Mixins initialisiert werden. Funktionen funktionieren wie Funktionen in anderen Programmiersprachen auch. Es stehen einem If-Anweisungen und Schleifen-Befehle zur Verfügung. | |||
SCSS ist im Prinzip eine vollwertige Programmiersprache, um CSS-Dateien modular zu erstellen. | |||
==Fortsetzung des Tutoriums== | |||
Sie sollten nun [[HTML5-Tutorium: JavaScript: Hello World Vue 01|Teil 1 des Vue-Tutoriums]] bearbeiten. | |||
In diesem Teil des Tutoriums wird die oben erstelle Variante in das Vue-Framework transferiert. | |||
==Quellen== | |||
<references/> | |||
<ol> | |||
<li value="5"> {{Quelle|Kowarschick, W.: Web-Programmierung}}</li> | |||
</ol> | |||
<noinclude>[[Kategorie: HTML5-Tutorium: JavaScript: Hello World]][[Kategorie: HTML5-Beispiel]][[Kategorie:Kapitel:Multimedia-Programmierung:Beispiele]]</noinclude> | |||
<!-- | |||
→ <code></code> „<code></code>“ | |||
--> | |||
Version vom 28. März 2025, 09:14 Uhr
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
| Korrektheit: 3 (zu größeren Teilen überprüft) |
Umfang: 4 (unwichtige Fakten fehlen) |
Quellenangaben: 3 (wichtige Quellen vorhanden) |
Quellenarten: 5 (ausgezeichnet) |
Konformität: 3 (gut) |
Inhalt | Teil 1 | Teil 2 | Teil 3 | Teil 4 | Teil 5 | Teil 6 | Vue 1 | Vue 2 | Vue 3 | Vue 4 | Vue 5 | Vue 6
Musterlösung
v01: index.html (HTML validate)
Git-Repository
Anwendungsfälle (Use Cases)
Gegenüber dem dritten, vierten und fünften Teil des Tutoriums ändern sich die die Anwendungsfälle nicht. Die Anwendung leistet also genau dasselbe wie zuvor.
In diesem Teil des Tutoriums geht es darum, den CSS-Code „DRY zu machen“.
Erstellen eines neuen Projekts
Erstellen Sie ein neues Projekt hello_world_06 als Fork von hello_world_05.
CSS-Erweiterungen
CSS bietet heute dieselbe Funktionalität wie Transpiler (SASS, Less etc.), die früher verwendet wurden, um fehlende Funktionalität in CSS zu integrieren. Ich werde in diesem Semester CSS an Stelle von SCSS einsetzen, so wie es von vite empfohlen wird:
Because Vite targets modern browsers only, it is recommended to use native CSS variables with PostCSS plugins that implement CSSWG drafts (e.g. postcss-nesting) and author plain, future-standards-compliant CSS. (https://vite.dev/guide/features)
Eine ganz wesentliche Erweiterung ist die Möglichkeit Konstanten zu definieren.
Auch die Möglichkeit, Werte zu berechnen, gibt es in der Zwischenzeit (SCSS: math, CSS: calc). Es ist jetzt auch möglich CSS-Elemente zu verschachteln.
Das heißt, die Bedeutung von SCSS, Less etc. schwindet.
Allerdings werden Konstanten vom SCSS-Präprozessor auf dem Server bei Build-Prozess durch ihre Werte ersetzt. In CSS muss dies defaultmäßig der Browser übernehmen. Es gibt ein PostCSS-Plugin postcss-var-replace, das diese Ersetzungen ebenfalls vornimmt. Dieses kann man in die Vite-Konfiguration integrieren:
npm -i -D postcss-var-replace
// vite.config.js
import { postcssVarReplace } from 'postcss-var-replace';
...
export default
{ ...
plugins:
...
css:
{ postcss:
{ plugins:
[ postcssVarReplace(),
],
},
},
resolve:
{ alias:
{ '@': fileURLToPath(new URL('./src', import.meta.url)),
'config.css': fileURLToPath(new URL('./src/css/_config.css', import.meta.url)),
'/css': fileURLToPath(new URL('./src/css', import.meta.url)),
'/js': fileURLToPath(new URL('./src/js', import.meta.url)),
}
},
}
CSS-Konstanten
Eine ganz wesentliche Erweiterung ist die Möglichkeit Konstanten zu definieren, da man damit CSS-Code DRY formulieren kann.
Wenn eine Konstante definiert wurde, kann man
im übrigen CSS-Code mittels var darauf zugreifen (und nicht etwa mittels const, :-( )
:root
{ --font-family-serif: "Times New Roman", Times, serif; }
p
{ font-family: var(--font-family-serif); }
label
{ font-family: var(--font-family-serif); }
Auch die Möglichkeit, Werte zu berechnen, gibt es in der Zwischenzeit (SCSS: math, CSS: calc).
Das heißt, die Bedeutung von SCSS, Less etc. schwindet. Aber zurzeit bieten sie immer noch genügend mächtige Erweiterungen gegenüber CSS,
wie z. B. die Möglichkeit, CSS-Elemente zu verschachteln, sodass sich der Einsatz von SCSS noch lohnt.
Transformation von SCSS in CSS
Leider unterstützt kein Browser SCSS direkt (im Gegensatz zu CSS). Aber für was gibt es Transpiler, die eine SCSS-Datei automatisch in eine CSS-Datei übersetzen können. Vite unterstützt CSS-Transpiler von Haus aus. Man muss den gewünschten Transpiler lediglich installieren:
npm i -D sass
Benennen Sie die Datei src/css/body.css in src/css/body.scss um. Ersetzen Sie außerdem
in der Datei src/js/main.js den Import-Befehl
import '/css/body.css';
</source>
durch
<source lang="javascript">
import '/css/body.scss';
</source>
Wenn Sie Ihren Code nun mittels <code>npm run dev</code> laufen lassen oder mittels <code>npm run build</code> übersetzen,
sollte die Anwendung noch funktionieren, da der SASS-Loader die neue SCCS-Datei in geeigneten CSS-Code übersetzt.
Schwieriger ist der direkte Import von <code>head.scss</code> in der Datei <code>index.html</code>,
da diese SCSS-Datei von Vite nicht in CSS transformiert wird. Ein Workaround für dieses Problem wird später vorgestellt.
===Vite-Konfiguration===
Fügen Sie <code>"config"</code> als Abkürzung für <code>"./src/css/_config.scss"</code> in die Datei <code>vite.config.js</code> ein.
<syntaxhighlight lang="javascript">
...
resolve:
{ alias:
{ ...
'config': fileURLToPath(new URL('./src/css/_config.scss', import.meta.url)),
...
}
}
...
SCSS-Konfiguration
In der Datei _config.scss werden alle von den anderen SCSS-Dateien benötigten Konstanten definiert.
Das heißt, das DRY-Prinzip „Konstanten gehören nicht in den Code, sondern in Konfigurationsdateien“ wird ab sofort beachtet.
Wenn man künftig am Layout einen Zeichensatz, eine Farbe, einen Hintergrund oder Ähnliches ändern will,
reicht es, die entsprechenden Konstanten anzupassen und schon erzeugt Vite automatisch aktualisiere
CSS-Dateien.
Der Underscore _ am Beginn des Dateinamens deutet an, dass diese SCSS-Datei nur von anderen SCSS-Dateien
aber nicht von HTML- oder JavaScript-Dateien importiert werden. Durch SCSS-Import-Befehle ist es möglich, auch SCSS-Dateien
zu modularisieren.
src/css/_config.scss
@use 'sass:math';
$background-color: #C5EFFC;
$font-family-sans: Verdana, Helvetica, sans-serif;
$font-family-serif: "Times New Roman", Times, serif;
$font-size-base: 3vw;
$font-size-factor: 1.25; /* cmp. https://type-scale.com/ */
$font-size-h5: math.pow($font-size-factor,1)*$font-size-base;
$font-size-h4: math.pow($font-size-factor,2)*$font-size-base;
$font-size-h3: math.pow($font-size-factor,3)*$font-size-base;
$font-size-h2: math.pow($font-size-factor,4)*$font-size-base;
$font-size-h1: math.pow($font-size-factor,5)*$font-size-base;
$font-size-p: math.pow($font-size-factor,0)*$font-size-base;
$font-size-p-large: math.pow($font-size-factor,2)*$font-size-base;
$font-size-small: math.pow($font-size-factor,-1)*$font-size-base;
In dieser SCSS-Datei werden folgende SCSS-Erweiterungen verwendet:
- Mathematische Berechnungen:
@use 'sass:math'; - Definition von Konstanten (die teilweise per Berechnung ermittelt werden)
- Fonts sollten aus designerischen Gründen besser lokal gespeichert und per CSS eingebunden werden.
Konstanten starten in SCSS mit einem Dollarzeichen. Sobald eine Konstante definiert wurde,
kann sie in allen weiteren SCSS-Konstrukten verwendet werden. In SCSS stehen einen Operatoren zur Verfügung wie
+, -, * und /, um Maße zu berechnen. Es gibt
weitere Operatoren zum Vergleichen von Zahlen und Maßen sowie zur Berechnung von Strings und booleschen Werten:
https://sass-lang.com/documentation/operators.[1]
Die Datei _config.scss kann nun mit Hilfe des SCSS-Befehls @import 'config'; (ohne Underscore und ohne Endung, wegen der zuvor eingeführten Vite-Aliase)
in die anderen beiden SCSS-Dateien eingefügt werden. Das Sass-Package
kennt diesen Befehl und führt ihn beim Erstellen der zugehörigen CSS-Dateien auch aus.
Der Import-Befehl hat erst dann einen Effekt, wenn in den anderen Dateien auf diese Konstanten zugegriffen wird. Aber er schadet auch nicht, wenn auf keine der dort definierten Konstanten zugegriffen wird. Der Import-Befehl selbst taucht ebenso wenig in den generierten CSS-Dateien auf, wie die Konstantendefinitionen. Der Transpiler ersetzt Konstanten in CSS-Definitionen durch ihren jeweiligen Wert.
Sie können nun beispielsweise in der Datei head.scss die Konstante $background-color
verwenden. In der daraus erzeugten CSS-Datei steht weiterhin der Farbwert #C5EFFC;
src/css/head.scss
@import 'config';
body
{ background-color: $background-color; }
.hidden
{ display: none; }
</syntaxhighlighte>
Die Datei <code>body.scss</code> ist deutlich umfangreicher. Daher wird der zugehörige CSS-Code
ja auch erst dynamisch gemeinsam mit der Datei <code>web/js/main.js</code> geladen.
'''<code>src/css/body.scss</code>'''
<syntaxhighlight lang="CSS">
@import 'config';
html
{ height: 100%;
width: 100%;
display: table;
}
body
{ display: table-cell;
text-align: center;
vertical-align: middle;
background-color: $background-color;
font-size: $font-size-base !important;
font-family: $font-family-sans;
}
h1
{ padding: 0;
margin: 0;
font-size: $font-size-h1;
}
p, label
{ font-family: $font-family-serif;
font-size: $font-size-p !important;
}
label, input, button
{ width: 10em;
font-size: 100%;
display: inline-block;
box-sizing: border-box;
margin: 0.5ex;
}
label
{ text-align: right;
}
#section_form
{ text-align: center;
margin-left: auto;
margin-right: auto;
h1
{ margin-bottom: 0.5ex; }
}
#section_hello
{ p
{ font-size: $font-size-p-large !important; }
}
In dieser SCSS-Datei werden folgende SCSS-Erweiterungen verwendet:
- Import-Befehl:
@import 'config'; - Konstanten:
$font-family-sans,$font-size-baseetc. (Es sind noch viele weitere konstante Werte inbody.scssenthalten, für die in_config.scssKonstanten definiert werden sollten) - Verschachtelte Anweisungen: z. B.
h1innerhalb von#section_form
Die verschachtelten Anweisungen strukturieren den CSS-Code deutlich besser. Es ist nicht mehr
notwendig, einen Selektor wie #section_form mehrfach zu verwenden.
Sehen Sie sich den Unterschied an. In der Datei src/css/body.css der Musterlösungen vom dritten Teil des Tutoriums hatte ich
Folgendes geschrieben:
#section_form
{ text-align: center;
margin-left: auto;
margin-right: auto;
}
#section_form > h1
{ margin-bottom: 0.5ex; }
Die SCSS-Variante ist deutlich strukturierter und prägnanter.
#section_form
{ text-align: center;
margin-left: auto;
margin-right: auto;
h1
{ margin-bottom: 0.5ex; }
}
Insbesondere bei großen CSS-Dateien erweist sich diese kompaktere Schreibweise als vorteilhaft.
Weitere SCSS-Konstrukte
SCSS ist sehr mächtig. Es gibt neben der Import-Anweisung eine Use-Anweisung (@use)[2], die SCSS-Konstrukten im Gegensatz zur Import-Anweisung einen Namespace zuweist. Damit ist es möglich, mehrere SCSS-Module zu verwenden, auch wenn
dieses gleichbenannte Elemente enthalten, ohne dass es zu Namenskollisionen kommt.
Darüber hinaus gibt es Mixins[3] und Funktionen[4]. Mit Mixins kann man ganze Styleblöcke definieren, um sie mehrfach zu verwenden. Mixins werden mit @include eingebunden. Dabei kann man Argumente an die Mixins übergeben, mit denen die entsprechenden Konstanten innerhalb des Mixins initialisiert werden. Funktionen funktionieren wie Funktionen in anderen Programmiersprachen auch. Es stehen einem If-Anweisungen und Schleifen-Befehle zur Verfügung.
SCSS ist im Prinzip eine vollwertige Programmiersprache, um CSS-Dateien modular zu erstellen.
Fortsetzung des Tutoriums
Sie sollten nun Teil 1 des Vue-Tutoriums bearbeiten. In diesem Teil des Tutoriums wird die oben erstelle Variante in das Vue-Framework transferiert.
Quellen
- Kowarschick (WebProg): Wolfgang Kowarschick; Vorlesung „Web-Programmierung“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2024; Quellengüte: 3 (Vorlesung)
