_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 }