Blog

  • WordPress Bilder SEO

    WordPress Bilder SEO

    Ein wichtiger Ranking-Faktor ist die Ladegeschwindigkeit deines Blog’s. Der häufigste Fehler ist die falsche Optimierung deiner Bilder. Die meisten optimieren das Bild, das hochgeladen wird, aber nicht die zugeschnittenen Bilder. Da das hochbeladene in kleine crops zugeschnitten wird müssen diese natürlich auch optimiert werden. Das optimiert deine Ladegeschwindigkeit und bringt dir fette Pluspunkte bei Google.

    zugeschnittene Bilder vom Server laden

    Für diesen Schritt brauchst du ein FTP Programm, ich verwende Filezilla. Öffne Filezilla und logge dich auf deinen Server ein, die Zugangsdaten findest du bei deinem Hoster unter FTP Daten.Filezilla geöffnet
    Navigiere jetzt in das aktuelle Jahr: „wp-content/uploads/2018/“. Ziehe jetzt den letzten Monat auf deinen lokalen Computer, ziehe den Ordner von der rechten Seite auf die Linke.downloade Bilder Warte bis das Fesnter „zu übertragene Daten“ wieder leer ist.

    Bilder optimieren

    Öffne jetzt im Browser die Webseite www.kraken.io, und öffne das Webinterface.Kraken.io webinterface Lasse die Standardeinstellungen und klicke auf „click to upload“, navigiere jetzt zu deinen runtergeladenen Bildern und öffne den Ordner, in meinem Beispiel den Ordner 08. Jetzt markiere das erste Bild und drücke die Tastenkombination „Strg + a“, damit markierst du alle Bilder. Drücke jetzt auf öffnen. Upload alle Bilder auf kraken.io Warte kurz bis alle Bilder durchlaufen sind und downloade das .zip Archiv. kraken io download zip

    optimierte Bilder wieder auf den Server ablegen

    Entpacke jetzt das runtergeladene Archiv und öffne den neuen Ordner.entapcke zip ordner Navigiere jetzt in Filezilla in den entpackten Ordner (linker Dateibrowser) und öffne im rechten Fenster den Bilder-Ordner auf dem Server.öffne beide Bilde-Ordner in Filezilla Markiere auf der linken Seite alle Bilder (Strg + a) und ziehe sie in den linken Ordner. Bestätige das du die Dateien überschreiben möchtest, und setze den Hacken bei „immer Aktion ausführen“. filezilla überschreibe alle Bilder

    Fertig deine Bilder für August 2018 sind jetzt optimiert, jetzt musst du das für die restlichen Monate auf nachholen, damit alle deine Artikel optimiert sind.

  • Sharing Buttons für WordPress selber machen

    Sharing Buttons für WordPress selber machen

    Wenn du Sharing-Buttons auf deiner Webseite haben möchtest musst du nicht unbedingt ein Plugin installieren. Ich habe diese Variante gewählt, da keine Scripte von Facebook, Twitter oder Google+ meine Seite aufblähen. Meine Variante sind Pop-Ups die die Sharing URL öffnen. Der Vorteil dieser Variante ist, dass kein externen Service meine Seite tracken kann.

    Position herausfinden

    Ich empfehle, für diese Aufgabe, den Google Chrome. Einfach an die gewünschte Stelle Rechtsklick und auf Untersuchen klicken, danach öffnet sich rechts die Developer Konsole. Der Quelltext ist schon markiert, aber es sollte noch mal im Quelltext die Stelle genau gefunden werden an der du deine Buttons einbauen willst.
    Webseite untersuchen
    Quelltext Stelle finden
    Jetzt musst du dir die richtige Stelle im Quelltext merken, bei mir ist es zwischen lineBreak und clearBoth.

    Stelle im Theme finden

    Jetzt musst du per FTP die single.php downloaden. Du loggst dich über FTP (ich benutze FileZilla) auf dein Server ein und navigierst in den theme Ordner der im wp-content Ordner ist. Bei mir ist es folgender Pfad:

    /WordPress_05/wp-content/themes/boolie_theme

    In diesem Ordner befindet sich die Datei single.php.
    Jetzt öffnest du single.php mit deinem Editor, bei mir ist es der Atom Editor. Dort suche ich jetzt nach der lineBreak und clearBoth Stelle.
    Theme PHP

    Code eintragen

    Jetzt kommt der spannende Teil, der Sharing-Code wird eingetragen. Zuerst benötigst du das HTML, es kann frei gestaltet werden, mit der Ausnahme des Links.

    <div class="sharing">
      <span class="sharingText">Artikel teilen</span>
      <ul>
        <li class="share-facebook"><a href="#" id="shareAsFacebook">Facebook</a></li>
        <li class="share-twitter"><a href="#" id="shareAsTweet">Twitter</a></li>
        <li class="share-google-plus"><a href="#" id="shareAsGplus">Google+</a></li>
      </ul>
    </div>

    Bei den Links passiert jetzt nochnicht so viel, dass ändere ich mit JavaScript.

    document.getElementById('shareAsTweet').addEventListener('click', function (event) {
      window.open('https://twitter.com/share?url=<?php esc_url(the_permalink()); ?>&amp;text=<?php the_title(); ?>', '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600').focus();
      event.preventDefault();
      return false;
    });
    document.getElementById('shareAsFacebook').addEventListener('click', function (event) {
      window.open('https://www.facebook.com/sharer/sharer.php?u=<?php esc_url(the_permalink()); ?>', '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600').focus();
      event.preventDefault();
      return false;
    });
    document.getElementById('shareAsGplus').addEventListener('click', function (event) {
      window.open('https://plus.google.com/share?url=<?php esc_url(the_permalink()); ?>', '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600').focus();
      event.preventDefault();
      return false;
    });
    document.getElementById('shareAsTweet').addEventListener('click', function (event) {

    Mit dieser Zeile Code sagen wir dem Browser, er soll den folgenden Code ausführen wenn auf das Element mit der ID „shareAsTweet“ geklickt wird.

      window.open('https://twitter.com/share?url=<?php esc_url(the_permalink()); ?>&amp;text=<?php the_title(); ?>', '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600').focus();

    An dieser Stelle wird ein Pop-Up erstellt mit der Sharing-URL von Twitter und der Permanenten URL von deinem Beitrag.

    event.preventDefault();
    return false;

    Sagt dem Browser er soll die Standartaufgabe vom Linkklick abbrechen.

  • Was ist Open Graph?

    Was ist Open Graph?

    Open Graph Protokoll erweitert eine Webseite, mit dieser Erweiterung kann die Webseite in sozialen Kanälen besser dargestellt werden. Das Protokoll sagt dem Netzwerk, z.B. Facebook oder Twitter, welches Bild und welcher Text die Webseite wiederspiegelt.

    Open Graph definieren

    Die Open Graph Eigenschaften werden im HTML Head definiert und werden mit dem meta Tag gesetzt. Es gibt 4 pflicht Angaben, ohne diese 4 Eigenschaften ist die Open Graph Angabe unvollständig.
    Beispiel: https://boolie.org/arbeitsumgebung-einrichten/

    <meta property="og:title" content="Arbeitsumgebung einrichten &raquo; Boolie.org" />
    <meta property="og:type" content="article" />
    <meta property="og:url" content="https://boolie.org/arbeitsumgebung-einrichten/" />
    <meta property="og:image" content="https://boolie.org/wp-content/uploads/2017/12/arbeitsumgebung_teaser-compressor.jpg" />

    title: der Titel der Seite (frei wählbar)
    type: Art des Inhalts (article, book, profile, website, music.song, music.album, music.playlist, music.radio_station, video.movie, video.episode, video.tv_show, video.other)
    url: valide URL zur Seite
    image: valide URL zum Bild

    Des weiteren muss im html Tag das Open Graph Prefix definiert werden.

    <html prefix="og: http://ogp.me/ns#">

    Mit diesen 5 Änderungen / Erweiterungen machst du deine Webseite Social Media tauglich.

    optionale Eigenschaften

    Hier die von mir gesetzten Open Graph Attribute auf https://boolie.org/arbeitsumgebung-einrichten/.

    <meta property="og:locale" content="de_DE" />
    <meta property="og:type" content="article" />
    <meta property="og:title" content="Arbeitsumgebung einrichten &raquo; Boolie.org" />
    <meta property="og:description" content="Ich gebe dir hier meine Arbeitsumgebung als Muster, es kann jederzeit angepasst und deinen Wünschen erweitert werden. Es soll dir als Beispiel für die Grundausrüstung dienen." />
    <meta property="og:url" content="https://boolie.org/arbeitsumgebung-einrichten/" />
    <meta property="og:site_name" content="Boolie.org" />
    <meta property="og:updated_time" content="2017-12-03T19:16:44+00:00" />
    <meta property="og:image" content="https://boolie.org/wp-content/uploads/2017/12/arbeitsumgebung_teaser-compressor.jpg" />
    <meta property="og:image:secure_url" content="https://boolie.org/wp-content/uploads/2017/12/arbeitsumgebung_teaser-compressor.jpg" />
    <meta property="og:image:width" content="1000" />
    <meta property="og:image:height" content="500" />

    Eine detaillierte Eigenschaften-Beschreibung findest du unter http://ogp.me/#optional.

  • Arbeitsumgebung einrichten

    Arbeitsumgebung einrichten

    Ich gebe dir hier meine Arbeitsumgebung als Muster, es kann jederzeit angepasst und deinen Wünschen erweitert werden. Es soll dir als Beispiel für die Grundausrüstung dienen. Wir werden zusammen den Editor installieren und einen Webserver auf dem Computer einrichten. Diese Anleitung ist für Windows-Anwender angepasst, sprich ich verwende einen Windows System, genauer gesagt Windows 10, aber diese Anleitung ist auch für Windows 7 gültig.

    Editor

    Zuerst wird der Editor benötigt, ich benutze Atom. Atom ist ein auf JavaScript basierender Code Editor. Du kannst den Editor auf https://atom.io/ runterladen. Ich werde jetzt nicht die Vorteile listen die der Editor mit bringt, es reicht für den Anfang das dieser Editor für Anfänger sowie Profis gleich gut geeignet ist.
    Nachdem du die AtomSetup-x64.exe runtergeladen hast, einfach Doppelklick auf die .exe um die Installation zu starten. Die Installation macht alles Automatisch, es muss keine Konfiguration oder sonstiges gemacht werden. Nach der Installation öffnet sich der Editor automatisch. Die genaue Bedienung erkläre ich im laufe dieser Kursreihe.

    Server

    Jetzt geht es an die Server Installation, für die lokale Bearbeitung von HTML und CSS Dateien geht es auch ohne Server, aber du solltest gleich am Anfang ein gewissen Grad an Flexibilität haben. Des weiteren ist es von Vorteil in der Adressleiste eine Domain zu haben statt einer Pfadangabe.
    Geh auf https://www.apachefriends.org/de/index.html und lade dir XAMPP für Windows runter. Nach dem du die .exe runtergeladen hast, startest du wieder die Installation per klick auf die .exe. Bei der Installation muss nichts geändert werden, die Standardeinstellungen könnt ihr beibehalten.
    XAMPP Installation - Werkzeuge
    XAMPP Installation - Pfad
    Mit „Finish“ schließt du dann die Installation erfolgreich ab, lass das Häkchen bei „Do you want to start the Control Panel now?“ drin.
    Nun öffnet sich der Control Panel, bei dem ihr den Server starten und stoppen könnt. Zuerst sollte nur der Apache Server gestartet werden. Einfach hinter Apache auf starten klicken.
    XAMPP Control Panel
    Nach dem klick auf starten, sollte die Apache Anzeige grün hinterlegt werden. Nun kannst du den Server im Browser öffnen, in der URL Zeile „http://localhost/“ eingeben. Nun öffnet sich die XAMPP Übersichtsseite, das ist die Bestätigung, dass der Server läuft und Einsatzbereit ist.

    Hello World Datei

    Jetzt kommt die erste HTML Datei, klassisch in der Programmierung soll es eine Hello World sein. Zuerst erstellst du eine neue Datei im Atom Editor (STRG + N). Danach stellst du im Editor die Syntax auf HTML (mit dieser Einstellung ändert sich das Farbshema des Quelltextes. Du findest die Einstellungen unten rechts, klicke auf „Plain Text“ und danach gibst du HTML im Suchfeld ein und wählst HTML aus.
    ATOM Syntax wechsel
    ATOM Syntax HTML
    Jetzt musst du vor die Eins im Texteditor klicken, dort fügst du nun folgenden Code in:

    <html>
      <head>
      </head>
      <body>
      </body>
    </html>

    Das ist das Grundgerüst der HTML Datei, <html> gibt an, das es sich um eine html Datei handelt. Im Bereich <head> </head> werden Metainformationen angegeben und im Bereich <body> </body> wird der Inhalt der Seite gespeichert. Nun soll auf der Seite Hello World stehen, dafür schreibst du in den body Bereich „Hello World“.

    <body>
      Hello World
    </body>

    Jetzt brauchen wir noch Meta-Informationen, der Titel der Seite fehlt. Dafür Muss in den head Bereich das title Tag gesetzt werden.

    <head>
      <title>Tutorial</title>
    </head>

    Nun musst du den XAMPP Control Panel öffnen und auf Explorer klicken, es öffnet sich der Windows Datei Browser. In diesem Ordner ist ein Ordner mit dem Namen „htdocs“, in diesem Ordner erstellst du einen neuen Ordner mit dem Namen „Tutorial“, der absolute Pfad ist dann „C:\xampp\htdocs\Tutorial“. Den musst du dir in die Zwischenablage kopieren (markieren -> STRG + C), danach gehst du zurück zum Atom Editor und drückst STRG + S (zum speichern der Datei). Nun öffnet sich wieder ein Dateibrowser und dort klickst du oben im Dateipfad und drückst STRG + V und bestätigst mit Enter. Nun gibst du bei Datei Namen „index.html“ an und speicherst die Datei. Nun kannst du unter http://localhost/Tutorial/ dein Werk begutachten.
    Hello World im Browser

  • JavaScript: OOP – Klassen, Methoden und Vererbung

    JavaScript: OOP – Klassen, Methoden und Vererbung

    Mit JavaScript ist es möglich Objekt Orientiert zu programmieren (OOP). Dies bedeutet das der Code eine modulare Struktur aufweist, der Vorteil bei dieser Programmierart ist die Wartbarkeit sowie die Erweiterbarkeit. Wenn der Code gut entworfen wurde, ist es einfacher den Code zu verstehen. Mit einer Klasse ist es möglich Variablen und Methoden (Funktionen) zu einem Modul zu bündeln. Aus diesem Modul können dann beliebig viele Objekte erstellt werden, mit diesem Objekten sind die Methoden und Variablen verknüpft. Dabei hat aber jedes Objekt seine eigenen Variablen, sprich die Objekte teilen sich nicht die Variablen.

    Klasse definieren

    In JavaScript wird eine Klasse mit „class“ definiert, nach „class“ folgt der Name der Klasse. Es ist zu empfehlen einen Constructor zu verwenden, dies ist eine Methode die beim erstellen des Objekts ausgeführt wird.

    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
    }

    In diesem Beispiel wird die Klasse einfachesMathe erstellt, es werden 2 Parameter beim erstellen des Objektes in die Klasse gespeichert. Das this. gibt an, dass die Variablen Klassen intern gespeichert werden, sprich die beiden Werte können von jeder Methode in der Klasse benutzt werden.

    Objekt erstellen

    Mit „new“ kann von einer Klasse ein Objekt erstellt werden. In diesem Beispiel werden 2 Parameter übergeben, 2 und 5. Das erstellte Objekt wird in die Variable aufgabe gespeichert, mittels dieser Variable kann dann auf das Objekt zugegriffen werden.

    var aufgabe = new einfachesMathe(2, 5);
    console.log(aufgabe.zahlEins); // gibt 2 aus
    console.log(aufgabe.zahlZwei); // gibt 5 aus

    Dabei sollte aber drauf geachtet werden, dass die Klasse zuerst definiert wurde. Bei Funktionen ist dies egal ob zuerst der Funktionsaufruf kommt und dann die Funktion, aber bei Klassen muss zuerst die Klasse erstellt worden sein.

    var aufgabe = new einfachesMathe(2, 5);
    console.log(aufgabe.zahlEins);
    console.log(aufgabe.zahlZwei);
    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
    }
    // Uncaught ReferenceError: einfachesMathe is not defined
    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
    }
    var aufgabe = new einfachesMathe(2, 5);
    console.log(aufgabe.zahlEins);
    console.log(aufgabe.zahlZwei);
    // 2
    // 5

    Methoden

    Methoden sind Funktionen innerhalb einer Klasse. Es gibt 4 Arten von Methoden in einer Klasse, „get“ es werden Daten aus der Klasse geholt, „set“ übergibt an die Klasse Daten, „static“ sind nicht Objekt gebundene Methoden und werden als Helfer Methoden benutzt, des weiteren gibt es noch interne Methoden, bei diesen schreibt man einfach nur den Namen.

    get Methode

    Wie der Name schon verrät, holt man sich Daten aus der Klasse mit der Methoden art.

    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
      addieren(){
        return this.zahlEins + this.zahlZwei;
      }
      get addition(){
        return this.addieren();
      }
    }
    var aufgabe = new einfachesMathe(2, 5);
    console.log(aufgabe.addition);
    // 7

    Bei get werden keine runden Klammern benutzt, da diese Methode keine Parameter erlaubt.

    set Methode

    Mit set erstellt man eine Methode die Daten an die Klasse übergibt. Es ist nur ein Parameter erlaubt.

    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
      set setzeZahlEins(zahl){
        this.zahlEins = zahl;
      }
      set setzeZahlZwei(zahl){
        this.zahlZwei = zahl;
      }
    }
    var aufgabe = new einfachesMathe(2, 5);
    aufgabe.setzeZahlEins = 3;
    aufgabe.setzeZahlZwei = 8;

    Falls man doch mehrere Werte übergeben möchte, kann dies durch ein Array umgangen werden.

    class einfachesMathe {
      constructor(zahlEins, zahlZwei) {
        this.zahlEins = zahlEins;
        this.zahlZwei = zahlZwei;
      }
      set neueZahlen(zahlen){
        this.zahlEins = zahlen[0];
        this.zahlZwei = zahlen[1];
      }
    }
    var aufgabe = new einfachesMathe(2, 5);
    aufgabe.neueZahlen = [3,8];

    static Methoden

    Static Methoden sind Objekt übergreifend, dies bedeutet, dass 2 Objekte miteinander vergleicht werden können.

    class einfachesMathe {
      constructor(zahl) {
        this.zahl = zahl;
      }
      get getZahl(){
        return this.zahl;
      }
      static groeszer(objektA, objektB){
        if(objektA.getZahl > objektB.getZahl)
          return objektA;
        else
          return objektB;
      }
    }
    var zahl1 = new einfachesMathe(5);
    var zahl2 = new einfachesMathe(8);
    einfachesMathe.groeszer(zahl1, zahl2).getZahl;
    // 8

    Static Methoden werden immer auf die Klasse angewendet und nicht auf das Objekt

    interne/private Methoden

    Interne Methoden sind Methoden die nur innerhalb der Klasse benutzt werden. Diese Methoden sollten nicht von außen ausgeführt werden. Am besten schreibt man noch ein _ vor den Methodennamen, damit erkennbar wird das dies eine interne bzw. private Methode ist. Diese Methoden sind trotzdem von außen abrufbar, aber dies sollte vermieden werden, da sonst der Code unsauber wird.

    class einfachesMathe {
      constructor(zahl1, zahl2) {
        this.zahl1 = zahl1;
        this.zahl2 = zahl2;
      }
      _berechneAddition(){
         return this.zahl1 + this.zahl2;
      }
      get getAddition(){
        return this._berechneAddition();
      }
    }
    var aufgabe = new einfachesMathe(5, 6);
    aufgabe.getAddition;
    // 11

    Vererbung von Klassen

    Klassen Vererbung bedeutet, dass die Klasse die Methoden und Variablen von einer anderen Klasse übernimmt. Damit ist es möglich unspezifische Methoden in einer Klasse zu definieren und dann auf andere Klassen zu vererben

    class zahlen{
      constructor(zahl1, zahl2) {
        this.zahl1 = zahl1;
        this.zahl2 = zahl2;
      }
      set setZahlen(zahlen){
         this.zahl1 = zahlen[0];
         this.zahl2 = zahlen[1];
      }
      get getZahlen(){
         return [this.zahl1, this.zahl2];
      }
    }
    class addition extends zahlen{
      _berechneAddition(){
         return this.zahl1 + this.zahl2;
      }
      get getAddition(){
        return this._berechneAddition();
      }
    }
    class subtraktion extends zahlen{
      _berechneSubtraktion(){
         return this.zahl1 - this.zahl2;
      }
      get getSubtraktion(){
        return this._berechneSubtraktion();
      }
    }
    var aufgabe = new addition(5, 6);
    aufgabe.getAddition; // 11
    aufgabe.getZahlen; // [5,6]
    var aufgabe2 = new subtraktion(8, 5);
    aufgabe2.getSubtraktion; // 3
    aufgabe2.getZahlen; // [8,5]

    super

    „super“ wird verwendet, wenn von der Elternklasse eine Methode aufgerufen werden soll. Es kann vorkommen das die Klasse und die Elternklasse gleichnamige Methoden beinhalten, durch „super“ wird dann die Methode aus der Elternklasse verwendet und bei „this“ die Methode aus der eigenen Klasse.

    class vergleich {
      constructor(zahl) {
        this.zahl = zahl;
      }
      _check(){
        if(this.zahl == 1)
          return true;
        else
          return false;
      }
    }
    class zahlenvergleich extends vergleich{
      _check(){
        if(this.zahl == 2)
          return true;
        else
          return false;
      }
      get getVergleich(){
        return [this._check(), super._check()];
      }
    }
    var test = new zahlenvergleich(2);
    test.getVergleich; // [true, false]
  • JavaScript: Funktionen klonen & manipulieren

    JavaScript: Funktionen klonen & manipulieren

    In Java Script ist es möglich Funktionen in eine Variable zu speichern und die Originale Funktion zu überschreiben. Dies ermöglicht es z.B. bei einem Videoplayer den Playbutton zu tracken. Es soll mit Optimizley (ein A/B Testing Werkzeug) eine Videoseite optimiert werden und eins der Ziele ist das Abspielen vom Video, kann einfach die Funktion des Video abspielen überschrieben werden.

    Video Funktion klonen und manipulieren

    Code

    function playVideo(){
      // do some Stuff
      console.log("playing video " + arguments[0].video + " @time " + arguments[0].time);
    }
    playVideo({video: "Hello World", time: 1});
    
    var playVideoClone = playVideo;
    
    playVideo = function() {
      arguments[0].time = arguments[0].time + 1;
      playVideoClone(arguments[0]);
    }
    
    playVideo({video: "Hello World", time: 1});

    Ergebnis

    playing video Hello World @time 1
    playing video Hello World @time 2
  • LESS Mixins

    LESS Mixins

    Mixins sind vordefinierbare CSS Eigenschaften, die per Aufruf in die Klasse geladen werden kann. Es gibt 2 Arten von Mixins, die mitausgegeben werden und die nur im LESS vorhanden sind. Des weiteren ist es möglich Mixins Variablen zu übergeben um diese im Mixin zu verwenden.

    ausgegebener Mixin

    Compiliert den Mixin selbst mit.

    .redtext {
        color: #dd0005;
        font-family: Georgia, serif;
        font-size: 20px;
    }
    .ueberschrift {
        .redtext;
    }
    .ueberschrift2 {
        .redtext();
    }

    generiert CSS:

    .redtext {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift2 {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }

    versteckter Mixin

    Der Mixin ist nur in den LESS Dateien sichtbar.

    .redtext() {
        color: #dd0005;
        font-family: Georgia, serif;
        font-size: 20px;
    }
    .ueberschrift {
        .redtext;
    }
    .ueberschrift2 {
        .redtext();
    }

    generiert CSS:

    .ueberschrift {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift2 {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }

    Subelemente im Mixin

    In Mixins können auch Subelemente definiert werden, des weiteren kann auch auf das Parent Element zugegriffen werden.

    .redtextLink() {
        a {
          color: #dd0005;
          font-family: Georgia, serif;
          font-size: 20px;
    
          &:hover {
            color: #a60004;        
          }
        }
    }
    .ueberschrift {
        .redtextLink();
    }

    generiert CSS:

    .ueberschrift a {
      color: #dd0005;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift a:hover {
      color: #a60004;
    }

    Parameterübergabe

    An Mixins können Parameter übergeben werden und mit diesen dann im Mixin gearbeitet werden.

    .Link(@color) {
        a {
          color: @color;
          font-family: Georgia, serif;
          font-size: 20px;
    
          &:hover {
            color: darken(@color, 10%);        
          }
        }
    }
    .ueberschrift {
        .Link(#a60004);
    }

    generiert CSS:

    .ueberschrift a {
      color: #a60004;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift a:hover {
      color: #730003;
    }

    Default Wert

    Bei Mixins mit Parametern können auch Defaultwerte mitgegeben werden, falls die Parameter leer sind.

    .Link(@color:#a60004) {
        a {
          color: @color;
          font-family: Georgia, serif;
          font-size: 20px;
    
          &:hover {
            color: darken(@color, 10%);
          }
        }
    }
    .ueberschrift {
        .Link();
    }
    .ueberschrift2 {
        .Link(#08a600);
    }

    generiert CSS:

    .ueberschrift a {
      color: #a60004;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift a:hover {
      color: #730003;
    }
    .ueberschrift2 a {
      color: #08a600;
      font-family: Georgia, serif;
      font-size: 20px;
    }
    .ueberschrift2 a:hover {
      color: #067300;
    }

    !Important

    Mit dem !important zusatz können alle Werte die vom Mixin übergeben werden auf !important gesetzt werden.

    .Link(@color:#a60004) {
        color: @color;
        font-family: Georgia, serif;
        font-size: 20px;
    }
    .ueberschrift {
        .Link() !important;
    }

    generiert CSS:

    .ueberschrift {
      color: #a60004 !important;
      font-family: Georgia, serif !important;
      font-size: 20px !important;
    }

    sinnvolles Beispiel für ein Mixin

    Bei diesem Beispiel werden für alle Browser der Borderradius gesetzt.

    .border-radius(@radius) {
      -webkit-border-radius: @radius;
         -moz-border-radius: @radius;
              border-radius: @radius;
    }
    div {
      .border-radius(5px);
    }

    generiert CSS:

    div {
      -webkit-border-radius: 5px;
      -moz-border-radius: 5px;
      border-radius: 5px;
    }

    Zur Tutorialübersicht: LESS Tutorial
    Zum Vorigen Teil: LESS Variablen

  • LESS Variablen

    LESS Variablen

    In LESS können Variablen erstellt werden, in diese man z.B. URL’s, Farbwerte oder Abstände speichern kann um eine höhere Wartbarkeit zu schaffen. Eine Variable fängt mit einem @ an, danach folgt der Name und ein Doppelpunkt, der Inhalt der Variable und ein Semikolon. Bei doppelten Namen wird der zuletzt verwendete Inhalt benutzt.

    Variable

    Variable definieren:

    @colorred: #dd0005;

    Variable verwenden:

    .redtext {
      a {
        color: @colorred;
      }
    }

    generierte folgendes CSS:

    .redtext a {
      color: #dd0005;
    }

    Variablennamen doppelt verwenden

    Es wird immer der zuletzt zugewiesene Werte in einer Verschachtelung verwendet.

    @colorred: #dd0004;
    .redtext {
      @colorred: #dd0005;
      a {
        @colorred: #dd0006;
        color: @colorred;
        @colorred: #dd0007;
        @colorred: #dd0008;
      }
      color: @colorred;
    }
    .redtext_pre{
      color: @colorred;
    }

    generierte folgendes CSS:

    .redtext {
      color: #dd0005;
    }
    .redtext a {
      color: #dd0008;
    }
    .redtext_pre {
      color: #dd0004;
    }

    Wirkungsbereich

    Wenn Variablen in einer Klasse definiert werden, sind diese auch nur dort gültig.

    .redtext {
      @colorred: #dd0005;
      color: @colorred;
    }
    .redtext_pre{
      color: @colorred;
    }

    Gibt folgenden Fehler in der Konsole aus:

    NameError: variable @colorred is undefined

    Es ist aber egal ob die Variable vor oder nach der Klasse definiert wird, da die Variablen erst compiliert werden und dann eingesetzt.

    .redtext {
      color: @colorred;
    }
    @colorred: #dd0005;

    generierte folgendes CSS:

    .redtext {
      color: #dd0005;
    }

    Klassennamen in Varibalen speichern

    Es ist möglich Klassennamen in Variablen zu speichern und zu verwenden.

    @colorred: #dd0005;
    @redtext-selector: redtext;
    
    .@{redtext-selector} {
      color: @colorred;
    }
    .@{redtext-selector}_pre {
      color: @colorred;
    }

    generierte folgendes CSS:

    .redtext {
      color: #dd0005;
    }
    .redtext_pre {
      color: #dd0005;
    }

    Variablen linken

    Variablen können verknüpft werden, dann erhalten beide Variablen dauerhaft den gleichen Wert.

    .redtext {
      color: @colorred2;
    }
    @colorred: #dd0005;
    @colorred2: @colorred;
    @colorred: #dd0006;

    generierte folgendes CSS:

    .redtext {
      color: #dd0006;
    }
    .redtext {
      color: @colorred2;
      @colorred: #dd0006;
    }
    @colorred: #dd0005;
    @colorred2: @colorred;

    generierte folgendes CSS:

    .redtext {
      color: #dd0006;
    }

    Variablen in Funktionen

    Wenn Variablen in Funktionen verwendet werden, wird wieder der zuletzt gespeicherte Wert verwendet.

    @colorred: red;
    @colorred_dark: darken(@colorred, 10%);
    .redtext {
      color: @colorred_dark;
    }
    @colorred: green;

    generierte folgendes CSS:

    .redtext {
      color: #004d00;
    }
    #004d00

    Zum nächsten Teil: LESS Mixins
    Zur Tutorialübersicht: LESS Tutorial
    Zum Vorigen Teil: LESS Dateien importieren

  • LESS Dateien importieren

    LESS Dateien importieren

    Mit dem Import Befehl können die LESS Dateien auf mehrere aufgeteilt werden und nach und nach geladen werden. In diesem Beispiel werde ich die Farbwerte in die variables.less speichern und die Klassen in die style.less.

    @import

    style.less

    @import "variables.less";
    .redtext {
      color: @colorred;
      a{
        color: @colorred;
      }
    }
    .greentext {
      color: @colorgreen;
      a{
        color: @colorgreen;
      }
    }

    variables.less

    @colorred: #dd0005;
    @colorgreen: #00dd00;

    generierte CSS

    .redtext {
      color: #dd0005;
    }
    .redtext a {
      color: #dd0005;
    }
    .greentext {
      color: #00dd00;
    }
    .greentext a {
      color: #00dd00;
    }

    (inline) Parameter

    Mit dem (inline) Parameter können CSS Dateien dazu geladen werden.

    style.less

    @import (inline) "global.css";
    @colorred: #dd0005;
    
    .redtext {
      color: @colorred;
    }

    global.css

    * {
      margin: 0;
      padding: 0;
    }

    generierte CSS

    * {
      margin: 0;
      padding: 0;
    }
    
    .redtext {
      color: #dd0005;
    }

    (multiple) Parameter

    Mit dem (multiple) Parameter können less dateien mehrfach geladen werden, um zum Beispiel andere LESS Dateien zu überschreiben.

    style.less

    @import (multiple) "link.less";
    @import (multiple) "link.less";

    link.less

    @colorred: #dd0005;
    
    .redtext {
      a {
        color: @colorred;
      }
    }

    generierte CSS

    .redtext a {
      color: #dd0005;
    }
    .redtext a {
      color: #dd0005;
    }

    (optional) Parameter

    Bei nicht vorhanden LESS Dateien wird der Kompiliervorgang abgebrochen, aber bei dem Parameter (optional) wird die Datei ignoriert und der Prozess läuft weiter.

    Zum nächsten Teil: LESS Variablen
    Zur Tutorialübersicht: LESS Tutorial
    Zum Vorigen Teil: LESS installieren und anwenden

  • LESS installieren und anwenden

    LESS installieren und anwenden

    LESS ist ein Präprozessor der CSS mit Variablen , Funktionen und Vererbung erweitert. Dadurch kann eine saubere und schnellere Entwicklung von CSS gewährleistet werden. Dieser Beitrag zeigt wie ihr LESS auf dem Computer installiert und LESS compiliert.

    Node.js installieren

    Node.js ist ein Javascript Server, mit dem lassen sich Javascripte im Backend ausführen. Einfach runterladen und installieren: Downloadseite.

    Git installieren

    Es ist ratsam noch die Git Konsole zu installieren. Git CLI Downloadseite.

    LESS Modul installieren

    Öffnet die Konsole, bei Windows einfach in das Suchfeld CMS eintippen und Enter drücken. Danach fügt ihr folgenden Befehl in die Konsole ein:

    npm install -g less

    LESS compilieren

    Zuerst erstellt ihr eine style.less Datei in eurem Projekt-Verzeichnis. In diese Datei schreibt ihr folgenden LESS Code:

    @colorred: #dd0005;
    @colorgreen: #00dd00;
    
    .redtext {
      color: @colorred;
      a{
        color: @colorred;
      }
    }
    
    .greentext {
      color: @colorgreen;
      a{
        color: @colorgreen;
      }
    }

    Mit dem less comman könnt ihr nun die LESS Datei in CSS compilieren.

    lessc style.less style.css

    Aus diesem Code wird dann folgende CSS generiert:

    .redtext {
      color: #dd0005;
    }
    .redtext a {
      color: #dd0005;
    }
    .greentext {
      color: #00dd00;
    }
    .greentext a {
      color: #00dd00;
    }

    LESS minify CSS Datei

    Um deine LESS Dateien minimiert (minify, minimize), also so klein wie nur möglich, auszugeben ist folgender Befehl zuständig:

    minify installieren

    npm install less-plugin-clean-css -g

    minify anwenden

    lessc -clean-css style.less style.css

    Jetzt wird deine CSS Datei, ohne Zeilenumbrüche und so wenig wie möglich an Leerzeichen, compiliert. Das hat den Vorteil, dass deine Seite später schneller lädt.

    Beispiel

    @colorred: #dd0005;
    @colorgreen: #00dd00;
    
    .redtext {
      color: @colorred;
      a{
        color: @colorred;
      }
    }
    
    .greentext {
      color: @colorgreen;
      a{
        color: @colorgreen;
      }
    }

    Der LESS Code wird zu folgenden minimierten CSS:

    .redtext{color:#dd0005}.redtext a{color:#dd0005}.greentext{color:#0d0}.greentext a{color:#0d0}

    Zum nächsten Teil: LESS Dateien importieren
    Zur Tutorialübersicht: LESS Tutorial