34
SASS für Einsteiger WordCamp Köln 2015 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 1

SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SASS für EinsteigerWordCamp Köln 2015

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 1

Page 2: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Wer bin ich?

• Bernhard Kau

• Wahlberliner

• PHP-Entwickler

• WordPress-Plugin Hobby-Entwickler

• CSS-Tüftler

• Organisator der WP Meetup Berlin

• Blogger auf kau-boys.de

• Twittere unter @2ndkauboy

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 2

Page 3: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Wofür steht SASS?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 3

SASS steht für „Syntactically Awesome Style Sheets“

Page 4: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Was ist SASS?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 4

SASS ist ein sogenannter CSS-Präprozessor

Page 5: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Und was bedeutet das genau?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 5

Vereinfacht gesagt: „Programmieren in CSS“

Page 6: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SASS (indented syntax) SCSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6

SASS hat zwei Syntaxen

navulmargin: 0padding: 0list-style: none

lidisplay: inline-block

adisplay: blockpadding: 6px 12pxtext-decoration: none

nav {ul {margin: 0;padding: 0;list-style: none;

}

li { display: inline-block; }

a {display: block;padding: 6px 12px;text-decoration: none;

}}

Page 7: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Wichtige SASS Funktionen

• Variablen

• Nesting (Verschachtelung)

• Partials (Aufteilung in mehrere Dateien)

• Import (Zusammenführen von Dateien)

• Mixins („Funktionen“ in CSS)

• Extend (Erweiterung/Vererbung)

• Operatoren

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 7

Page 8: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 8

Variablen

$font-stack: Helvetica, sans-serif;$primary-color: #333;

body {font: 100% $font-stack;color: $primary-color;

}

body {font: 100% Helvetica, sans-serif;color: #333;

}

Page 9: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 9

Nesting (Verschachtelung)

nav {ul {margin: 0;padding: 0;list-style: none;

}

li { display: inline-block; }

a {display: block;padding: 6px 12px;text-decoration: none;

}}

nav ul {

margin: 0;

padding: 0;

list-style: none;

}

nav li {

display: inline-block;

}

nav a {

display: block;

padding: 6px 12px;

text-decoration: none;

}

Page 10: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Partials (Aufteilung in mehrere Dateien)/*Theme Name: My ThemeTheme URI: http://example.com/my-themeAuthor: MeAuthor URI: http://example.com/Description: Just a random theme*/@import "_variables";@import "_normalize";@import "_navigation";

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 10

Page 11: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Import (Zusammenführen von Dateien)/*Theme Name: Twentyfifteen ChildTheme URI: http://example.com/my-themeAuthor: MeAuthor URI: http://example.com/Description: Just a random themeTemplate: twentyfifteen*/@import "../twentyfourteen/style.css";@import "_variables";@import "_child_theme_styles";

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 11

Page 12: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 12

Mixins („Funktionen“ in CSS)

@mixin border-radius($radius) {-webkit-border-radius: $radius;-moz-border-radius: $radius;-ms-border-radius: $radius;border-radius: $radius;

}

.box { @include border-radius(10px); }

.box {-webkit-border-radius: 10px;-moz-border-radius: 10px;-ms-border-radius: 10px;border-radius: 10px;

}

Page 13: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 13

Extend (Erweiterung/Vererbung)

.message {border: 1px solid #ccc;padding: 10px;color: #333;

}

.success {@extend .message;border-color: green;

}

.error {@extend .message;border-color: red;

}

.message, .success, .error {border: 1px solid #cccccc;padding: 10px;color: #333;

}

.success {border-color: green;

}

.error {border-color: red;

}

Page 14: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 14

Operatoren

.container { width: 100%; }

article[role="main"] {float: left;width: 600px / 960px * 100%;

}

aside[role="complimentary"] {float: right;width: 300px / 960px * 100%;

}

.container {width: 100%;

}

article[role="main"] {float: left;width: 62.5%;

}

aside[role="complimentary"] {float: right;width: 31.25%;

}

Page 15: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Erweiterungen

