Fiksējiet numuru līdz N cipariem CSS-triki

Anonim

Nodarbojoties ar skaitļiem JavaScript vai kādā citā programmēšanas valodā, ir veids, kā saīsināt skaitli pēc ncipariem. Diemžēl Sassā šādas funkcijas nav. Tomēr noapaļošanas un precizitātes problēmas rodas, piemēram, risinot procentos balstītas tīkla sistēmas.

Šeit ir Sass ieviešana 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; )

Ņemiet vērā, ka Sass noklusējuma precizitāte ir 5 cipari, un šodien to nav iespējams konfigurēt. Tāpēc Sass nevar aprēķināt skaitli, kas pārsniedz 5 ciparus, neatkarīgi no skaitļa, kas funkcijai piešķirts kā $digits.

Arī šai funkcijai ir nepieciešama powfunkcija, kas nav Sass dzimtā (vēl). Tas pastāv kompasā, taču, ja neizmantojat kompasu vai citu bibliotēku, kas to nodrošina, jums var būt nepieciešama sava powfunkcija. Par laimi, to ir diezgan viegli īstenot:

/// 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; )