// set modes @each $skinName, $skinColor in ( ( 'green', $green ), ( 'blue', $blue ) ) { .button_color_#{ $skinName } { // set state «link» @include skinView($skinName, 'link', $skinColor); // call view } .button_color_#{ $skinName }:hover:not(.button_disabled) { // set state «hover» @include skinView($skinName, 'hover', $skinColor); // call view } .button_color_#{ $skinName }:active:not(.button_disabled) { // set state «active» @include skinView($skinName, 'active', $skinColor); // call view } }
// set views @mixin skinView($skin, $state, $color) { & { background-color: if( $state == 'link', $color, null ) if( $state == 'hover', lighten($color, 10%), null ) if( $state == 'active', darken($color, 10%), null ); } &:before { border-bottom-color: if( $state == 'link', darken($color, 10%), null ) if( $state == 'hover', $color, null ) if( $state == 'active', darken($color, 20%), null ); } .button__text { color: if( $state == 'link', #fff, null ) if( $state == 'hover', lighten($color, 45%), null ) if( $state == 'active', lighten($color, 40%), null ); } }
ol
, ul
and dl
. // set modes @mixin slimContent($mode) { // set states for desktop and tablet @include device(desktop, tablet) { @include screen_m-- { @include slimContent__view($mode, 'screenBig'); // call view } @include screen_--s { @include slimContent__view($mode, 'screenSmall'); // call view } } // set state for phone @include device(phone) { @include slimContent__view($mode, 'screenSmall'); // call view } }
// set views @mixin slimContent__view($mode, $screenSize) { @if $mode == 'wide' { @if $screenSize == 'screenBig' { @include slimContent__view-helper(padding, 0); // call view-helper } @if $screenSize == 'screenSmall' { @include slimContent__view-helper(padding, 0); // call view-helper } } @if $mode == 'tricky' { @if $screenSize == 'screenBig' { @include slimContent__view-helper(margin, auto); // call view-helper } @if $screenSize == 'screenSmall' { @include slimContent__view-helper(margin, 0); // call view-helper } } @if $mode == 'slim' { @if $screenSize == 'screenBig' { @include slimContent__view-helper(padding, auto); // call view-helper } @if $screenSize == 'screenSmall' { @include slimContent__view-helper(padding, $d); // call view-helper } } }
// view-helper @mixin slimContent__view-helper($property, $value) { @include device(desktop, tablet, phone) { @if $value == 'auto' { #{$property}-left: calc((100% - #{$contentWidth})*(1/3)); #{$property}-right: calc((100% - #{$contentWidth})*(2/3)); } @else { @if $value != 0 { #{$property}-left: $value; #{$property}-right: $value; } } } @include device(ie) { @if $value == 'auto' { #{$property}-left: 3*$d; #{$property}-right: 6*$d; } @else { @if $value != 0 { #{$property}-left: $value; #{$property}-right: $value; } } } }
.ui-snippet { @include slimContent(slim); @include ritm(1*$v); overflow-x: auto; } .ui-image { &.ui-image_wide { @include slimContent(wide); } &.ui-image_narrow { @include slimContent(tricky); } }
desktop
device type. On the way, I marked out the full code of the slimContent__view-helper
, targeting by device and checking for zero. .btn_color_blue { background-color: #1aa2e6; } .btn_color_blue:before { border-bottom-color: #1481b8; } .btn_color_blue .btn__text { color: #fff; } .btn_color_blue:hover:not(.btn_disabled) { background-color: #47b4eb; } .btn_color_blue:hover:not(.btn_disabled):before { border-bottom-color: #1aa2e6; } .btn_color_blue:hover:not(.btn_disabled) .btn__text { color: #e8f6fc; } .btn_color_blue:active:not(.btn_disabled) { background-color: #1481b8; } .btn_color_blue:active:not(.btn_disabled):before { border-bottom-color: #0f618a; } .btn_color_blue:active:not(.btn_disabled) .btn__text { color: #d1ecfa; }
@media screen and (min-width: 1240px) { pre.ui-code { padding-left: calc((100% - 640px)*(1/3)); padding-right: calc((100% - 640px)*(2/3)); } } @media screen and (max-width: 1239px) { pre.ui-code { padding-left: 24px; padding-right: 24px; } } // , span.ui-code @media screen and (min-width: 1240px) { .ui-img.ui-img_narrow { margin-left: calc((100% - 640px)*(1/3)); margin-right: calc((100% - 640px)*(2/3)); } }
Source: https://habr.com/ru/post/272921/
All Articles