• Zu SASS gibt es einige Erweiterungen, die den Funktionsumfang erweitern.

• Eine sehr bekannte und weit verbreitete ist Compass

• Es erweitert SASS um nützliche Hilfsfunktionen und Mixins

• Besonders im Zusammenhang mit CSS3

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 15

Page 16: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

SCSS CSS

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 16

Compass Beispiele

@import "compass";

.button {@include border-radius(2px);@include box-shadow(0 0 10px #666);@include background(linear-gradient(to bottom, #ccc 0%,#eee 100%

));

}

.button {-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;-moz-box-shadow: 0 0 10px #666666;-webkit-box-shadow: 0 0 10px #666666;box-shadow: 0 0 10px #666666;background: url('data:image/svg+xml;base64,PD9…==');background: -webkit-gradient(

linear, 50% 0%, 50% 100%,color-stop(0%, #cccccc), color-stop(100%, #eee)

);background: -moz-linear-gradient(top, #ccc 0%, #eee 100%);background: -webkit-linear-gradient(top, #ccc 0%, #eee 100%);background: linear-gradient(to bottom, #ccc 0%, #eee 100%);

}

Page 17: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Welcher Browser unterstützt SASS?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 17

KEINER

Page 18: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Und wie funktioniert das dann?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 18

SASS wird kompiliert

Page 19: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Womit wird SASS kompiliert?

• SASS/Compass (Ruby gem)

• libsass (C/C++ Bibliothek, implementiert in viele anderen Sprachen)

• grunt-sass (libsass)/grunt-contrib-sass (ruby)

• grunt-compass (veraltet)/grunt-contrib-compass (ruby)

• gulp-sass (libsass)/gulp-ruby-sass (ruby)

• gulp-compass (ruby)

• CodeKit (Mac, kommerziell)

• Compass.app (Mac, kommerziell)

• http://sassmeister.com/ (Online-Kompiler mit vielen Erweiterungen)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 19

Page 20: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Alternativen

• CSS-Präprozessoren:• LESS

• Stylus

• Myth

• CSS-Postprozessor• Autoprefixer

• Pleeease (node.js)

• CSS3/CSS4

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 20

Page 21: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Kommentare)

Vorsicht mit Kommentaren!

• SASS hat zwei Arten von Kommentaren• einzeilige (gibt es in klassischem CSS nicht)

• mehrzeilige

• einzeilige Kommentare werden beim Kompilieren entfernt

• mehrzeilige Kommentare bleiben unkompiliert erhalten

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 21

Page 22: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Kommentare)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 22

SCSS CSS

$main-font-color: black;$main-background-color: white;

body {color: $main-font-color;

}

.content {// color: $main-font-color;/*background-color: $main-background-color;margin: 0;*/margin: 0 auto;

}

body {color: black;

}

.content {/*background-color: $main-background-color;margin: 0;*/margin: 0 auto;

}

Page 23: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Verschachtelung)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 23

HTML SCSS

<div class="main-nav"><ul class="nav-list">

<li class="nav-node"><a class="nav-link" href="#"></a>

</li><li class="nav-node">

<a class="nav-link" href="#"></a></li><li class="nav-node">

<a class="nav-link" href="#"></a></li>

</ul></div>

.main-nav {.nav-list {padding-left: 0;.nav-node {

display: inline-block;.nav-link {color: black;

}}}

}

Page 24: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Verschachtelung)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 24

SCSS (schlecht!) CSS

.main-nav {.nav-list {padding-left: 0;.nav-node {

display: inline-block;.nav-link {color: black;

}}}

}

.main-nav .nav-list {padding-left: 0;

}.main-nav .nav-list .nav-node {

display: inline-block;}.main-nav .nav-list .nav-node .nav-link {

color: black;}

Page 25: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Verschachtelung)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 25

SCSS (besser!) CSS

.main-nav {.nav-list {

padding-left: 0;}.nav-node {

display: inline-block;}.nav-link {

color: black;}

}

.main-nav .nav-list {padding-left: 0;

}.main-nav .nav-node {

display: inline-block;}.main-nav .nav-link {

color: black;}

