partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

_inner-border.scss (3609B)


      1 @function inner-border-spread($width) {
      2     $top: top($width);
      3     $right: right($width);
      4     $bottom: bottom($width);
      5     $left: left($width);
      6     
      7     @return min(($top + $bottom) / 2, ($left + $right) / 2);
      8 }
      9 
     10 @function inner-border-hoff($width, $spread) {
     11     $left: left($width); 
     12     $right: right($width);
     13 
     14     @if $right <= 0 {
     15         @return $left - $spread;
     16     }
     17     @else {
     18         @return $spread - $right;
     19     }
     20 }
     21 
     22 @function inner-border-voff($width, $spread) {
     23     $top: top($width);
     24     $bottom: bottom($width);
     25 
     26     @if $bottom <= 0 {
     27         @return $top - $spread;
     28     }
     29     @else {
     30         @return $spread - $bottom;
     31     }
     32 }
     33 
     34 @function even($number) {
     35     @return ceil($number / 2) == ($number / 2);
     36 }
     37 
     38 @function odd($number) {
     39     @return ceil($number / 2) != ($number / 2);
     40 }
     41 
     42 @function inner-border-usesingle-width($width) {
     43     $top: top($width);
     44     $right: right($width);
     45     $bottom: bottom($width);
     46     $left: left($width);
     47         
     48     @if $top == 0 {
     49         @if $left + $right == 0 {
     50             @return true;
     51         }
     52         @if $bottom >= $left + $right {
     53             @return true;
     54         }
     55     }
     56     
     57     @if $bottom == 0 {
     58         @if $left + $right == 0 {
     59             @return true;
     60         }
     61         @if $top >= $left + $right {
     62             @return true;
     63         }
     64     }
     65     
     66     @if $left == 0 {
     67         @if $top + $bottom == 0 {
     68             @return true;
     69         }
     70         @if $right >= $top + $bottom {
     71             @return true;
     72         }
     73     }
     74     
     75     @if $right == 0 {
     76         @if $top + $bottom == 0 {
     77             @return true;
     78         }
     79         @if $left >= $top + $bottom {
     80             @return true;
     81         }
     82     }
     83     
     84     @if $top + $bottom == $left + $right and even($top) == even($bottom) and even($left) == even($right) {
     85         @return true;
     86     }
     87     
     88     @return false;
     89 }
     90 
     91 @function inner-border-usesingle-color($color) {
     92     $top: top($color);
     93     $right: right($color);
     94     $bottom: bottom($color);
     95     $left: left($color);
     96     
     97     @if $top == $right == $bottom == $left {
     98         @return true;
     99     }
    100     
    101     @return false;
    102 }
    103 
    104 @function inner-border-usesingle($width, $color) {
    105     @if inner-border-usesingle-color($color) and inner-border-usesingle-width($width) {
    106         @return true;
    107     }
    108     @return false;
    109 }
    110 
    111 @mixin inner-border($width: 1px, $color: #fff, $blur: 0px) {
    112     @if inner-border-usesingle($width, $color) {
    113         $spread: inner-border-spread($width);
    114         $hoff: inner-border-hoff($width, $spread);
    115         $voff: inner-border-voff($width, $spread);
    116         @include single-box-shadow($color-top, $hoff, $voff, $blur, $spread, true);
    117     }
    118     @else {
    119         $width-top: top($width);
    120         $width-right: right($width);
    121         $width-bottom: bottom($width);
    122         $width-left: left($width);
    123 
    124         $color-top: top($color);
    125         $color-right: right($color);
    126         $color-bottom: bottom($color);
    127         $color-left: left($color);
    128         
    129         $shadow-top: false;
    130         $shadow-right: false;
    131         $shadow-bottom: false;
    132         $shadow-left: false;
    133         
    134         @if $width-top > 0 {
    135             $shadow-top: $color-top 0 $width-top $blur 0 inset;
    136         }
    137         @if $width-right > 0 {
    138             $shadow-right: $color-right (-1 * $width-right) 0 $blur 0 inset;
    139         }
    140         @if $width-bottom > 0 {
    141             $shadow-bottom: $color-bottom 0 (-1 * $width-bottom) $blur 0 inset;
    142         }
    143         @if $width-left > 0 {
    144             $shadow-left: $color-left $width-left 0 $blur 0 inset;
    145         }
    146 
    147         @include box-shadow($shadow-top, $shadow-bottom, $shadow-right, $shadow-left);
    148     }
    149 }