.punch(@punch-size: 100px, @punch-left: 0px, @punch-top: 0px, @punch-background: none, @punch-grid: false, @punch-z-index: 0) { @punch-sizeIn: @punch-size*0.86; @punch-shadowOffset: @punch-size/20; @punch-shadowSize: @punch-size/20; @punch-bgShadowOffset: @punch-size/10; @punch-bgShadowSize: @punch-size/5; left: @punch-left; top: @punch-top; box-shadow: inset 0px @punch-shadowOffset @punch-shadowSize rgba(0,0,0,0.5); z-index: @punch-z-index; .punch-shadow; .punch-white { box-shadow: inset 0px -@punch-shadowOffset @punch-shadowSize rgba(255,255,255,0.3); .punch-shadow; .punch-in { position: absolute; top: (@punch-size - @punch-sizeIn)/2; left: (@punch-size - @punch-sizeIn)/2; width: @punch-sizeIn; height: @punch-sizeIn; z-index: @punch-z-index + 1; border-radius: @punch-sizeIn/2; background: @punch-background; .punch-grid(@punch-grid); box-shadow: inset 0px @punch-bgShadowOffset @punch-bgShadowSize rgba(0,0,0,0.8); .punch-content { overflow: hidden; border-radius: @punch-sizeIn/2; max-height: @punch-sizeIn; max-width: @punch-sizeIn; } } } .punch-shadow { position: absolute; width: @punch-size; height: @punch-size; border-radius: @punch-size/2; } .punch-grid (@punch-grid) { background-position: 0 0; } /* You can fix the background to the top/left corner of your page */ /* This should create a cool effect if you have a grid of little punches (about 30px) */ .punch-grid (@punch-grid) when (@punch-grid = true) { background-position: -@punch-left -@punch-top; } }
@mixin punch($punch-size: 100px, $punch-left: 0px, $punch-top: 0px, $punch-background: none, $punch-grid: false, $punch-z-index: 0) { /* Stuff you may want to change */ $punch-sizeIn: $punch-size * 0.86; $punch-shadowOffset: $punch-size / 20; $punch-shadowSize: $punch-size / 20; $punch-bgShadowOffset: $punch-size / 10; $punch-bgShadowSize: $punch-size / 5; left: $punch-left; top: $punch-top; box-shadow: inset 0px $punch-shadowOffset $punch-shadowSize rgba(0,0,0,0.5); z-index: $punch-z-index; @include punch-shadow($punch-size); .punch-white { box-shadow: inset 0px (-$punch-shadowOffset) $punch-shadowSize rgba(255,255,255,0.3); @include punch-shadow($punch-size); .punch-in { position: absolute; top: ($punch-size - $punch-sizeIn) / 2; left: ($punch-size - $punch-sizeIn) / 2; width: $punch-sizeIn; height: $punch-sizeIn; z-index: $punch-z-index + 1; border-radius: $punch-sizeIn / 2; background: $punch-background; /* You can fix the background to the top/left corner of your page */ /* This should create a cool effect if you have a grid of little punches (about 30px) */ @if $punch-grid{ background-position: (-$punch-left) (-$punch-top); } @else{ background-position: 0 0; } box-shadow: inset 0px $punch-bgShadowOffset $punch-bgShadowSize rgba(0,0,0,0.8); .punch-content { overflow: hidden; border-radius: $punch-sizeIn / 2; max-height: $punch-sizeIn; max-width: $punch-sizeIn; } } } .punch-shadow { @include punch-shadow($punch-size); } } @mixin punch-shadow($punch-size){ position: absolute; width: $punch-size; height: $punch-size; border-radius: $punch-size / 2; }
.punch(@punch-size: 100px, @punch-left: 0px, @punch-top: 0px, @punch-background: none, @punch-grid: false, @punch-z-index: 0)
@mixin punch($punch-size: 100px, $punch-left: 0px, $punch-top: 0px, $punch-background: none, $punch-grid: false, $punch-z-index: 0)
@mixin methodName($arguments...)
@mixin($arguments...)
we have to go through @include methodName($arguments...)
while Less is easier .class(@arguments[])
/* file extension .less */ @import "punches"; /* */ body { background-image: url("foreground.jpg"); } #punch { /* punch */ .punch(300px, 30px, 50px, url("background.jpg"), true); }
/* .scss ( .sass */ @import "punches.scss"; body { background-image: url("foreground.jpg"); } #punch { @include punch(300px, 30px, 50px, url("images/background.jpg"), true); }
.punch(@punch-size: 100px){ /* .punch-shadow */ .punch-shadow; .punch-shadow { position: absolute; width: @punch-size; height: @punch-size; border-radius: @punch-size/2; } }
@mixin punch(){ @include punch-shadow($punch-size); } @mixin punch-shadow($punch-size){ position: absolute; width: $punch-size; height: $punch-size; border-radius: $punch-size / 2; }
background-position: -@punch-left -@punch-top;
background-position: (-$punch-left) (-$punch-top);
.punch-grid (@punch-grid) { background-position: 0 0; } .punch-grid (@punch-grid) when (@punch-grid = true) { background-position: -@punch-left -@punch-top; }
@if $punch-grid{ background-position: (-$punch-left) (-$punch-top); } @else{ background-position: 0 0; }
/* for-loop */ $authors: nick me you her; @each $author in $authors{ .author-#{$author}{ background: url(author-#{$author}.jpg); } // Sass backlass "//", .css. // for-loop @for $i from 1 through 3 { .item-#{$i} { top: $i * 30px; } } // while @while $v1 < 7{ .item-#{$v1}{ top: $v1 * 2; }
background: url(author-#{$author}.jpg);-#{$1} // .item-#{$v1}
~$ sass-convert punches.scss punches.sass
@mixin methodName($arguments...)
now just =methodName($arguments...)
@include methodName($arguments...)
now just +methodName($arguments...)
=punch($punch-size: 100px, $punch-left: 0px, $punch-top: 0px, $punch-background: none, $punch-grid: false, $punch-z-index: 0) /* Stuff you may want to change $punch-sizeIn: $punch-size * 0.86 $punch-shadowOffset: $punch-size / 20 $punch-shadowSize: $punch-size / 20 $punch-bgShadowOffset: $punch-size / 10 $punch-bgShadowSize: $punch-size / 5 left: $punch-left top: $punch-top box-shadow: inset 0px $punch-shadowOffset $punch-shadowSize rgba(0, 0, 0, 0.5) z-index: $punch-z-index +punch-shadow($punch-size) .punch-white box-shadow: inset 0px -$punch-shadowOffset $punch-shadowSize rgba(255, 255, 255, 0.3) +punch-shadow($punch-size) }
Source: https://habr.com/ru/post/164795/
All Articles