Page 26: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Der Eltern-Selektor „&“)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 26

SCSS CSS

/* falsch */.nav-link {

color: black;.active { color: navy; }:hover { color: gray; }

}/* richtig */.nav-link {

color: black;&.active { color: navy; }&:hover { color: gray; }

}

/* falsch */.nav-link { color: black; }.nav-link .active { color: navy; }.nav-link :hover { color: gray; }

/* richtig */.nav-link { color: black; }.nav-link.active { color: navy; }.nav-link:hover { color: gray; }

Page 27: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Der Eltern-Selektor „&“)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 27

SCSS (nicht sehr verständlich) CSS

.social-link {border: 0;&-facebook {background-image: url(facebook.png);}&-twitter {background-image: url(twitter.png);}

}

.social-link {border: 0;

}.social-link-facebook {

background-image: url(facebook.png);}.social-link-twitter {

background-image: url(twitter.png);}

Page 28: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (Der Eltern-Selektor „&“)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 28

SCSS (redundate Verschachtelung) SCSS (optimiert)

.message {span {

a {border-color: gray;

}}

}body.error .message {

span {a {

border-color: red;}

}}

.message {span {

a {border-color: gray;body.error & {

border-color: red;}}

}}

Page 29: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (nützliche Mixins)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 29

Inhalt je nach Pixeldichte (Retina)

@mixin pixel-ratio($ratio){@media (-webkit-min-device-pixel-ratio: $ratio), /* Webkit browsers */

(min--moz-device-pixel-ratio: $ratio), /* old Firefox (prior to FF 16) */(min-resolution: #{$ratio}dppx), /* the standard using dppx */(min-resolution: #{$ratio * 96}dpi){ /* fallback using dpi */

@content;}

}

Page 30: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (nützliche Mixins)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 30

Unterschiedliche Hintergrundbilder je nach Pixeldichte

@mixin background-image-hidpi($normalImage, $hdpiImage, $ratio){// normal imagebackground-image: url('#{$normalImage}');// high dpi image@include pixel-ratio($ratio){

background-image: url('#{$hdpiImage}');}

}

Page 31: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (nützliche Mixins)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 31

Mobile First im IE<9@mixin respond-to-ie($size){

@if $old-ie {@content;

} @else {@media all and (min-width: $size) {

@content;}

}}

$old-ie: false !default;@import "respond-to-ie";

@include respond-to-ie($breakMedium){body {

margin: 0;}

}

$old-ie: true;@import styles.scss

style.scss

old_ie.scss<!--[if lte IE 8]><link rel="stylesheet" href="old_ie.css" media="all" /><![endif]--><!--[if gt IE 8]><!--><link rel="stylesheet" href="styles.css" media="all" /><!--<![endif]-->

Page 32: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Praxistipps (alterntive Stylesheets)

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 32

<link rel="stylesheet" title="(current)" href="topnav_current.css" /><link rel="stylesheet alternate" title="red" href="topnav_red.css" /><link rel="stylesheet alternate" title="blue" href="topnav_blue.css" /><link rel="stylesheet alternate" title="green" href="topnav_green.css" />

// overwrite navigation Colors$topnavBackgroundColor: transparent;$topnavColor: $colorWhite;$topnavHoverBackgroundColor: $colorWhite;$topnavHoverColor: $colorWhite;$topnavActiveBackgroundColor: #3F80E9;$topnavActiveColor: $colorWhite;$subnavBackgroundColor: #3F80E9;$subnavColor: $colorWhite;$subnavDividerColor: $colorWhite;

@import "topnav_medium";

Page 33: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Quellen/Weiterführende Links

• http://sass-lang.com/

• http://compass-style.org

• http://sass-compatibility.github.io/

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 33

Page 34: SASS für Einsteiger...SASS (indented syntax) SCSS 06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 6 SASS hat zwei Syntaxen nav ul margin: 0 padding: 0 list-style: none li display:

Fragen?

06.06.2015 Bernhard Kau | @2ndkauboy | kau-boys.de 34

Vielen Dank und viel Spaß mit SASS!