Sass – mixin
mixins – re-używalny kawałek kodu, aby nie powtarzać kodu – w myśl zasady Dont Repeat Yourself
sass:
@mixin warning { background-color: orange; color: #fff; &:hover { background-color: lighten(orange, 10%); } } .warning-button { @include warning; padding: 8px 12px; }
css:
.warning-button { background-color: orange; color: #fff; padding: 8px 12px; } .warning-button:hover { background-color:#ffb733; }
parę przydatnych mixinów SASS:
sass:
/* CSS3 calc() function to perform calculations */ @mixin calc($property, $expression) { #{$property}: -webkit-calc(#{$expression}); #{$property}: -moz-calc(#{$expression}); #{$property}: calc(#{$expression}); }
sass:
@include calc( width, '100% - 96px')
css:
width: -webkit-calc(100% - 96px); width: -moz-calc(100% - 96px); width: calc(100% - 96px);
–
sass:
@mixin transform( $t... ) { -webkit-transform: $t; /* Safari */ -moz-transform: $t; -ms-transform: $t; /* IE 9 */ -o-transform: $t; transform: $t; } @mixin transition( $t... ) { -webkit-transition: $t; -moz-transition: $t; -ms-transition: $t; transition: $t; } @mixin transition-delay( $t ) { -webkit-transition-delay: $t; -moz-transition-delay: $t; -ms-transition-delay: $t; transition-delay: $t; }
sass:
@include transform(scale(0) rotate(-180deg)); @include transition( all 0.3s ease-in-out ); @include transition-delay(0.5s);
css:
-webkit-transform: scale(0) rotate(-180deg);/* Safari */ -moz-transform: scale(0) rotate(-180deg); -ms-transform: scale(0) rotate(-180deg);/* IE 9 */ -o-transform: scale(0) rotate(-180deg); transform: scale(0) rotate(-180deg); -webkit-transition: all 0.3s ease-in-out; -moz-transition: all 0.3s ease-in-out; -ms-transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out; -webkit-transition-delay: 0.5s; -moz-transition-delay: 0.5s; -ms-transition-delay: 0.5s; transition-delay: 0.5s;
–
sass:
@mixin vertical-align($position: relative) { position: $position; top: 50%; -webkit-transform: perspective(1px) translateY(-50%); -ms-transform: perspective(1px) translateY(-50%); transform: perspective(1px) translateY(-50%); }
sass:
@include vertical-align();
css:
position: relative; top: 50%; -webkit-transform: perspective(1px) translateY(-50%); -ms-transform: perspective(1px) translateY(-50%); transform: perspective(1px) translateY(-50%);
variable argument – vararg – arglist – typ danych Sass oznaczany …
nie limitowana ilość argumentów
sass:
@mixin linear-gradient($direction, $gradients...) background-color: nth($gradients, 1) background-image: linear-gradient($direction, $gradients)
sass:
@include linear-gradient(to right, red, orange, yellow, green, blue, purple, magenta)
css:
.mainHeader { background-color:red; background-image:linear-gradient(to right, red,orange,yellow,green,blue,purple,magenta); }
content directive – pozwala na wprowadzenie bloku kontentu
sass:
@mixin apply-to-ie-6 * html @content </pre> <pre>@include apply-to-ie-6 body font-size: 125%
css:
* html body { font-size:125% }
–
sass import is like normal css imprt
@import url()
@import "http://"
@import "filename.css"
@import "style-screen" screen;
sass only import – sass i scss file
@import "partials/mixins"
without _ before name and .sass@import "partials/variables", "partials/mixins"
// unquote the string, that we get to make sure it’s in the correct format to use in
// variable które jest wartością #{$font} interpolation syntax
@mixin google-font ($font) $font: unquote($font) @import url(https://fonts.googleapis.com/css?family=#{$font}) @include google-font("Alegreya+Sans") @include google-font("Titllium+Web")
–
Hope this helps and happy coding :)
Zobacz jeszcze
Rejestracja custom post
dodanie custom post type w pliku function.php a najlepiej w osobnym pliku custom-posts.php który podpinamy do function.php poprzez: include_once...