Formelsammlung
HTML
Elemente:
- <!DOCTYPE html>
<table>
    <tr>
        <th>Yikes</th>
        <th>Yokes</th>
    </tr>
    <tr>
        <td>sol</td>
        <td>les</td>
    </tr>
</table>
CSS
Selektoren:
- element: p {}
- class: .name {}
- id: #name {}
- universal: *
- child: >- selektiert nur direkte kinder
 
- sibling: ~- Teilen die selben eltern
 
- direct sibling: +- Teilen die selben eltern und folgen direkt
 
- pseudo-class: :- sachen wie a:visited
 
- sachen wie 
- pseudo-element: ::- sachen wie p::first-line
 
- sachen wie 
- th child: nth-child(x)- wie: p:nth-child(2);
- oder: p:nth-child(An+B);- : Schrittweite
- : Startwert
 
 
- wie: 
Box Model
- Aller content steht in einer box
- padding(Abstand von innen zum Rahmen)
- border(Rahmendicke)
- margin(Der abstand ausserhalb vom Rahmen)
- das kann auch alles mit CSS angepasst werden
Specific
- .applyMargin- margin-top
- margin-bottom
- margin-right
- margin-left
 
Scale
- height: 30px;
- width: 40vh;
- vh
- vw
- %
- em(schriftgröße)
Flexbox
- justify-content: abstand zwischen den Elementen, x-achse
- align-items: abstand zwischen den Reihen, y-achse
- flex-wrap: Ob das zeugs wrappen kann
- align-items: Wie biel platz die Elemente nutzen (wie)
- flex: Wie die Elemente sich bei änderung verhalten
Grid
- kann flexibel und absolut bemmessen werden
- px, em für absolut
- % und fr (free range) für Flexibel
- fr ist oft in kombination mit padding und margin einfacher zu nutzen
 
Layout
- grid-template-columns: Teilt den verfügbaren platz ein
- gap, column-gap, row-gap: Definiert abstände
- grid-auto-rows: minmax(px, auto): Definieren "ränder"
- justify-content, align-items: genau wie vorher
- grid-column: x: definiert spalte
- grid-row: x/y: definiert (mehrere) reihen
Event Handling
- Naja, events halt, die müssen gehandled werden
- Die kann man mit element.AddEventListener('event', function() {}, false);ein Event registrieren
- So können Events auch mit event.stopPropagationangehalten werden (also die werden dann nicht weiter verteilt)
Javascwipt UwU
Function
function lustigeFunktion() {
    for(let i = 0; i < 5, i++) {
    }
}
Objektos
var y,i;
var person = {
    name: "Bre", 
    lastName: "Brup", 
    alter: 97
}
Scam (auch bekannt als Funktionen in Variablen)
var ops = [addition, substraktion]; // Das sind Funktionen
for (var i = 0; i < ops.length; i++) {
    console.log(operationen[i](2, 2));
}
Typescwipt OwO
- Überprüft Types und macht dinge mit denen (krass)
var lol: string
interface Car {
    name: string; 
    year?: number;
    lol: int;
}
function sell(obj: Car) {
    ...
}
sel({name: name: "BEHEMWEH", lol: 23});
enum Direction {
    Up, 
    Down, 
    Left, 
    Right
}
enum Direction2 {
    Up = 1; 
    Down = 2;
    Left = 3; 
    Right = 4;
} // hier kann man am ende alles einfügen
Vue
Templates
- Daten speichern wir in der Vue-VM
- hier können wir sachen in variablen speichern und später mit {{ variable }}wieder aufrufen
- VueDirectives können das dann weiter raussortieren
- v-html
- v-bind:src
- v-on:click
- v-for
 
- Innerhalb der "moustache" schreibweise (das mit den klammern) können wir JS ausführen
- Wir können aber auch schon funktionen auf keywords mappen
- Das machen wir in der "computed" sektion der VueVM, damit der code ordentlicher bleibt
- computed: { keyword: function() { ... } }
 
- Wir können aber auch "tolle" sachen modellieren, wie dynamische klassenzuweiseung
- <div v-bind:class="positive: isPositiv, negativ: isNegativ"></div>- positivund- negativsind abhängig von den Wahrheitswerten in den Vars
- Je nachdem, wird die klasse dann konstruhiert als positiv,positiv negativo.ä.
 
 
- Klassen können wir aber auch schon im JS teil definieren
- Dann können wir das mit v-bind:class="name"wie gehabt verbinden
- Wir können daten auch conditional Rendern, mit den v-ifv-elseundv-else-if
- for-Loops: v-for="item in list"dann einfach weiter mit normalen JS in mustache
- Events: v-on:Event="action in JS"
- Wir können auch auf methoden verweisen, wenn welche im "methods" teil definiert sind
- methodName: function() {}
 
Warum n Vue
- Kann besser updaten
- Realtime & reactive ohne dauernd neuzuladen
Components
- Mit denen kann man teile von vue immer wieder neu verwenden
- Sprich basically "kleinere" versionen von Vue-VMs
- Global efinieren können wir die mit Vue.component("component-name", { data: function() { ... }})
- wenn wir das so machen, können wir das ding dann wie ein HTML element nutzen
- Lokal, machen wir das, wenn wir die einfach in einer Vue Instanz in der componentssektion hinterlegen
Props
- Bei einer Statischen website:
- Vue.component("component-a", { props: ["name"], template: "<h1>{{name}}</h1>"});
- <component-a name="Meme"></component-a>
- Props können nur ein Element gleichzeitig beherbergen! bei mehreren, muss ein div eingefügt werden
Dynamische Props
Vue.component("component-a", {
    props:["prop-data"],
    template: '<div class="component-a">
        <h1>{{propData.title}}</h1>
        <p>{{propData.date}}</p>
        <p>{{propData.content}}</p>
    </div>'
});
var vm = new Vue({
    el:"#app",
    data:{
        propData:{
            title: "Hello World",
            date: "06.07.2020",
            content: "Lorem Ipsum"}
}});
<div id="app">
    <component-a
    v-bind:prop-data="propData">
    </component-a>
    <component-a
    v-bind:prop-data="propData">
    </component-a>
</div>
- Die dinger haben einen sog. one-way-data flow
- Kinder elemente werdne nur von ihreen eltern "mit" geändert
- Andersrum gibt es fehler
Emit
- Wir können mit $emit(custom-) Events auslösen
- Mit denen können wir so auch mit elternelementen kommunizieren
- Vue-component('custom-elem', { emits: ['myEvent']})
Dynamische Komponeneten
- Ähnlich wie bei conditionals kann man einen componeneten an etwas anderes aufhängen
- mit v-bind:is="componente"kann man das machen
- mit jeder aktualisierung wird der gesamte Komponent gewechselt