Parandage arv N-numbriks - CSS-trikid

Anonim

JavaScripti või mõnes muus programmeerimiskeeles olevate numbritega tegelemisel on võimalus numbrit pärast nnumbreid kärpida . Kahjuks Sassis sellist funktsiooni pole. Sellegipoolest juhtub ümardamise ja täpsuse probleeme näiteks protsendipõhiste võrgusüsteemide käsitlemisel.

Siin on Sassi rakendus toFixed():

/// toFixed() function in Sass /// @author Hugo Giraudel /// @param (Number) $float - Number to format /// @param (Number) $digits (2) - Number of digits to leave /// @return (Number) @function to-fixed($float, $digits: 2) ( $sass-precision: 5; @if $digits > $sass-precision ( @warn "Sass sets default precision to #($sass-precision) digits, and there is no way to change that for now." + "The returned number will have #($sass-precision) digits, even if you asked for `#($digits)`." + "See https://github.com/sass/sass/issues/1122 for further informations."; ) $pow: pow(10, $digits); @return round($float * $pow) / $pow; )

Pange tähele, et Sassi vaiketäpsus on 5 numbrit ja tänasest pole seda võimalik konfigureerida. Seetõttu ei ole Sassil võimalik arvutada rohkem kui 5-kohalist numbrit, olenemata funktsioonile määratud numbrist $digits.

Samuti nõuab see funktsioon powfunktsiooni, mis pole Sassiga veel omakeelne. See on olemas kompassis, kuid kui te ei kasuta kompassi ega mõnda muud seda pakkuvat teeki, võib teil olla vaja oma powfunktsiooni. Õnneks on seda üsna lihtne rakendada:

/// Power function /// @param (Number) $x /// @param (Number) $n /// @return (Number) @function pow($x, $n) ( $ret: 1; @if $n >= 0 ( @for $i from 1 through $n ( $ret: $ret * $x; ) ) @else ( @for $i from $n to 0 ( $ret: $ret / $x; ) ) @return $ret; )